reset upstream subtrees to yocto 2.6

Reset the following subtrees on thud HEAD:

  poky: 87e3a9739d
  meta-openembedded: 6094ae18c8
  meta-security: 31dc4e7532
  meta-raspberrypi: a48743dc36
  meta-xilinx: c42016e2e6

Also re-apply backports that didn't make it into thud:
  poky:
    17726d0 systemd-systemctl-native: handle Install wildcards

  meta-openembedded:
    4321a5d libtinyxml2: update to 7.0.1
    042f0a3 libcereal: Add native and nativesdk classes
    e23284f libcereal: Allow empty package
    030e8d4 rsyslog: curl-less build with fmhttp PACKAGECONFIG
    179a1b9 gtest: update to 1.8.1

Squashed OpenBMC subtree compatibility updates:
  meta-aspeed:
    Brad Bishop (1):
          aspeed: add yocto 2.6 compatibility

  meta-ibm:
    Brad Bishop (1):
          ibm: prepare for yocto 2.6

  meta-ingrasys:
    Brad Bishop (1):
          ingrasys: set layer compatibility to yocto 2.6

  meta-openpower:
    Brad Bishop (1):
          openpower: set layer compatibility to yocto 2.6

  meta-phosphor:
    Brad Bishop (3):
          phosphor: set layer compatibility to thud
          phosphor: libgpg-error: drop patches
          phosphor: react to fitimage artifact rename

    Ed Tanous (4):
          Dropbear: upgrade options for latest upgrade
          yocto2.6: update openssl options
          busybox: remove upstream watchdog patch
          systemd: Rebase CONFIG_CGROUP_BPF patch

Change-Id: I7b1fe71cca880d0372a82d94b5fd785323e3a9e7
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-openembedded/meta-oe/README b/meta-openembedded/meta-oe/README
index 7cde0a2..de351f2 100644
--- a/meta-openembedded/meta-oe/README
+++ b/meta-openembedded/meta-oe/README
@@ -1,14 +1,22 @@
+meta-oe
+=======
+
 This layer depends on:
 
-URI: git://github.com/openembedded/oe-core.git
-branch: master
+URI: git://github.com/openembedded/openembedded-core.git
+branch: thud 
 revision: HEAD
 
-Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe]' in the subject'
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe][thud]' 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][PATCH'
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-oe[thud][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.
+You are encouraged to fork the mirror on GitHub https://github.com/openembedded/openembedded-core
+to share your patches, this is preferred for patch sets consisting of more than one patch.
 
-Main layer maintainer: Armin Kuster <akuster808@gmail.com>
+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.
+
+Thud maintainer: Armin Kuster <akuster808@gmail.com>
diff --git a/meta-openembedded/meta-oe/classes/dos2unix.bbclass b/meta-openembedded/meta-oe/classes/dos2unix.bbclass
deleted file mode 100644
index 1bad998..0000000
--- a/meta-openembedded/meta-oe/classes/dos2unix.bbclass
+++ /dev/null
@@ -1,14 +0,0 @@
-# Class for use to convert all CRLF line terminators to LF
-# provided that some projects are being developed/maintained
-# on Windows so they have different line terminators(CRLF) vs
-# on Linux(LF), which can cause annoying patching errors during
-# git push/checkout processes.
-
-do_convert_crlf_to_lf[depends] += "dos2unix-native:do_populate_sysroot"
-
-# Convert CRLF line terminators to LF
-do_convert_crlf_to_lf () {
-    find ${S} -type f -exec dos2unix {} \;
-}
-
-addtask convert_crlf_to_lf after do_unpack before do_patch
diff --git a/meta-openembedded/meta-oe/classes/scancode.bbclass b/meta-openembedded/meta-oe/classes/scancode.bbclass
new file mode 100644
index 0000000..701660f
--- /dev/null
+++ b/meta-openembedded/meta-oe/classes/scancode.bbclass
@@ -0,0 +1,35 @@
+# We use scancode utlity for extacting licence information.
+# scancode itself is an OSS Utlitity.
+# For more informaiton https://github.com/nexB/scancode-toolkit
+
+SCANCODE_FORMAT ?= "html-app"
+EXT = "${@'html' if d.getVar('SCANCODE_FORMAT', True) == 'html-app' else 'json'}"
+SCANCODE_TOOLKIT = "${@get_scancode_toolkit(d)}"
+SCANCODE_TAG = "v2.2.1"
+SCANCODE_GIT_LOCATION ?= "https://github.com/nexB/scancode-toolkit.git"
+SCANCODE_SRC_LOCATION ?= "${DL_DIR}/scancode"
+
+def get_scancode_toolkit(d):
+    lf = bb.utils.lockfile(d.getVar('SCANCODE_SRC_LOCATION', True) + ".lock")
+    if (not os.path.exists(d.getVar('SCANCODE_SRC_LOCATION', True))):
+        os.system("git clone %s %s -b %s" % (d.getVar('SCANCODE_GIT_LOCATION', True), d.getVar('SCANCODE_SRC_LOCATION', True), d.getVar('SCANCODE_TAG', True)))
+    bb.utils.unlockfile(lf)
+    return (d.getVar('SCANCODE_SRC_LOCATION', True))
+
+do_scancode() {
+	mkdir -p ${DEPLOY_DIR_IMAGE}/scancode
+	cd ${SCANCODE_TOOLKIT}
+	if [ -d "${S}" ]; then
+		./scancode ${S} --format  ${SCANCODE_FORMAT} ${DEPLOY_DIR_IMAGE}/scancode/${PN}.${EXT}
+	fi
+}
+
+addtask scancode after do_patch
+
+do_scancode_oss() {
+    echo "We are done running scancode"
+}
+
+do_scancode_oss[recrdeptask] = "do_scancode_oss do_scancode"
+do_scancode_oss[nostamp] = "1"
+addtask do_scancode_oss after do_scancode
diff --git a/meta-openembedded/meta-oe/conf/layer.conf b/meta-openembedded/meta-oe/conf/layer.conf
index 1a43575..23c10ce 100644
--- a/meta-openembedded/meta-oe/conf/layer.conf
+++ b/meta-openembedded/meta-oe/conf/layer.conf
@@ -29,7 +29,7 @@
 
 LAYERDEPENDS_openembedded-layer = "core"
 
-LAYERSERIES_COMPAT_openembedded-layer = "sumo"
+LAYERSERIES_COMPAT_openembedded-layer = "thud"
 
 LICENSE_PATH += "${LAYERDIR}/licenses"
 
@@ -77,3 +77,5 @@
   source-han-sans-kr-fonts->fontconfig \
   source-han-sans-tw-fonts->fontconfig \
 "
+
+DEFAULT_TEST_SUITES_pn-meta-oe-ptest-image = " ${PTESTTESTSUITE}"
diff --git a/meta-openembedded/meta-oe/lib/oeqa/selftest/cases/meta_oe_sources.py b/meta-openembedded/meta-oe/lib/oeqa/selftest/cases/meta_oe_sources.py
new file mode 100644
index 0000000..b17c795
--- /dev/null
+++ b/meta-openembedded/meta-oe/lib/oeqa/selftest/cases/meta_oe_sources.py
@@ -0,0 +1,30 @@
+import os
+import re
+import glob as g
+import shutil
+import tempfile
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars
+
+class MetaOESourceMirroring(OESelftestTestCase):
+    # Can we download everything from the OpenEmbedded Sources Mirror over http only
+    def test_oe_source_mirror(self):
+        self.write_config("""
+BB_ALLOWED_NETWORKS = " sources.openembedded.org"
+MIRRORS = ""
+DL_DIR = "${TMPDIR}/test_oe_downloads"
+PREMIRRORS = "\\
+    bzr://.*/.*   http://sources.openembedded.org/ \\n \\
+    cvs://.*/.*   http://sources.openembedded.org/ \\n \\
+    git://.*/.*   http://sources.openembedded.org/ \\n \\
+    gitsm://.*/.* http://sources.openembedded.org/ \\n \\
+    hg://.*/.*    http://sources.openembedded.org/ \\n \\
+    osc://.*/.*   http://sources.openembedded.org/ \\n \\
+    p4://.*/.*    http://sources.openembedded.org/ \\n \\
+    svn://.*/.*   http://sources.openembedded.org/ \\n \\
+    ftp://.*/.*      http://sources.openembedded.org/ \\n \\
+    http://.*/.*     http://sources.openembedded.org/ \\n \\
+    https://.*/.*    http://sources.openembedded.org/ \\n"
+    """)
+
+        bitbake("world --runall fetch")
diff --git a/meta-openembedded/meta-oe/licenses/Khronos b/meta-openembedded/meta-oe/licenses/Khronos
new file mode 100644
index 0000000..7afedf6
--- /dev/null
+++ b/meta-openembedded/meta-oe/licenses/Khronos
@@ -0,0 +1,35 @@
+Copyright (c) 2016 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software source and associated documentation files (the "Materials"),
+to deal in the Materials without restriction, including without limitation
+the rights to use, copy, modify, compile, merge, publish, distribute,
+sublicense, and/or sell copies of the Materials, and to permit persons to
+whom the Materials are furnished to do so, subject the following terms and
+conditions:
+
+All modifications to the Materials used to create a binary that is
+distributed to third parties shall be provided to Khronos with an
+unrestricted license to use for the purposes of implementing bug fixes and
+enhancements to the Materials;
+
+If the binary is used as part of an OpenCL(TM) implementation, whether binary
+is distributed together with or separately to that implementation, then
+recipient must become an OpenCL Adopter and follow the published OpenCL
+conformance process for that implementation, details at:
+http://www.khronos.org/conformance/;
+
+The above copyright notice, the OpenCL trademark license, and this permission
+notice shall be included in all copies or substantial portions of the
+Materials.
+
+THE MATERIALS 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. 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 MATERIALS OR THE USE OR OTHER DEALINGS IN
+THE MATERIALS.
+
+OpenCL is a trademark of Apple Inc. used under license by Khronos.
+
diff --git a/meta-openembedded/meta-oe/licenses/Mini-XML-License b/meta-openembedded/meta-oe/licenses/Mini-XML-License
new file mode 100644
index 0000000..4d0aa78
--- /dev/null
+++ b/meta-openembedded/meta-oe/licenses/Mini-XML-License
@@ -0,0 +1,507 @@
+			   Mini-XML License
+			  September 18, 2010
+
+
+The Mini-XML library and included programs are provided under the
+terms of the GNU Library General Public License version 2 (LGPL2)
+with the following exceptions:
+
+  1. Static linking of applications to the Mini-XML library
+does not constitute a derivative work and does not require
+the author to provide source code for the application, use
+the shared Mini-XML libraries, or link their applications
+against a user-supplied version of Mini-XML.
+
+If you link the application to a modified version of
+Mini-XML, then the changes to Mini-XML must be provided
+under the terms of the LGPL2 in sections 1, 2, and 4.
+
+  2. You do not have to provide a copy of the Mini-XML license
+with programs that are linked to the Mini-XML library, nor
+do you have to identify the Mini-XML license in your
+program or documentation as required by section 6 of the
+LGPL2.
+
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+			 Version 2, June 1991
+
+	  Copyright (C) 1991 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 library GPL.  It is
+   numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			       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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+
+     Appendix: 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 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., 675 Mass Ave, Cambridge, MA 02139, 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/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.03e.bb b/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.04.bb
similarity index 72%
rename from meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.03e.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.04.bb
index 2c1217e..d7583f0 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.03e.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/bonnie/bonnie++_1.04.bb
@@ -4,11 +4,10 @@
 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 = "http://www.coker.com.au/bonnie++/${BPN}_${PV}.tgz \
 "
-SRC_URI[md5sum] = "750aa5b5051263a99c6c195888c74968"
-SRC_URI[sha256sum] = "cb3866116634bf65760b6806be4afa7e24a1cad6f145c876df8721f01ba2e2cb"
+SRC_URI[md5sum] = "1414aab86e2db1b4691bd4be82031012"
+SRC_URI[sha256sum] = "507bd2ce5360c7c98b91b0fdc2bed5c9320b5c9699f7d4a3d1c86b256896c15e"
 
 inherit autotools-brokensep
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/bonnie/files/gcc-4.3-fixes.patch b/meta-openembedded/meta-oe/recipes-benchmark/bonnie/files/gcc-4.3-fixes.patch
deleted file mode 100644
index 67f1b74..0000000
--- a/meta-openembedded/meta-oe/recipes-benchmark/bonnie/files/gcc-4.3-fixes.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb b/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb
index 1915e4c..fb6a96e 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/dbench/dbench_4.0.bb
@@ -14,12 +14,13 @@
 
 inherit autotools
 
-PACKAGES =+ "tbench tbench-dbg"
+PACKAGES =+ "tbench"
+
+RPROVIDES_${PN}-dbg += "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/meta-openembedded/meta-oe/recipes-benchmark/fio/files/0001-update-the-interpreter-paths.patch b/meta-openembedded/meta-oe/recipes-benchmark/fio/files/0001-update-the-interpreter-paths.patch
new file mode 100644
index 0000000..327b9f5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/fio/files/0001-update-the-interpreter-paths.patch
@@ -0,0 +1,94 @@
+From 55078e494bdf7da7dd9cb76077fa7ac2a66b6dd6 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 20 Jul 2018 02:33:25 -0700
+Subject: [PATCH] update the interpreter paths
+
+Update the interpreter path to make it more
+compatible
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ tools/fio_jsonplus_clat2csv     | 2 +-
+ tools/fiologparser.py           | 2 +-
+ tools/genfio                    | 2 +-
+ tools/hist/fiologparser_hist.py | 2 +-
+ tools/hist/half-bins.py         | 2 +-
+ tools/plot/fio2gnuplot          | 2 +-
+ t/steadystate_tests.py | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/tools/fio_jsonplus_clat2csv b/tools/fio_jsonplus_clat2csv
+index 78a007e5..0524b6e6 100755
+--- a/tools/fio_jsonplus_clat2csv
++++ b/tools/fio_jsonplus_clat2csv
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python2.7
++#!/usr/bin/env python
+ # Note: this script is python2 and python3 compatible.
+ #
+ # fio_jsonplus_clat2csv
+diff --git a/tools/fiologparser.py b/tools/fiologparser.py
+index cc29f1c7..ea60e783 100755
+--- a/tools/fiologparser.py
++++ b/tools/fiologparser.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python2.7
++#!/usr/bin/env python
+ # Note: this script is python2 and python 3 compatible.
+ #
+ # fiologparser.py
+diff --git a/tools/genfio b/tools/genfio
+index 286d814d..8518bbcc 100755
+--- a/tools/genfio
++++ b/tools/genfio
+@@ -1,4 +1,4 @@
+-#!/usr/bin/bash
++#!/bin/bash
+ #
+ #  Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
+ #  Author: Erwan Velu  <erwan@enovance.com>
+diff --git a/tools/hist/fiologparser_hist.py b/tools/hist/fiologparser_hist.py
+index 8910d5fa..b77c2933 100755
+--- a/tools/hist/fiologparser_hist.py
++++ b/tools/hist/fiologparser_hist.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python2.7
++#!/usr/bin/env python
+ """ 
+     Utility for converting *_clat_hist* files generated by fio into latency statistics.
+     
+diff --git a/tools/hist/half-bins.py b/tools/hist/half-bins.py
+index 1bba8ff7..58d53e36 100755
+--- a/tools/hist/half-bins.py
++++ b/tools/hist/half-bins.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python2.7
++#!/usr/bin/env python
+ """ Cut the number bins in half in fio histogram output. Example usage:
+ 
+         $ half-bins.py -c 2 output_clat_hist.1.log > smaller_clat_hist.1.log
+diff --git a/tools/plot/fio2gnuplot b/tools/plot/fio2gnuplot
+index 4d1815cf..509141af 100755
+--- a/tools/plot/fio2gnuplot
++++ b/tools/plot/fio2gnuplot
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python2.7
++#!/usr/bin/env python
+ # Note: this script is python2 and python3 compatible.
+ #
+ #  Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
+diff --git a/t/steadystate_tests.py b/t/steadystate_tests.py
+index 50254dcc..95e7dfde 100755
+--- a/t/steadystate_tests.py
++++ b/t/steadystate_tests.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python2.7
++#!/usr/bin/env python
+ # Note: this script is python2 and python 3 compatible.
+ #
+ # steadystate_tests.py
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_2.9.bb b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb
similarity index 79%
rename from meta-openembedded/meta-oe/recipes-benchmark/fio/fio_2.9.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb
index 67b513f..2deb42d 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_2.9.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb
@@ -8,9 +8,10 @@
 HOMEPAGE = "http://freecode.com/projects/fio"
 SECTION = "console/tests"
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 DEPENDS = "libaio zlib"
+RDEPENDS_${PN} = "python bash"
 
 PACKAGECONFIG_NUMA = "numa"
 # ARM does not currently support NUMA
@@ -19,9 +20,11 @@
 PACKAGECONFIG ??= "${PACKAGECONFIG_NUMA}"
 PACKAGECONFIG[numa] = ",--disable-numa,numactl"
 
-# rev for v2.9
-SRCREV = "fe8d0f4c54f0c308c9a02a4e3c2f5084e8bf5461"
-SRC_URI = "git://git.kernel.dk/fio.git"
+# rev for v3.8
+SRCREV = "16500b5a0b03ee0142d592bb74a46943a223b06e"
+SRC_URI = "git://git.kernel.dk/fio.git \
+          file://0001-update-the-interpreter-paths.patch \
+"
 
 S = "${WORKDIR}/git"
 
@@ -29,6 +32,7 @@
 DISABLE_STATIC = ""
 
 EXTRA_OEMAKE = "CC='${CC}' LDFLAGS='${LDFLAGS}'"
+EXTRA_OECONF = "--disable-optimizations"
 
 do_configure() {
     ./configure ${EXTRA_OECONF}
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
index b72ced0..99050e7 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
@@ -36,8 +36,8 @@
 
 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[drm-gl] = ",,virtual/libgl libdrm virtual/libgbm"
+PACKAGECONFIG[drm-gles2] = ",,virtual/libgles2 libdrm virtual/libgbm"
 PACKAGECONFIG[wayland-gl] = ",,virtual/libgl wayland"
 PACKAGECONFIG[wayland-gles2] = ",,virtual/libgles2 wayland"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_465.bb b/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_484.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_465.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_484.bb
index 2864a4d..f218b87 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_465.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_484.bb
@@ -4,14 +4,16 @@
 SECTION = "console/tests"
 LICENSE = "iozone3"
 LIC_FILES_CHKSUM = "file://iozone.c;beginline=37;endline=48;md5=7331260091868dcad0f9edea735b5f4b \
-    file://iozone.c;beginline=260;endline=266;md5=77f9ee51e45b57a7e7519c4fa0b4f00b \
+    file://iozone.c;beginline=269;endline=275;md5=77f9ee51e45b57a7e7519c4fa0b4f00b \
 "
 SRC_URI = "http://www.iozone.org/src/current/${BPN}_${PV}.tar \
     file://parallelism.patch \
     file://copyright.txt \
 "
-SRC_URI[md5sum] = "c924e5e46fb1cf8145f420e8e57eb954"
-SRC_URI[sha256sum] = "2e3d72916e7d7340a7c505fc0c3d28553fcc5ff2daf41d811368e55bd4e6a293"
+SRC_URI[md5sum] = "aa6b88ab83793cb6809ca06949a6ab01"
+SRC_URI[sha256sum] = "e816e6ae2f02003f2a6d19d47fcd9a50fdd8078da4f35fe3d4b9caf91c3d7216"
+
+UPSTREAM_CHECK_REGEX = "iozone3_(?P<pver>\d+).tar"
 
 S = "${WORKDIR}/${BPN}_${PV}/src/current/"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.2.bb b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.6.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.2.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.6.bb
index 2ed0811..4e11d82 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.2.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.6.bb
@@ -9,7 +9,7 @@
 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=d098223e44bdd19585315ee75cd9d2d7"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a9a036136b748453e839c0eb8906ef2e"
 
 DEPENDS = "openssl"
 
@@ -18,7 +18,7 @@
            file://0002-Remove-pg-from-profile_CFLAGS.patch \
            "
 
-SRCREV = "88d907f7fb58bfab5d086c5da60c922e1c582c92"
+SRCREV = "88f3ad87f38762081a6d7127890ff5c3a052b06a"
 
 S = "${WORKDIR}/git"
 
@@ -28,6 +28,6 @@
 
 CFLAGS += "-D_GNU_SOURCE"
 
-EXTRA_OECONF = "--with-openssl=${RECIPE_SYSROOT}"
+EXTRA_OECONF = "--with-openssl=${RECIPE_SYSROOT}${prefix}"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-include-stddef.h-for-ptrdiff_t.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-include-stddef.h-for-ptrdiff_t.patch
new file mode 100644
index 0000000..a84414c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-include-stddef.h-for-ptrdiff_t.patch
@@ -0,0 +1,23 @@
+From 351d1de09dd80049b7a2cb02c5750635d0389873 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Jun 2018 19:25:57 -0700
+Subject: [PATCH] include stddef.h for ptrdiff_t
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ morecore.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/morecore.c b/morecore.c
+index 6563bbd..0eef782 100644
+--- a/morecore.c
++++ b/morecore.c
+@@ -19,6 +19,7 @@
+ 
+ #define _GNU_SOURCE
+ 
++#include <stddef.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <malloc.h>
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
index 3082d7e..53f35ab 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
@@ -1,4 +1,4 @@
-From a85fc43243f8bfad12d306a4a0e230fb8b3e828a Mon Sep 17 00:00:00 2001
+From 0077532b07e268347cb8557be6d70148d5f0e840 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
@@ -9,15 +9,16 @@
 Upstream-Status: Submitted
 
 Signed-off-by: Ting Liu <b28495@freescale.com>
+
 ---
- tests/run_tests.py |   12 +++++++++++-
- 1 files changed, 11 insertions(+), 1 deletions(-)
+ tests/run_tests.py | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
 
 diff --git a/tests/run_tests.py b/tests/run_tests.py
-index d9a6b35..a9bab8f 100755
+index 3c95a03..560df6b 100755
 --- a/tests/run_tests.py
 +++ b/tests/run_tests.py
-@@ -232,9 +232,19 @@ def get_pagesizes():
+@@ -234,9 +234,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.
      """
@@ -38,6 +39,3 @@
      if rc != 0 or out == "": return sizes
  
      for size in out.split("\n"): sizes.add(int(size))
--- 
-1.7.3.4
-
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0002-Mark-glibc-specific-code-so.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0002-Mark-glibc-specific-code-so.patch
new file mode 100644
index 0000000..8cb184a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0002-Mark-glibc-specific-code-so.patch
@@ -0,0 +1,37 @@
+From 0f548286848c70aa325c6748d80e8651389b4938 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Jun 2018 19:32:59 -0700
+Subject: [PATCH] Mark glibc specific code so
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ morecore.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/morecore.c b/morecore.c
+index 0eef782..d48509c 100644
+--- a/morecore.c
++++ b/morecore.c
+@@ -364,6 +364,7 @@ void hugetlbfs_setup_morecore(void)
+ 
+ 	INFO("setup_morecore(): heapaddr = 0x%lx\n", heapaddr);
+ 
++#ifdef __GLIBC__
+ 	heaptop = heapbase = (void *)heapaddr;
+ 	if (__hugetlb_opts.thp_morecore)
+ 		__morecore = &thp_morecore;
+@@ -371,7 +372,6 @@ void hugetlbfs_setup_morecore(void)
+ 		__morecore = &hugetlbfs_morecore;
+ 
+ 	/* Set some allocator options more appropriate for hugepages */
+-
+ 	if (__hugetlb_opts.shrink_ok)
+ 		mallopt(M_TRIM_THRESHOLD, hpage_size + hpage_size / 2);
+ 	else
+@@ -381,4 +381,5 @@ void hugetlbfs_setup_morecore(void)
+ 	 * This doesn't appear to prohibit malloc() from falling back
+ 	 * to mmap() if we run out of hugepages. */
+ 	mallopt(M_MMAP_MAX, 0);
++#endif
+ }
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch
new file mode 100644
index 0000000..aca7e80
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch
@@ -0,0 +1,46 @@
+From 9ff04d7acc700387e3837f8ab11a41efea5ee8b0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Jun 2018 19:44:26 -0700
+Subject: [PATCH] alloc.c: Avoid sysconf(_SC_LEVEL2_CACHE_LINESIZE) on linux
+
+musl does not have it
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ alloc.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/alloc.c b/alloc.c
+index bce9464..cf7eb40 100644
+--- a/alloc.c
++++ b/alloc.c
+@@ -245,6 +245,19 @@ void free_huge_pages(void *ptr)
+ 	__free_huge_pages(ptr, 1);
+ }
+ 
++static size_t get_cacheline_size() {
++#if defined(__linux__)
++	FILE * fp = fopen("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", "r");
++	unsigned int line_size = 0;
++	if (fp) {
++		fscanf(fp, "%d", &line_size);
++		fclose(fp);
++	}
++	return line_size;
++#else
++	return sysconf(_SC_LEVEL2_CACHE_LINESIZE);
++#endif
++}
+ /*
+  * Offset the buffer using bytes wasted due to alignment to avoid using the
+  * same cache lines for the start of every buffer returned by
+@@ -261,7 +274,7 @@ void *cachecolor(void *buf, size_t len, size_t color_bytes)
+ 
+ 	/* Lookup our cacheline size once */
+ 	if (cacheline_size == 0) {
+-		cacheline_size = sysconf(_SC_LEVEL2_CACHE_LINESIZE);
++		cacheline_size = get_cacheline_size();
+ 		linemod = time(NULL);
+ 	}
+ 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0004-shm.c-Mark-glibc-specific-changes-so.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0004-shm.c-Mark-glibc-specific-changes-so.patch
new file mode 100644
index 0000000..58776e8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0004-shm.c-Mark-glibc-specific-changes-so.patch
@@ -0,0 +1,28 @@
+From 9ce323432a7f4d99f617970c7e35b607b9bbf843 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Jun 2018 19:48:04 -0700
+Subject: [PATCH] shm.c: Mark glibc specific changes so
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ shm.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/shm.c b/shm.c
+index 1f82cab..9447b63 100644
+--- a/shm.c
++++ b/shm.c
+@@ -48,10 +48,11 @@
+  * system shmget() may be performed without worry as there is no dynamic
+  * call chain.
+  */
++#ifdef __GLIBC__
+ extern void *dlsym (void *__restrict __handle, __const char *__restrict __name)
+ 		__attribute__((weak)) __THROW __nonnull ((2));
+ extern char *dlerror (void) __attribute__((weak)) __THROW;
+-
++#endif
+ 
+ /* call syscall shmget through the generic syscall mechanism */
+ static int syscall_shmget(key_t key, size_t size, int shmflg)
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0005-Include-dirent.h-for-ino_t.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0005-Include-dirent.h-for-ino_t.patch
new file mode 100644
index 0000000..0817420
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0005-Include-dirent.h-for-ino_t.patch
@@ -0,0 +1,26 @@
+From bb8c370aaaf25b1fe1fbf984e73177018026cb91 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Jun 2018 19:51:02 -0700
+Subject: [PATCH] Include dirent.h for ino_t
+
+Fixes
+error: unknown type name 'ino_t'; did you mean 'int'?
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ tests/hugetests.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/hugetests.h b/tests/hugetests.h
+index 8b1d8d9..056042c 100644
+--- a/tests/hugetests.h
++++ b/tests/hugetests.h
+@@ -22,6 +22,7 @@
+ 
+ #include <errno.h>
+ #include <string.h>
++#include <dirent.h>
+ 
+ #include "libhugetlbfs_privutils.h"
+ #include "libhugetlbfs_testprobes.h"
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0006-include-limits.h-for-PATH_MAX.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0006-include-limits.h-for-PATH_MAX.patch
new file mode 100644
index 0000000..2ead21f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0006-include-limits.h-for-PATH_MAX.patch
@@ -0,0 +1,40 @@
+From 5f64aa8c47c2d3a155a97e262f89cc47394a69eb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Jun 2018 19:58:53 -0700
+Subject: [PATCH] include limits.h for PATH_MAX
+
+Fixes
+
+error: 'PATH_MAX' undeclared
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ hugeadm.c                | 1 +
+ tests/gethugepagesizes.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/hugeadm.c b/hugeadm.c
+index fe4211d..8db274c 100644
+--- a/hugeadm.c
++++ b/hugeadm.c
+@@ -33,6 +33,7 @@
+ #include <grp.h>
+ #include <pwd.h>
+ #include <fcntl.h>
++#include <limits.h>
+ 
+ #include <sys/stat.h>
+ #include <sys/types.h>
+diff --git a/tests/gethugepagesizes.c b/tests/gethugepagesizes.c
+index 9551b38..2645e3f 100644
+--- a/tests/gethugepagesizes.c
++++ b/tests/gethugepagesizes.c
+@@ -29,6 +29,7 @@
+ #include <fcntl.h>
+ #include <stdarg.h>
+ #include <hugetlbfs.h>
++#include <limits.h>
+ 
+ #include "hugetests.h"
+ 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/Force-text-segment-alignment-to-0x08000000-for-i386-.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/Force-text-segment-alignment-to-0x08000000-for-i386-.patch
deleted file mode 100644
index ce6974d..0000000
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/Force-text-segment-alignment-to-0x08000000-for-i386-.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 3c6f8d0e3c0694f79244ec6ad5ad9ba3ca26bc0a Mon Sep 17 00:00:00 2001
-From: Yang Shi <yang.shi@linaro.org>
-Date: Mon, 7 Dec 2015 14:12:13 -0800
-Subject: [PATCH] Force text segment alignment to 0x08000000 for i386 with gold
- linker
-
-Upstream-Status: Backport
-
-When build libhugetlbfs tests with gold linker for i386, the below error occurs:
-
-i586-oe-linux-gcc  -m32 -march=i586 -Wl,-O1 -Wl,--hash-style=gnu
--Wl,--as-needed
---sysroot=/home/jenkins/oe/world/shr-core/tmp-glibc/sysroots/qemux86 -I..
--O2
--Wall -g -o obj32/linkhuge_rw.o -c linkhuge_rw.c
-| i586-oe-linux-gcc  -m32 -march=i586 -Wl,-O1 -Wl,--hash-style=gnu
--Wl,--as-needed
---sysroot=/home/jenkins/oe/world/shr-core/tmp-glibc/sysroots/qemux86
--B./obj32
--Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,noexecstack -ldl
--L../obj32
--o obj32/linkhuge_rw -Wl,--no-as-needed -lpthread -ldl -lhugetlbfs_privutils
--Wl,--hugetlbfs-align obj32/linkhuge_rw.o obj32/testutils.o
-| i586-oe-linux-ld: internal error in do_write, at
-/home/jenkins/oe/world/shr-core/tmp-glibc/work/x86_64-oe-linux/binutils-cross-i586/2.25-r0/git/gold/output.cc:464
-| collect2: error: ld returned 1 exit status
-
-But, it works well with GNU linker. --hugetlbfs-align flag passes
-"-zcommon-page-size=$SLICE_SIZE -zmax-page-size=$SLICE_SIZE", that are supported by gold linker too.
-But, it looks gold linker deal with them in a different way from gnu linker for i586.
-
-The readelf shows the below result with GNU linker:
-
-Elf file type is EXEC (Executable file)
-Entry point 0x8048fbd
-There are 8 program headers, starting at offset 52
-
-Program Headers:
-  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
-  PHDR           0x000034 0x08000034 0x08000034 0x00100 0x00100 R E 0x4
-  INTERP         0x048134 0x08048134 0x08048134 0x00013 0x00013 R   0x1
-      [Requesting program interpreter: /lib/ld-linux.so.2]
-  LOAD           0x000000 0x08000000 0x08000000 0x5a5bc 0x5a5bc R E 0x400000
-  LOAD           0x05a5bc 0x0845a5bc 0x0845a5bc 0x1028c 0x202cc RW 0x400000
-  DYNAMIC        0x05a5d0 0x0845a5d0 0x0845a5d0 0x000e8 0x000e8 RW  0x4
-  NOTE           0x048148 0x08048148 0x08048148 0x00044 0x00044 R   0x4
-  GNU_EH_FRAME   0x059e5c 0x08059e5c 0x08059e5c 0x0009c 0x0009c R   0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10
-
-"--relax" linker option doesn't solve this problem.
-Forced textsegment alignment to 0x08000000 with gold linker, the build will pass and
-readelf shows the same result with GNU linker:
-
-Elf file type is EXEC (Executable file)
-Entry point 0x8048fbd
-There are 8 program headers, starting at offset 52
-
-Program Headers:
-  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
-  PHDR           0x000034 0x08000034 0x08000034 0x00100 0x00100 R E 0x4
-  INTERP         0x048134 0x08048134 0x08048134 0x00013 0x00013 R   0x1
-      [Requesting program interpreter: /lib/ld-linux.so.2]
-  LOAD           0x000000 0x08000000 0x08000000 0x5a5bc 0x5a5bc R E 0x400000
-  LOAD           0x05a5bc 0x0845a5bc 0x0845a5bc 0x1028c 0x202cc RW 0x400000
-  DYNAMIC        0x05a5d0 0x0845a5d0 0x0845a5d0 0x000e8 0x000e8 RW  0x4
-  NOTE           0x048148 0x08048148 0x08048148 0x00044 0x00044 R   0x4
-  GNU_EH_FRAME   0x059e5c 0x08059e5c 0x08059e5c 0x0009c 0x0009c R   0x4
-  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10
-
-The fix just have impact on hugelink_rw test case, which needs --hugetlbfs-align flag.
-
-Signed-off-by: Yang Shi <yang.shi@linaro.org>
-Signed-off-by: Eric B Munson <emunson@mgebm.net>
----
- ld.hugetlbfs | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/ld.hugetlbfs b/ld.hugetlbfs
-index 4417442..32bc6fb 100755
---- a/ld.hugetlbfs
-+++ b/ld.hugetlbfs
-@@ -98,6 +98,7 @@ if [ "$HTLB_ALIGN" == "slice" ]; then
- 	# otherwise it will be NULL.
- 	case "$EMU" in
- 	armelf*_linux_eabi)	HTLBOPTS="$HTLBOPTS -Ttext-segment=$SLICE_SIZE" ;;
-+	elf_i386)		HTLBOPTS="$HTLBOPTS -Ttext-segment=0x08000000" ;;
- 	esac
- fi
- 
--- 
-2.0.2
-
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-search-host-library-path-for-cros.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-search-host-library-path-for-cros.patch
index b3fd843..f95e9e8 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-search-host-library-path-for-cros.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-avoid-search-host-library-path-for-cros.patch
@@ -1,19 +1,20 @@
-From 0a2877400a086e9d6ddd32a80462b7a931921dc2 Mon Sep 17 00:00:00 2001
+From 82a4f60ab24dff121f5f9d3bbcd9a8a28bb7caef 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 
+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 +-
+ 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
@@ -94,6 +95,3 @@
  INPUT(-lhugetlbfs);
  /* Do we need any of these for elf?
     __DYNAMIC = 0;    */
--- 
-1.7.9.7
-
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-elf_i386-avoid-search-host-library-path.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-elf_i386-avoid-search-host-library-path.patch
index 1566488..7cc180a 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-elf_i386-avoid-search-host-library-path.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/libhugetlbfs-elf_i386-avoid-search-host-library-path.patch
@@ -1,14 +1,16 @@
-From 889e52753d30179ba4ac940023cb4ed561436ab8 Mon Sep 17 00:00:00 2001
+From b5887693d90c430291b644c2f5713b5fdd1777ce 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
+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 -
+ 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
@@ -35,6 +37,3 @@
  INPUT(-lhugetlbfs);
  /* Do we need any of these for elf?
     __DYNAMIC = 0;    */
---
-1.7.9.5
-
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch
index 07a9971..a13c538 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch
@@ -1,17 +1,20 @@
-From 355c014573de7f95202cc7c819f81f0f230e4a1a Mon Sep 17 00:00:00 2001
+From 183a4dafe141197de5840f2e48c266ef209307aa 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>
+
 ---
+ Makefile | 1 -
+ 1 file changed, 1 deletion(-)
 
 diff --git a/Makefile b/Makefile
-index 91502e1..bfb3414 100644
+index 51e41f0..373df3c 100644
 --- a/Makefile
 +++ b/Makefile
-@@ -167,7 +167,6 @@ REALLIB32 = $(realpath $(PREFIX)/$(LIB32))
+@@ -177,7 +177,6 @@ REALLIB32 = $(realpath $(PREFIX)/$(LIB32))
  REALLIB64 = $(realpath $(PREFIX)/$(LIB64))
  ifneq ($(realpath $(PREFIX)),)
  ifeq ($(REALLIB32),$(REALLIB64))
@@ -19,5 +22,3 @@
  endif
  endif
  
--- 
-1.9.2
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/tests-Makefile-install-static-4G-edge-testcases.patch b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/tests-Makefile-install-static-4G-edge-testcases.patch
index 249f6e1..b8b2f8e 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/tests-Makefile-install-static-4G-edge-testcases.patch
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/tests-Makefile-install-static-4G-edge-testcases.patch
@@ -1,12 +1,23 @@
+From f1ad8ff887f16daee8d06eca3df0f2541bfdaac0 Mon Sep 17 00:00:00 2001
+From: Ting Liu <b28495@freescale.com>
+Date: Mon, 23 Sep 2013 08:00:55 +0000
+Subject: [PATCH] libhugetlbfs: add recipe
+
 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 @@
+---
+ tests/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/Makefile b/tests/Makefile
+index 073df96..0ca3716 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -295,7 +295,7 @@ obj64/install:
  	$(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
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
index a63494a..66fd8e2 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
@@ -3,14 +3,14 @@
 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 ${PN}-perl"
+DEPENDS = "sysfsutils"
+RDEPENDS_${PN} += "bash python python-io python-lang python-subprocess python-resource"
 RDEPENDS_${PN}-tests += "bash"
 
-PV = "2.20"
+PV = "2.21"
 PE = "1"
 
-SRCREV = "e44180072b796c0e28e53c4d01ef6279caaa2a99"
+SRCREV = "73d06e69108f231696e9c5c44f4b42690fc5d752"
 SRC_URI = " \
     git://github.com/libhugetlbfs/libhugetlbfs.git;protocol=https \
     file://skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch \
@@ -18,9 +18,16 @@
     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://Force-text-segment-alignment-to-0x08000000-for-i386-.patch \
+    file://0001-include-stddef.h-for-ptrdiff_t.patch \
+    file://0002-Mark-glibc-specific-code-so.patch \
+    file://0003-alloc.c-Avoid-sysconf-_SC_LEVEL2_CACHE_LINESIZE-on-l.patch \
+    file://0004-shm.c-Mark-glibc-specific-changes-so.patch \
+    file://0005-Include-dirent.h-for-ino_t.patch \
+    file://0006-include-limits.h-for-PATH_MAX.patch \
 "
 
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
 S = "${WORKDIR}/git"
 
 COMPATIBLE_HOST = "(i.86|x86_64|powerpc|powerpc64|aarch64|arm).*-linux*"
@@ -43,14 +50,6 @@
     if [ "${@bb.utils.filter('DISTRO_FEATURES', 'ld-is-gold', d)}" ]; 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
-
-    # fixup to install perl module under $(LIBDIR)/perl/${@get_perl_version(d)}/TLBC
-    # to avoid below error
-    # Can't locate TLBC/OpCollect.pm in @INC
-    sed -i '/^PMDIR/ s:perl:perl/${@get_perl_version(d)}:g' Makefile
 }
 
 do_install() {
@@ -61,11 +60,10 @@
 }
 
 
-PACKAGES =+ "${PN}-perl ${PN}-tests "
+PACKAGES =+ "${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"
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/0001-src-Makefile-use-libdir-instead-of-hardcoded-lib.patch b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/0001-src-Makefile-use-libdir-instead-of-hardcoded-lib.patch
new file mode 100644
index 0000000..04cef96
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/0001-src-Makefile-use-libdir-instead-of-hardcoded-lib.patch
@@ -0,0 +1,34 @@
+From ea683a0dbaa30a0bf101adb09a1a2531c7112c62 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Mon, 27 Aug 2018 11:02:45 +0800
+Subject: [PATCH] src/Makefile: use libdir instead of hardcoded /lib
+
+use libdir instead of hardcoded /lib
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ src/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 4678d54..b73ddb6 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -141,10 +141,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 $(DESTDIR)$(libdir) ]; then mkdir $(DESTDIR)$(libdir); fi
+ 	cp $(EXES) $(BASE)/bin
+ 	cp $(INCS) $(BASE)/include
+-	cp $O/lmbench.a $(BASE)/lib/libmbench.a
++	cp $O/lmbench.a $(DESTDIR)$(libdir)/libmbench.a
+ 	cd ../doc; env MAKEFLAGS="$(MAKEFLAGS)" make CC="${CC}" OS="${OS}" BASE="$(BASE)" install
+ 
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/use-base_libdir-instead-of-hardcoded-lib.patch b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/use-base_libdir-instead-of-hardcoded-lib.patch
deleted file mode 100644
index c6e9465..0000000
--- a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/use-base_libdir-instead-of-hardcoded-lib.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 73fdc58ca4eb9e2f24d854b3af3a4e5daac5a33e 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
-
-Upstream Status: Inappropriate [configuration]
-
-Signed-off-by: Ting Liu <b28495@freescale.com>
-
----
- src/Makefile | 4 ++--
- 1 file 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
- 
- 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
index 03b3721..8e6e803 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
@@ -7,9 +7,9 @@
 
 inherit autotools-brokensep
 
-DEPENDS_append_libc-musl = " libtirpc"
-CFLAGS_append_libc-musl = " -I${STAGING_INCDIR}/tirpc"
-LDLIBS_append_libc-musl = " -ltirpc "
+DEPENDS += "libtirpc"
+CFLAGS += "-I${STAGING_INCDIR}/tirpc"
+LDLIBS += " -ltirpc "
 
 PR = "r2"
 
@@ -19,17 +19,20 @@
            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 \
            file://0001-lat_http.c-Add-printf-format.patch \
            file://0001-Check-for-musl-define-guard-before-redefining-sockle.patch \
            file://0002-build-Adjust-CFLAGS-LDFLAGS-to-append-values-passed-.patch \
+           file://0001-src-Makefile-use-libdir-instead-of-hardcoded-lib.patch \
            "
 SRC_URI[md5sum] = "b3351a3294db66a72e2864a199d37cbf"
 SRC_URI[sha256sum] = "cbd5777d15f44eab7666dcac418054c3c09df99826961a397d9acf43d8a2a551"
 
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/lmbench/files/development/"
+UPSTREAM_CHECK_REGEX = "lmbench-(?P<pver>\d+(\.\d+)+-[a-z]+\d+)"
+
 EXTRA_OEMAKE = 'CC="${CC}" AR="${AR}" RANLIB="${RANLIB}" CFLAGS="${CFLAGS}" \
                 LDFLAGS="${LDFLAGS}" LDLIBS="${LDLIBS}" LD="${LD}" OS="${TARGET_SYS}" \
                 TARGET="${TARGET_OS}" BASE="${prefix}" MANDIR="${mandir}"'
@@ -63,6 +66,7 @@
     fi
 
     oe_runmake BASE="${D}${prefix}" MANDIR="${D}${mandir}" \
+            DESTDIR="${D}" \
             -C src install
     mv ${D}${bindir}/line ${D}${bindir}/lm_line
     install -m 0755 ${WORKDIR}/lmbench-run ${D}${bindir}/
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb b/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb
index da2cb4b..22bb041 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb
@@ -16,7 +16,7 @@
 
 EXTRA_OEMAKE = "-e MAKEFLAGS="
 
-TARGET_CC_ARCH += "${CFLAGS} ${LDFLAGS}"
+TARGET_CC_ARCH += "${LDFLAGS}"
 do_compile() {
     oe_runmake
 }
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_7.8.0.bb b/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.0.1.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_7.8.0.bb
rename to meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.0.1.bb
index 1f90a71..b1fa51b 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_7.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.0.1.bb
@@ -6,8 +6,8 @@
 SECTION = "console/tests"
 
 SRC_URI = "http://www.phoronix-test-suite.com/releases/${BP}.tar.gz"
-SRC_URI[md5sum] = "850843bd9252823e7e24bc0849773000"
-SRC_URI[sha256sum] = "cd6c869841f28e4ac1e8a5e4cda05fafce9a523a6b4f0f3a47805efd30494d88"
+SRC_URI[md5sum] = "3dc3a0e490e909f188379a9e05fd4780"
+SRC_URI[sha256sum] = "6306549109c7254baf31edb385265b19557b5692217d2dfcf96f6fb17de8e842"
 
 S = "${WORKDIR}/phoronix-test-suite"
 
@@ -29,7 +29,7 @@
 SYSTEMD_AUTO_ENABLE = "disable"
 SYSTEMD_SERVICE_${PN} = "phoromatic-client.service phoromatic-server.service"
 
-RDEPENDS_${PN} += "bash python php-cli"
+RDEPENDS_${PN} += "bash python php-cli util-linux-lscpu os-release lsb"
 
 FILES_${PN} += " \
     ${datadir}/phoronix-test-suite \
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb b/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb
new file mode 100644
index 0000000..77d1728
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Small collection of benchmarks for storage I/O"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b529aaa6a0c50f15d29f89609b5c22f3"
+
+SRCREV = "79698f645bfb28d0d966484ddad3a1efb562246d"
+PV = "0.0+git${SRCPV}"
+SRC_URI = "git://github.com/Algodev-github/S.git;protocol=https;branch=master"
+
+S = "${WORKDIR}/git"
+
+# installing in /opt/S-suite since the package has
+# dependencies to the directory structure.
+do_install() {
+    install -d ${D}/opt/S-suite
+    for i in $(find ${S}/* -type d); do
+        install -d ${D}/opt/S-suite/$(basename $i)
+        install -m0755 -p ${S}/$(basename $i)/* ${D}/opt/S-suite/$(basename $i)
+    done
+
+    install -m0755 ${S}/config_params.sh ${D}/opt/S-suite
+    install -m0755 ${S}/def_config_params.sh ${D}/opt/S-suite
+}
+
+RDEPENDS_${PN} = "bash bc coreutils gawk g++ gcc fio libaio libaio-dev sysstat"
+
+FILES_${PN} = "/opt/S-suite/"
+
+# added to INSANE_SKIP since s-suite have an runtime
+# dependency (RDEPENDS) on libaio-dev.
+INSANE_SKIP_${PN} += "dev-deps"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.15.bb b/meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.16.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.15.bb
rename to meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.16.bb
index 9cc62a9..6497e09 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.15.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.16.bb
@@ -10,7 +10,7 @@
 
 COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
 
-SRCREV = "5c14da22802576a99ebb854f7aa174f796f7b031"
+SRCREV = "a5103251a11663adddc85c86e0b8d3d3b73cbb4a"
 SRC_URI = "git://github.com/rhinstaller/efibootmgr.git;protocol=https \
           "
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-dp.h-Add-Wunknown-attributes-when-using-clang.patch b/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-dp.h-Add-Wunknown-attributes-when-using-clang.patch
deleted file mode 100644
index b4ce132..0000000
--- a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-dp.h-Add-Wunknown-attributes-when-using-clang.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From d65c325dd8681edf2ee3332eeb0a547229c7ffb5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 24 Aug 2017 15:54:47 -0700
-Subject: [PATCH] efivar-dp.h: Add -Wunknown-attributes when using clang
-
-change !dp check to a comparision against NULL to silent clang warning
-nonnull parameter 'dp' will evaluate to 'true' on first encounter
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/include/efivar/efivar-dp.h | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/include/efivar/efivar-dp.h b/src/include/efivar/efivar-dp.h
-index 3a509b7..c140e8d 100644
---- a/src/include/efivar/efivar-dp.h
-+++ b/src/include/efivar/efivar-dp.h
-@@ -783,9 +783,14 @@ extern int efidp_append_instance(const_efidp dp, const_efidp dpi, efidp *out);
-  * though older or other compilers might just ignore that attribute if they
-  * don't support it.  Ugh.
-  */
-+#pragma GCC diagnostic push
- #if defined(__GNUC__) && __GNUC__ >= 6
- #pragma GCC diagnostic ignored "-Wnonnull-compare"
- #endif
-+#if defined(__clang__)
-+#pragma GCC diagnostic ignored "-Wunknown-attributes"
-+#pragma GCC diagnostic ignored "-Wpointer-bool-conversion"
-+#endif
- 
- static inline int16_t
- __attribute__((__artificial__))
diff --git a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch b/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch
deleted file mode 100644
index 2a6eb06..0000000
--- a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From dd4291265b7b3d7d7ffa1d8adf32781ae25dbfeb Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 15 Jul 2017 00:29:42 -0700
-Subject: [PATCH] makeguids: Do not use __bswap_constant_{16|32} macros
-
-not available on musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/makeguids.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/makeguids.c b/src/makeguids.c
-index da2f5f7..daf821a 100644
---- a/src/makeguids.c
-+++ b/src/makeguids.c
-@@ -155,13 +155,13 @@ main(int argc, char *argv[])
- #if BYTE_ORDER == BIG_ENDIAN\n\
- #define cpu_to_be32(n) (n)\n\
- #define cpu_to_be16(n) (n)\n\
--#define cpu_to_le32(n) (__bswap_constant_32(n))\n\
--#define cpu_to_le16(n) (__bswap_constant_16(n))\n\
-+#define cpu_to_le32(n) ((uint32_t) ((n)>>24 | (n)>>8&0xff00 | (n)<<8&0xff0000 | (n)<<24))\n\
-+#define cpu_to_le16(n) ((uint16_t) ((n)<<8 | (n)>>8))\n\
- #else\n\
- #define cpu_to_le32(n) (n)\n\
- #define cpu_to_le16(n) (n)\n\
--#define cpu_to_be32(n) (__bswap_constant_32(n))\n\
--#define cpu_to_be16(n) (__bswap_constant_16(n))\n\
-+#define cpu_to_be32(n) ((uint32_t) ((n)>>24 | (n)>>8&0xff00 | (n)<<8&0xff0000 | (n)<<24))\n\
-+#define cpu_to_be16(n) ((uint16_t) ((n)<<8 | (n)>>8))\n\
- #endif\n\
- """);
- 
diff --git a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0003-efivar-fix-for-cross-compile.patch b/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0003-efivar-fix-for-cross-compile.patch
deleted file mode 100644
index 83105fe..0000000
--- a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0003-efivar-fix-for-cross-compile.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From dea4a55714249b2734a36701120fd22c91c64ec2 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Sat, 7 May 2016 02:06:47 -0400
-Subject: [PATCH] Makefile: fix efivar.pc not found
-
-It fixes efivar.pc not found:
-...
-| install -d -m 755 efivar/0.23-r0/image/usr/lib/pkgconfig/
-| install -m 644 efivar.pc efivar/0.23-r0/image/usr/lib/pkgconfig/
-;  install -m 644 efiboot.pc efivar/0.23-r0/image/usr/lib/pkgconfig/
-;
-| install: cannot stat 'efivar.pc': No such file or directory
-| install: cannot stat 'efiboot.pc': No such file or directory
-| make[1]: *** [install] Error 1
-| make[1]: Leaving directory `efivar/0.23-r0/git/src'
-| make: *** [install] Error 2
-| ERROR: oe_runmake failed
-...
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- src/Makefile | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/Makefile b/src/Makefile
-index dcc7fc8..691aa8a 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -94,7 +94,9 @@ install : all
- 		ln -fs $(x).1.$(VERSION) $(DESTDIR)$(libdir)/$(x) ;\
- 		)
- 	$(INSTALL) -d -m 755 $(DESTDIR)$(PCDIR)
--	$(foreach x, $(PCTARGETS), $(INSTALL) -m 644 $(x) $(DESTDIR)$(PCDIR) ;)
-+	$(foreach x, $(PCTARGETS), $(INSTALL) -m 644 $(TOPDIR)/src/$(x).in $(DESTDIR)$(PCDIR)/$(x) ;\
-+		sed -i -e "s:@@LIBDIR@@:$(libdir):g" -e "s:@@VERSION@@:$(VERSION):g" \
-+			$(DESTDIR)$(PCDIR)/$(x); )
- 	$(INSTALL) -d -m 755 $(DESTDIR)$(includedir)/efivar
- 	$(foreach x, $(wildcard $(TOPDIR)/src/include/efivar/*.h), $(INSTALL) -m 644 $(x) $(DESTDIR)$(includedir)/efivar/$(notdir $(x));)
- 	$(INSTALL) -d -m 755 $(DESTDIR)$(bindir)
diff --git a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch b/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch
index f88af1f..043b07a 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch
+++ b/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch
@@ -1,6 +1,6 @@
-From c801dcb03d42eb533a9bead0b397d7ce4fc5a6fe Mon Sep 17 00:00:00 2001
-From: Kai Kang <kai.kang@windriver.com>
-Date: Wed, 10 Aug 2016 17:49:50 +0800
+From c10368b397483a2fc7b493c099d8416d902f8cd8 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 31 Jul 2018 14:18:35 +0800
 Subject: [PATCH] allow multi definitions for native
 
 Upstream-Status: Pending
@@ -14,12 +14,13 @@
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
 
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 ---
  Make.rules | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/Make.rules b/Make.rules
-index 88b9aa7..799332f 100644
+index 042585b..257ba45 100644
 --- a/Make.rules
 +++ b/Make.rules
 @@ -20,6 +20,7 @@ include $(TOPDIR)/Make.version
@@ -28,5 +29,8 @@
  	  -Wl,--version-script=$(MAP) \
 +	  -Wl,-z,muldefs \
  	  -o $@ $^ $(LDLIBS)
+ 	ln -vfs $@ $@.1
  
- %.abixml : %.so
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/musl-strndupa.patch b/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/musl-strndupa.patch
deleted file mode 100644
index 5864ac6..0000000
--- a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/musl-strndupa.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 8000b9afc858472912aace985004b44f8eb467e0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 18 Aug 2017 09:49:49 -0700
-Subject: [PATCH] support musl
-
-Upstream-Status: Pending
----
- src/linux.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/linux.c b/src/linux.c
-index 34ed479..1304f2b 100644
---- a/src/linux.c
-+++ b/src/linux.c
-@@ -40,6 +40,10 @@
- #include <efivar.h>
- #include <efiboot.h>
- 
-+#if !defined(__GLIBC__)
-+#define strndupa(x,s) strncpy(alloca(strlen(x)+1),x,s)
-+#endif
-+
- #include "dp.h"
- #include "linux.h"
- #include "util.h"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.31.bb b/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.36.bb
similarity index 72%
rename from meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.31.bb
rename to meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.36.bb
index 9d4cdc9..20588ee 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.31.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.36.bb
@@ -12,15 +12,11 @@
 
 COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
 
-SRCREV = "11324799c68193116e1dd5f94b416591bd324f90"
+SRCREV = "ef3449223ecd1e7b1098c523d66b2f960fe839ea"
 SRC_URI = "git://github.com/rhinstaller/efivar.git \
            file://allow-multi-definitions-for-native.patch \
-           file://0001-makeguids-Do-not-use-__bswap_constant_-16-32-macros.patch \
-           file://musl-strndupa.patch \
-           file://0001-efivar-dp.h-Add-Wunknown-attributes-when-using-clang.patch \
            "
 SRC_URI_append_class-target = " file://0001-efivar-fix-for-cross-compile.patch \
-                                file://0003-efivar-fix-for-cross-compile.patch \
                                 ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'file://0004-fix-unknow-option-for-gold-linker.patch', '', d)} \
                               "
 SRC_URI_append_class-native = " file://fix-compile-failure-with-host-gcc-4.6.patch \
@@ -28,15 +24,12 @@
 
 S = "${WORKDIR}/git"
 
-# Setting CROSS_COMPILE breaks pkgconfig, so just set AR
-EXTRA_OEMAKE = "AR=${TARGET_PREFIX}gcc-ar"
-
 do_compile_prepend() {
     sed -i -e s:-Werror::g ${S}/gcc.specs
 }
 
 do_compile_class-native() {
-    oe_runmake -C src makeguids
+    oe_runmake -C src makeguids CC_FOR_BUILD="${BUILD_CC}"
 }
 
 do_install() {
diff --git a/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch b/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch
new file mode 100644
index 0000000..df80286
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch
@@ -0,0 +1,39 @@
+From e5f68189ab3602b1042cc8423fd6a3a23abd5455 Mon Sep 17 00:00:00 2001
+From: Alex James <theracermaster@gmail.com>
+Date: Sat, 14 Apr 2018 22:59:57 -0500
+Subject: [PATCH] ch341a_spi: Avoid deprecated libusb functions
+
+libusb 1.0.22 marked libusb_set_debug as deprecated. For such versions
+of libusb, use libusb_set_option instead.
+
+Change-Id: Ib71ebe812316eaf49136979a942a946ef9e4d487
+Signed-off-by: Alex James <theracermaster@gmail.com>
+Reviewed-on: https://review.coreboot.org/25681
+Tested-by: Nico Huber <nico.h@gmx.de>
+Reviewed-by: David Hendricks <david.hendricks@gmail.com>
+---
+Upstream-Status: Backport
+ ch341a_spi.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/ch341a_spi.c b/ch341a_spi.c
+index 6eb2804..d880510 100644
+--- a/ch341a_spi.c
++++ b/ch341a_spi.c
+@@ -444,7 +444,12 @@ int ch341a_spi_init(void)
+ 		return -1;
+ 	}
+ 
+-	libusb_set_debug(NULL, 3); // Enable information, warning and error messages (only).
++	/* Enable information, warning, and error messages (only). */
++#if LIBUSB_API_VERSION < 0x01000106
++	libusb_set_debug(NULL, 3);
++#else
++	libusb_set_option(NULL, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_INFO);
++#endif
+ 
+ 	uint16_t vid = devs_ch341a_spi[0].vendor_id;
+ 	uint16_t pid = devs_ch341a_spi[0].device_id;
+-- 
+2.17.0
+
diff --git a/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.0.bb b/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.0.bb
index 9eac876..1c17246 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.0.bb
@@ -8,6 +8,7 @@
 SRC_URI = "https://download.flashrom.org/releases/flashrom-${PV}.tar.bz2 \
            file://sst26.patch \
            file://0001-platform-Add-riscv-to-known-platforms.patch \
+           file://0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch \
            "
 SRC_URI[md5sum] = "42d999990c735d88653627cefcc13b9a"
 SRC_URI[sha256sum] = "3702fa215ba5fb5af8e54c852d239899cfa1389194c1e51cb2a170c4dc9dee64"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.4.0.bb b/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.4.0.bb
index 454a69f..ffab5d6 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.4.0.bb
@@ -16,6 +16,14 @@
 SRC_URI[md5sum] = "1e9f117cbfa11be1955adc96df71eadb"
 SRC_URI[sha256sum] = "e334c1c2b06f7290e3e66bdae330a5d36054701ffd47a5dde7a06f9a7402cb4e"
 
+# It is using '-' but not '.' as delimiter for the version in the releases page,
+# which causes the version comparison unmatched.
+#UPSTREAM_CHECK_URI = "https://github.com/groeck/lm-sensors/releases"
+
+RECIPE_UPSTREAM_VERSION = "3.4.0"
+RECIPE_UPSTREAM_DATE = "Jun 25, 2015"
+CHECK_DATE = "May 28, 2018"
+
 inherit update-rc.d systemd
 
 RDEPENDS_${PN}-dev = ""
@@ -68,14 +76,16 @@
     fi
 }
 
+RPROVIDES_${PN}-dbg += "${PN}-libsensors-dbg ${PN}-sensors-dbg ${PN}-sensord-dbg ${PN}-isatools-dbg"
+
 # libsensors packages
-PACKAGES =+ "${PN}-libsensors ${PN}-libsensors-dbg ${PN}-libsensors-dev ${PN}-libsensors-staticdev ${PN}-libsensors-doc"
+PACKAGES =+ "${PN}-libsensors ${PN}-libsensors-dev ${PN}-libsensors-staticdev ${PN}-libsensors-doc"
 
 # sensors command packages
-PACKAGES =+ "${PN}-sensors ${PN}-sensors-dbg ${PN}-sensors-doc"
+PACKAGES =+ "${PN}-sensors ${PN}-sensors-doc"
 
 # sensord logging daemon
-PACKAGES =+ "${PN}-sensord ${PN}-sensord-dbg ${PN}-sensord-doc"
+PACKAGES =+ "${PN}-sensord ${PN}-sensord-doc"
 
 # fancontrol script
 PACKAGES =+ "${PN}-fancontrol ${PN}-fancontrol-doc"
@@ -90,11 +100,11 @@
 PACKAGES =+ "${PN}-pwmconfig ${PN}-pwmconfig-doc"
 
 # isadump and isaset helper program
-PACKAGES =+ "${PN}-isatools ${PN}-isatools-dbg ${PN}-isatools-doc"
+PACKAGES =+ "${PN}-isatools ${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"
@@ -102,13 +112,11 @@
 
 # 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"
@@ -136,5 +144,4 @@
 
 # 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/meta-openembedded/meta-oe/recipes-bsp/lssci/lsscsi_0.28.bb b/meta-openembedded/meta-oe/recipes-bsp/lsscsi/lsscsi_0.30.bb
similarity index 62%
rename from meta-openembedded/meta-oe/recipes-bsp/lssci/lsscsi_0.28.bb
rename to meta-openembedded/meta-oe/recipes-bsp/lsscsi/lsscsi_0.30.bb
index 4b8cbaf..af34cdc 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/lssci/lsscsi_0.28.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/lsscsi/lsscsi_0.30.bb
@@ -6,7 +6,9 @@
 
 SRC_URI = "http://sg.danny.cz/scsi/${BP}.tgz"
 
-SRC_URI[md5sum] = "4a39e3b09cd422e2cae3edbaf56b3176"
-SRC_URI[sha256sum] = "025d009a1af42bc5b2fca664c44c9ecdfd754356e4a44f5c6aced2420afadd50"
+SRC_URI[md5sum] = "298a700cd50bb4be1382d618f7b038f4"
+SRC_URI[sha256sum] = "619a2187405f02c5f57682f3478bffc75326803cd08839e39d434250c5518b15"
 
 inherit autotools
+
+S = "${WORKDIR}/lsscsi-030r154"
diff --git a/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/files/0001-Makefile-fix-bash-completion-install-path.patch b/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/files/0001-Makefile-fix-bash-completion-install-path.patch
new file mode 100644
index 0000000..154e140
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/files/0001-Makefile-fix-bash-completion-install-path.patch
@@ -0,0 +1,33 @@
+From ef64032b34190079aab591c64a25f7535a977390 Mon Sep 17 00:00:00 2001
+From: Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>
+Date: Tue, 9 Oct 2018 11:26:34 +0200
+Subject: [PATCH] Makefile: fix bash completion install path
+
+Change path to bash-completion upstream recommendation used by most
+distributions.
+
+Upstream-Status: Accepted
+
+Signed-off-by: Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index fa587dd..433bc41 100644
+--- a/Makefile
++++ b/Makefile
+@@ -69,8 +69,8 @@ install-bin: default
+ 	$(INSTALL) -m 755 nvme $(DESTDIR)$(SBINDIR)
+ 
+ install-bash-completion:
+-	$(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash_completion.d
+-	$(INSTALL) -m 644 -T ./completions/bash-nvme-completion.sh $(DESTDIR)$(PREFIX)/share/bash_completion.d/nvme
++	$(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash-completion/completions
++	$(INSTALL) -m 644 -T ./completions/bash-nvme-completion.sh $(DESTDIR)$(PREFIX)/share/bash-completion/completions/nvme
+ 
+ install: install-bin install-man install-bash-completion
+ 
+-- 
+1.9.1
+
diff --git a/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.6.bb b/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.6.bb
new file mode 100644
index 0000000..9b7e6cd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.6.bb
@@ -0,0 +1,21 @@
+SUMMARY = "NVMe management command line interface"
+AUTHOR = "Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>"
+HOMEPAGE = "https://github.com/linux-nvme/nvme-cli"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8264535c0c4e9c6c335635c4026a8022"
+DEPENDS = "util-linux"
+PV .= "+git${SRCPV}"
+
+SRC_URI = "git://github.com/linux-nvme/nvme-cli.git \
+           file://0001-Makefile-fix-bash-completion-install-path.patch \
+           "
+SRCREV = "642d426faf8a67ed01e90f7c35c0d967f8cc52a3"
+
+S = "${WORKDIR}/git"
+
+inherit bash-completion
+
+do_install() {
+    oe_runmake PREFIX=${prefix} DESTDIR=${D} install
+}
diff --git a/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/lex_sys_types.patch b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/lex_sys_types.patch
new file mode 100644
index 0000000..d4c2bed
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/lex_sys_types.patch
@@ -0,0 +1,21 @@
+Include sys/types.h for u_long definition
+
+Fix errors like
+In file included from src/lex_config.l:34:0:
+src/yacc_config.y:45:5: error: unknown type name 'u_long'
+     u_long num;
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+Index: pcmciautils-018/src/lex_config.l
+===================================================================
+--- pcmciautils-018.orig/src/lex_config.l
++++ pcmciautils-018/src/lex_config.l
+@@ -22,6 +22,7 @@
+ #include <unistd.h>
+ #include <string.h>
+ #include <syslog.h>
++#include <sys/types.h>
+ 
+ #ifdef HAS_WORDEXP
+ #include <wordexp.h>
diff --git a/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/makefile_fix.patch b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/makefile_fix.patch
new file mode 100644
index 0000000..7b0ce21
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/makefile_fix.patch
@@ -0,0 +1,101 @@
+Upstream-Status: Inappropriate [configuration]
+
+Hardcoded paths are bad...
+This lets us use the install from OE's native sysroot
+rebase the patch to 018, removing hardcoded path for true
+as well. Removing of -D in install invocation is a little
+questionable, is it some GNU extention?
+
+-Khem Raj <raj.khem@gmail.com>
+
+Index: pcmciautils-018/Makefile
+===================================================================
+--- pcmciautils-018.orig/Makefile
++++ pcmciautils-018/Makefile
+@@ -76,7 +76,7 @@ sbindir =	${exec_prefix}/sbin
+ mandir =	${prefix}/usr/share/man
+ udevdir =	${prefix}/lib/udev
+ 
+-INSTALL = /usr/bin/install -c
++INSTALL = install -c
+ INSTALL_PROGRAM = ${INSTALL}
+ INSTALL_DATA  = ${INSTALL} -m 644
+ INSTALL_SCRIPT = ${INSTALL_PROGRAM}
+@@ -180,7 +180,7 @@ endif
+ # if DEBUG is enabled, then we do not strip or optimize
+ ifeq ($(strip $(DEBUG)),true)
+ 	CFLAGS  += -O1 -g -DDEBUG -D_GNU_SOURCE
+-	STRIPCMD = /bin/true -Since_we_are_debugging
++	STRIPCMD = true -Since_we_are_debugging
+ else
+ 	CFLAGS  += $(OPTIMIZATION) -fomit-frame-pointer -D_GNU_SOURCE
+ 	STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment
+@@ -273,30 +273,32 @@ clean:
+ 
+ install-hotplug:
+ 	$(INSTALL) -d $(DESTDIR)$(hotplugdir)
+-	$(INSTALL_PROGRAM) -D hotplug/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.agent
+-	$(INSTALL_PROGRAM) -D hotplug/pcmcia.rc $(DESTDIR)$(hotplugdir)/pcmcia.rc
++	$(INSTALL_PROGRAM) hotplug/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.agent
++	$(INSTALL_PROGRAM) hotplug/pcmcia.rc $(DESTDIR)$(hotplugdir)/pcmcia.rc
+ 
+ uninstall-hotplug:
+ 	- rm -f $(DESTDIR)$(hotplugdir)/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.rc
+ 
+ install-socket-hotplug:
+-	$(INSTALL_PROGRAM) -D hotplug/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent
+-	$(INSTALL_PROGRAM) -D hotplug/pcmcia_socket.rc $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
++	$(INSTALL_PROGRAM) hotplug/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent
++	$(INSTALL_PROGRAM) hotplug/pcmcia_socket.rc $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
+ 
+ uninstall-socket-hotplug:
+ 	- rm -f $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc
+ 
+ install-socket-tools:
+-	$(INSTALL_PROGRAM) -D $(PCMCIA_SOCKET_STARTUP) $(DESTDIR)$(udevhelperdir)/$(PCMCIA_SOCKET_STARTUP)
++	$(INSTALL) -d $(DESTDIR)$(udevhelperdir)
++	$(INSTALL_PROGRAM) $(PCMCIA_SOCKET_STARTUP) $(DESTDIR)$(udevhelperdir)/$(PCMCIA_SOCKET_STARTUP)
+ 
+ uninstall-socket-tools:
+ 	- rm -f $(DESTDIR)$(udevhelperdir)/$(PCMCIA_SOCKET_STARTUP)
+ 
+ install-tools:
+ 	$(INSTALL) -d $(DESTDIR)$(sbindir)
+-	$(INSTALL_PROGRAM) -D $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(PCCARDCTL)
++	$(INSTALL) -d $(DESTDIR)$(udevhelperdir)
++	$(INSTALL_PROGRAM) $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(PCCARDCTL)
+ 	$(SYMLINK) $(PCCARDCTL) $(DESTDIR)$(sbindir)/$(LSPCMCIA)
+-	$(INSTALL_PROGRAM) -D $(PCMCIA_CHECK_BROKEN_CIS) $(DESTDIR)$(udevhelperdir)/$(PCMCIA_CHECK_BROKEN_CIS)
++	$(INSTALL_PROGRAM) $(PCMCIA_CHECK_BROKEN_CIS) $(DESTDIR)$(udevhelperdir)/$(PCMCIA_CHECK_BROKEN_CIS)
+ 
+ uninstall-tools:
+ 	- rm -f $(DESTDIR)$(sbindir)/$(PCCARDCTL)
+@@ -305,22 +307,24 @@ uninstall-tools:
+ 
+ install-config:
+ 	$(INSTALL) -d $(DESTDIR)$(pcmciaconfdir)
+-	$(INSTALL_DATA)  -D config/config.opts $(DESTDIR)$(pcmciaconfdir)/config.opts
++	$(INSTALL_DATA)  config/config.opts $(DESTDIR)$(pcmciaconfdir)/config.opts
+ 	if [ -f config/config.opts.$(ARCH) ]; then \
+-		$(INSTALL_DATA) -D config/config.opts.$(ARCH) $(DESTDIR)$(pcmciaconfdir)/config.opts; \
++		$(INSTALL_DATA) config/config.opts.$(ARCH) $(DESTDIR)$(pcmciaconfdir)/config.opts; \
+ 	fi
+ 
+ uninstall-config:
+ #	- rm -f $(DESTDIR)$(pcmciaconfdir)/config.opts
+ 
+ install-udev:
+-	$(INSTALL_DATA) -D $(UDEV_RULES_FILE) $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
++	$(INSTALL) -d $(DESTDIR)$(udevrulesdir)
++	$(INSTALL_DATA) $(UDEV_RULES_FILE) $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
+ 
+ uninstall-udev:
+ 	- rm -f $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules
+ 
+ install-man:
+-	$(INSTALL_DATA) -D man/man8/pccardctl.8 $(DESTDIR)$(mandir)/man8/pccardctl.8
++	$(INSTALL) -d $(DESTDIR)$(mandir)/man8
++	$(INSTALL_DATA) man/man8/pccardctl.8 $(DESTDIR)$(mandir)/man8/pccardctl.8
+ 	$(SYMLINK) pccardctl.8 $(DESTDIR)$(mandir)/man8/lspcmcia.8
+ 
+ uninstall-man:
diff --git a/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/makefile_race.patch b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/makefile_race.patch
new file mode 100644
index 0000000..4c5eba7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils/makefile_race.patch
@@ -0,0 +1,29 @@
+"make src/lex_config.o"
+
+results in:
+
+src/lex_config.l:35:25: fatal error: yacc_config.h: No such file or directory
+
+so add missing dependency through a missing rule. Also remove a rule which
+doesn't appear to do anything.
+
+RP
+2016/1/31
+
+Upstream-Status: Pending
+
+Index: pcmciautils-018/Makefile
+===================================================================
+--- pcmciautils-018.orig/Makefile
++++ pcmciautils-018/Makefile
+@@ -246,8 +246,8 @@ $(PCMCIA_SOCKET_STARTUP): $(LIBC) src/st
+ 	$(QUIET) $(LD) $(LDFLAGS) -o $@ $(CRT0) src/startup.o src/yacc_config.o src/lex_config.o $(LIB_OBJS) $(ARCH_LIB_OBJS)
+ 	$(QUIET) $(STRIPCMD) $@
+ 
+-yacc_config.o lex_config.o: %.o: %.c
+-	$(CC) -c -MD -O -pipe $(CPPFLAGS) $<
++src/lex_config.o : src/lex_config.c src/yacc_config.h ccdv
++	$(QUIET) $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
+ 
+ debugtools: ccdv $(CBDUMP) $(CISDUMP)
+ 
diff --git a/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb
new file mode 100644
index 0000000..fc06455
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Linux kernel userland utilities for the PCMCIA subsystem"
+HOMEPAGE = "https://www.kernel.org/pub/linux/utils/kernel/pcmcia/"
+SECTION = "kernel/userland"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "udev sysfsutils flex-native bison-native"
+RDEPENDS_${PN} = "udev module-init-tools"
+
+PR = "r1"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/pcmcia/${BP}.tar.xz \
+           file://makefile_fix.patch \
+           file://makefile_race.patch \
+           file://lex_sys_types.patch \
+"
+
+SRC_URI[md5sum] = "885431c3cefb76ffdad8cb985134e996"
+SRC_URI[sha256sum] = "57c27be8f04ef4d535bcfa988567316cc57659fe69068327486dab53791e6558"
+
+inherit pkgconfig
+
+export HOSTCC = "${BUILD_CC}"
+export etcdir = "${sysconfdir}"
+export sbindir = "${base_sbindir}"
+export pcmciaconfdir = "${sysconfdir}/pcmcia"
+export udevdir = "`pkg-config --variable=udevdir udev`"
+export udevrulesdir = "`pkg-config --variable=udevdir udev`/rules.d"
+export UDEV = "1"
+LD = "${CC}"
+CFLAGS =+ "-I${S}/src"
+CFLAGS =+ "-DPCMCIAUTILS_VERSION=\\"${PV}\\""
+
+EXTRA_OEMAKE = "-e 'STRIP=echo' 'LIB_OBJS=-lc -lsysfs' 'LEX=flex'"
+
+do_install () {
+	oe_runmake 'DESTDIR=${D}' install
+}
+
+CONFFILES_${PN} += "${sysconfdir}/pcmcia/config.opts"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch b/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch
new file mode 100644
index 0000000..522fc39
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch
@@ -0,0 +1,44 @@
+hostapd-2.6: Fix CVE-2018-14526
+
+[No upstream tracking] -- https://w1.fi/security/2018-1/unauthenticated-eapol-key-decryption.txt
+
+wpa: Ignore unauthenticated encrypted EAPOL-Key data
+
+Ignore unauthenticated encrypted EAPOL-Key data in supplicant
+processing. When using WPA2, these are frames that have the Encrypted
+flag set, but not the MIC flag.
+
+When using WPA2, EAPOL-Key frames that had the Encrypted flag set but
+not the MIC flag, had their data field decrypted without first verifying
+the MIC. In case the data field was encrypted using RC4 (i.e., when
+negotiating TKIP as the pairwise cipher), this meant that
+unauthenticated but decrypted data would then be processed. An adversary
+could abuse this as a decryption oracle to recover sensitive information
+in the data field of EAPOL-Key messages (e.g., the group key).
+
+Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/src/rsn_supp/wpa.c?id=3e34cfdff6b192fe337c6fb3f487f73e96582961]
+CVE: CVE-2018-14526
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+
+diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
+index 3c47879..6bdf923 100644
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -2016,6 +2016,17 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, const u8 *src_addr,
+
+ 	if ((sm->proto == WPA_PROTO_RSN || sm->proto == WPA_PROTO_OSEN) &&
+ 	    (key_info & WPA_KEY_INFO_ENCR_KEY_DATA)) {
++		/*
++		 * Only decrypt the Key Data field if the frame's authenticity
++		 * was verified. When using AES-SIV (FILS), the MIC flag is not
++		 * set, so this check should only be performed if mic_len != 0
++		 * which is the case in this code branch.
++		 */
++		if (!(key_info & WPA_KEY_INFO_MIC)) {
++			wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
++				"WPA: Ignore EAPOL-Key with encrypted but unauthenticated data");
++			goto out;
++		}
+ 		if (wpa_supplicant_decrypt_key_data(sm, key, ver, key_data,
+ 						    &key_data_len))
+ 			goto out;
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb b/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb
index 250add8..42aae42 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb
@@ -18,6 +18,7 @@
     file://0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch \
     file://0006-TDLS-Reject-TPK-TK-reconfiguration.patch \
     file://0007-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch \
+    file://hostapd-CVE-2018-14526.patch \
 "
 
 SRC_URI[md5sum] = "eaa56dce9bd8f1d195eb62596eab34c7"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.bb b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.1.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.1.bb
index f95240f..11748cb 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.1.bb
@@ -14,8 +14,8 @@
 HOMEPAGE = "http://web.mit.edu/Kerberos/"
 SECTION = "console/network"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${S}/../NOTICE;md5=59b8da652f07186b44782a8454574f30"
-DEPENDS = "ncurses util-linux e2fsprogs e2fsprogs-native openssl"
+LIC_FILES_CHKSUM = "file://${S}/../NOTICE;md5=7f95bc3d8d0351aa481d56d5e9de20c3"
+DEPENDS = "bison-native ncurses util-linux e2fsprogs e2fsprogs-native openssl"
 
 inherit autotools-brokensep binconfig perlnative systemd update-rc.d
 
@@ -31,8 +31,8 @@
            file://krb5-kdc.service \
            file://krb5-admin-server.service \
 "
-SRC_URI[md5sum] = "23c5e9f07642db4a67f7a5b6168b1319"
-SRC_URI[sha256sum] = "faeb125f83b0fb4cdb2f99f088140631bb47d975982de0956d18c85842969e08"
+SRC_URI[md5sum] = "848e9b80d6aaaa798e3f3df24b83c407"
+SRC_URI[sha256sum] = "214ffe394e3ad0c730564074ec44f1da119159d94281bbec541dc29168d21117"
 
 CVE_PRODUCT = "kerberos"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb b/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb
index 5e0f3a5..a5838d3 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb
@@ -9,8 +9,6 @@
 SRC_URI[md5sum] = "94459a5a22db041dec6f98424d6efe54"
 SRC_URI[sha256sum] = "973593d3479abdf657674a55afe5f78624b0e440614e2b8cb3a07f16d4d7f821"
 
-S = "${WORKDIR}/${PN}-${PV}"
-
 inherit autotools
 
 EXTRA_OECONF += "--with-pic"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch
deleted file mode 100644
index 9a7895f..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/files/inline-without-definition.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb
deleted file mode 100644
index 32aca96..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_1.1.4.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb
new file mode 100644
index 0000000..908b98d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libimobiledevice/libimobiledevice_git.bb
@@ -0,0 +1,22 @@
+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 libusbmuxd libtasn1 gnutls libgcrypt"
+
+SRCREV = "fb71aeef10488ed7b0e60a1c8a553193301428c0"
+PV = "1.2.0+git${SRCPV}"
+SRC_URI = "\
+    git://github.com/libimobiledevice/libimobiledevice;protocol=https \
+    file://configure-fix-largefile.patch \
+"
+
+S = "${WORKDIR}/git"
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --without-cython "
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.16.0.bb
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.16.0.bb
index f89ef9d..5260c0f 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.14.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.16.0.bb
@@ -14,5 +14,5 @@
 SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
            file://clang.patch \
 "
-SRC_URI[md5sum] = "2ed809e65c85353d3ab59e372890e549"
-SRC_URI[sha256sum] = "ca8d52a95a18cbabae8f15f83f1572316e888b6504f946e6645d24405127ab5b"
+SRC_URI[md5sum] = "76ea4d8381989919b1d9b91c818fed80"
+SRC_URI[sha256sum] = "c8ca50beeddd4b43309df5b698917268303bf176cea58fe4fe53d5bf0e93fac2"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch b/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch
deleted file mode 100644
index 15aa94e..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp/0001-include-sys-select.h-for-fd_-definitions.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 94e9a082d76414f82794b0c9817d0c24e3868275 Mon Sep 17 00:00:00 2001
-From: Kylie McClain <somasis@exherbo.org>
-Date: Sat, 21 May 2016 21:24:36 -0400
-Subject: [PATCH] ndptool: Fix compilation on musl libc
-
-FD_ZERO, fd_set, etc are defined within sys/select.h on musl.
-
-Signed-off-by: Kylie McClain <somasis@exherbo.org>
-Signed-off-by: Jiri Pirko <jiri@mellanox.com>
----
- utils/ndptool.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/utils/ndptool.c b/utils/ndptool.c
-index 1d96f4c..96479fa 100644
---- a/utils/ndptool.c
-+++ b/utils/ndptool.c
-@@ -28,6 +28,7 @@
- #include <arpa/inet.h>
- #include <errno.h>
- #include <ndp.h>
-+#include <sys/select.h>
- 
- enum verbosity_level {
- 	VERB1,
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.6.bb b/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.7.bb
similarity index 70%
rename from meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.6.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.7.bb
index 5148798..07a7a1d 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.6.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libndp/libndp_1.7.bb
@@ -4,10 +4,9 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
 SRC_URI = "git://github.com/jpirko/libndp \
-           file://0001-include-sys-select.h-for-fd_-definitions.patch \
            "
 # tag for v1.6
-SRCREV = "2f721c4ff519f38f46695a60d9f9d88f35bf3c1d"
+SRCREV = "96674e7d4f4d569c2c961e865cc16152dfab5f09"
 S = "${WORKDIR}/git"
 
 inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb b/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
index dfc2049..c991344 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
@@ -15,6 +15,9 @@
 SRC_URI[md5sum] = "f051e6e5bdecddb90f77c701c2ca1804"
 SRC_URI[sha256sum] = "72c380785ad44183005e654b47cc12485ee0228d7fa6b0a87109ff7614be4a63"
 
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/libnet-dev/files/"
+UPSTREAM_CHECK_REGEX = "libnet-(?P<pver>\d+(\.\d+)+-*[a-z]*\d*)\.tar"
+
 S = "${WORKDIR}/${BPN}-${PV}"
 
 inherit autotools binconfig
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch
new file mode 100644
index 0000000..d230d68
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch
@@ -0,0 +1,41 @@
+From 8269f4d86927fbe19e78776a12736680fe9169b6 Mon Sep 17 00:00:00 2001
+From: Adrian Bunk <bunk@stusta.de>
+Date: Mon, 1 Oct 2018 16:53:31 +0300
+Subject: [PATCH] qmi-network: Don't create invalid --wds-start-network when
+ APN is not set
+
+In 1.20.2 the warning for this was turned into an error.
+
+(cherry picked from commit 289d8ad6419895e2e1fba3d78a54a0db65da521d)
+---
+Upstream-Status: Backport
+
+ utils/qmi-network.in | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/utils/qmi-network.in b/utils/qmi-network.in
+index bf7bed9..a9e5299 100755
+--- a/utils/qmi-network.in
++++ b/utils/qmi-network.in
+@@ -334,11 +334,13 @@ start_network ()
+ 
+     setup_data_format
+ 
+-    START_NETWORK_ARGS="apn='$APN'"
+-    if [ -n "$APN_USER" ]; then
+-        START_NETWORK_ARGS="${START_NETWORK_ARGS},username='$APN_USER'"
+-        if [ -n "$APN_PASS" ]; then
+-            START_NETWORK_ARGS="${START_NETWORK_ARGS},password='$APN_PASS'"
++    if [ -n "$APN" ]; then
++        START_NETWORK_ARGS="apn='$APN'"
++        if [ -n "$APN_USER" ]; then
++            START_NETWORK_ARGS="${START_NETWORK_ARGS},username='$APN_USER'"
++            if [ -n "$APN_PASS" ]; then
++                START_NETWORK_ARGS="${START_NETWORK_ARGS},password='$APN_PASS'"
++            fi
+         fi
+     fi
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.2.bb
similarity index 60%
rename from meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.2.bb
index 9301cbd..f0bc81c 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.2.bb
@@ -7,12 +7,17 @@
     file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
 "
 
-DEPENDS = "glib-2.0 libgudev libmbim glib-2.0-native"
+DEPENDS = "glib-2.0 glib-2.0-native"
 
 inherit autotools pkgconfig bash-completion
 
 SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
+           file://0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch \
            file://0001-Detect-clang.patch \
            "
-SRC_URI[md5sum] = "797e365521df76b77b067e6317618b41"
-SRC_URI[sha256sum] = "21428cd3749c56246565123f707fee51238651a22c60bdc85ebce97388626eb4"
+SRC_URI[md5sum] = "584214476ab75c394160cb85fbccaa1d"
+SRC_URI[sha256sum] = "c73459ca8bfe1213f8047858d4946fc1f58e164d4f488a7a6904edee25e2ca44"
+
+PACKAGECONFIG ??= "udev mbim"
+PACKAGECONFIG[udev] = ",--without-udev,libgudev"
+PACKAGECONFIG[mbim] = "--enable-mbim-qmux,--disable-mbim-qmux,libmbim"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch
index 79d4f29..8d8867a 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/don-t-run-code-while-configuring-package.patch
@@ -4,91 +4,25 @@
 Upstream-Status: Pending
 Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
 
-Index: libtorrent-0.13.3/scripts/checks.m4
+Index: git/scripts/common.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 @@
-
+--- git.orig/scripts/common.m4
++++ git/scripts/common.m4
+@@ -153,7 +153,7 @@ dnl   Need to fix this so that it uses t
  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_COMPILE_IFELSE([AC_LANG_SOURCE([
++  AC_LINK_IFELSE([AC_LANG_SOURCE([
+       #include <execinfo.h>
+       int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;}
+       ])],
+@@ -168,7 +168,7 @@ AC_DEFUN([TORRENT_CHECK_EXECINFO], [
  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)
--  ])
- ])
-
-
++  AC_LINK_IFELSE([AC_LANG_SOURCE([
+       #include <inttypes.h>
+       int main() {
+         char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 };
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
index 92e6528..b2dffcd 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
@@ -11,9 +11,9 @@
            file://0001-implement-64bit-atomic-for-mips.patch \
            file://0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch \
            "
-SRCREV = "c167c5a9e0bcf0df23ae5efd91396aae0e37eb87"
+SRCREV = "074f6ec51a2e4bc5c6140b4dad13c9bb56f3f0dc"
 
-PV = "0.13.6+git${SRCPV}"
+PV = "0.13.7+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.20.3.bb
similarity index 77%
rename from meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.20.3.bb
index ca4685a..a11ff9d 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.11.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.20.3.bb
@@ -2,10 +2,10 @@
 HOMEPAGE = "https://github.com/libuv/libuv"
 BUGTRACKER = "https://github.com/libuv/libuv/issues"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=bb5ea0d651f4c3519327171906045775"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a68902a430e32200263d182d44924d47"
 
 S = "${WORKDIR}/git"
-SRCREV = "7452ef4e06a4f99ee26b694c65476401534f2725"
+SRCREV = "8cfd67e59195251dff793ee47c185c9d6a8f3818"
 BRANCH = "v1.x"
 SRC_URI = "git://github.com/libuv/libuv.git;protocol=https;branch=${BRANCH};"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.0.0.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.0.0.bb
index 100f3a3..f384148 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.0.0.bb
@@ -1,12 +1,12 @@
 SUMMARY = "Canonical libwebsockets.org websocket library"
 HOMEPAGE = "https://libwebsockets.org/"
 LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e3393a657830d4a118c5a6ed35ba53d0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4ce87f3facb6f911c142c8bef9bfb380"
 
 DEPENDS = "zlib"
 
 S = "${WORKDIR}/git"
-SRCREV = "73557509bd15f95a1ad081a6f4fab48ff7743215"
+SRCREV = "eaa935a80adb38b5cc4d09ce06ec987b87dcddfa"
 SRC_URI = "git://github.com/warmcat/libwebsockets.git;protocol=https;"
 
 inherit cmake pkgconfig
@@ -23,5 +23,4 @@
 
 PACKAGES =+ "${PN}-testapps"
 
-FILES_${PN}-dev += "${libdir}/cmake"
 FILES_${PN}-testapps += "${datadir}/libwebsockets-test-server/*"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch
deleted file mode 100644
index a3fb0f3..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/enum-conversion.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Fixes errors found bt Clang
-
-| ../../ModemManager-1.6.4/src/mm-bearer-qmi.c:774:50: error: implicit conversion from enumeration type 'MMBearerStatus' to different enumeration type 'MMBearerConnectionStatus' [-Werror,-Wenum-conversion]
-|         MMBearerConnectionStatus bearer_status = mm_base_bearer_get_status (MM_BASE_BEARER (self));
-|                                  ~~~~~~~~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-| 1 error generated.
-
-
-Index: ModemManager-1.6.4/src/mm-bearer-qmi.c
-===================================================================
---- ModemManager-1.6.4.orig/src/mm-bearer-qmi.c
-+++ ModemManager-1.6.4/src/mm-bearer-qmi.c
-@@ -771,7 +771,7 @@ packet_service_status_indication_cb (Qmi
-             &connection_status,
-             NULL,
-             NULL)) {
--        MMBearerConnectionStatus bearer_status = mm_base_bearer_get_status (MM_BASE_BEARER (self));
-+        MMBearerConnectionStatus bearer_status = (MMBearerConnectionStatus)mm_base_bearer_get_status (MM_BASE_BEARER (self));
- 
-         if (connection_status == QMI_WDS_CONNECTION_STATUS_DISCONNECTED &&
-             bearer_status != MM_BEARER_CONNECTION_STATUS_DISCONNECTED &&
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.8.2.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.8.2.bb
index e60cd4b..dec4b67 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.6.4.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.8.2.bb
@@ -12,10 +12,10 @@
 DEPENDS = "glib-2.0 libgudev dbus-glib intltool-native"
 
 SRC_URI = "http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz \
-           file://enum-conversion.patch \
-"
-SRC_URI[md5sum] = "06488186c7dd53f8104183b86f7a1568"
-SRC_URI[sha256sum] = "cdd5b4cb1e4d7643643a28ccbfc4bb354bfa9cb89a77ea160ebdf7926171c668"
+           "
+
+SRC_URI[md5sum] = "a49c9f73e46c7b89e5efedda250d22c0"
+SRC_URI[sha256sum] = "96f2a5f0ed15532b4c4c185b756fdc0326e7c2027cea26a1264f91e098260f80"
 
 S = "${WORKDIR}/ModemManager-${PV}"
 
@@ -26,10 +26,14 @@
 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"
+PACKAGECONFIG[mbim] = "--with-mbim,--with-mbim=no,libmbim"
 # Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.
 PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi"
 
+EXTRA_OECONF = " \
+    --with-udev-base-dir=${nonarch_base_libdir}/udev \
+"
+
 FILES_${PN} += " \
     ${datadir}/icons \
     ${datadir}/polkit-1 \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch
deleted file mode 100644
index a5aa277..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 0be38301249d797ec1f59071cc868ceda6d4720a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com>
-Date: Tue, 12 Apr 2016 12:50:32 +0100
-Subject: [PATCH 1/2] config.mk: allow prefix / mandir / localedir from
- environment
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We want to control them using OE environment variables.
-
-Upstream-Status: Inappropriate [embedded-specific]
-Signed-off-by: André Draszik <andre.draszik@jci.com>
----
- config.mk | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/config.mk b/config.mk
-index 71f17e5..81d9702 100644
---- a/config.mk
-+++ b/config.mk
-@@ -249,7 +249,7 @@ ifeq ($(WITH_DOCS),yes)
- endif
- 
- INSTALL?=install
--prefix=/usr/local
--mandir=${prefix}/share/man
--localedir=${prefix}/share/locale
-+prefix?=/usr/local
-+mandir?=${prefix}/share/man
-+localedir?=${prefix}/share/locale
- STRIP?=strip
--- 
-2.15.1
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch
deleted file mode 100644
index c89dfe6..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch
+++ /dev/null
@@ -1,975 +0,0 @@
-From d9aeef8d95a325942cc92f4d72415771d75d904c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com>
-Date: Tue, 12 Apr 2016 13:05:10 +0100
-Subject: [PATCH 2/2] uthash: remove in-tree version
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We don't need it as we want to use the version provided by
-meta-oe instead.
-
-Upstream-Status: Inappropriate [embedded-specific]
-Signed-off-by: André Draszik <andre.draszik@jci.com>
----
- src/uthash.h | 948 -----------------------------------------------------------
- 1 file changed, 948 deletions(-)
- delete mode 100644 src/uthash.h
-
-diff --git a/src/uthash.h b/src/uthash.h
-deleted file mode 100644
-index 915a825..0000000
---- a/src/uthash.h
-+++ /dev/null
-@@ -1,948 +0,0 @@
--/*
--Copyright (c) 2003-2013, Troy D. Hanson     http://troydhanson.github.com/uthash/
--All rights reserved.
--
--Redistribution and use in source and binary forms, with or without
--modification, are permitted provided that the following conditions are met:
--
--    * Redistributions of source code must retain the above copyright
--      notice, this list of conditions and the following disclaimer.
--
--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
--TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
--PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
--OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--*/
--
--#ifndef UTHASH_H
--#define UTHASH_H 
--
--#include <string.h>   /* memcmp,strlen */
--#include <stddef.h>   /* ptrdiff_t */
--#include <stdlib.h>   /* exit() */
--
--/* These macros use decltype or the earlier __typeof GNU extension.
--   As decltype is only available in newer compilers (VS2010 or gcc 4.3+
--   when compiling c++ source) this code uses whatever method is needed
--   or, for VS2008 where neither is available, uses casting workarounds. */
--#ifdef _MSC_VER         /* MS compiler */
--#if _MSC_VER >= 1600 && defined(__cplusplus)  /* VS2010 or newer in C++ mode */
--#define DECLTYPE(x) (decltype(x))
--#else                   /* VS2008 or older (or VS2010 in C mode) */
--#define NO_DECLTYPE
--#define DECLTYPE(x)
--#endif
--#else                   /* GNU, Sun and other compilers */
--#define DECLTYPE(x) (__typeof(x))
--#endif
--
--#ifdef NO_DECLTYPE
--#define DECLTYPE_ASSIGN(dst,src)                                                 \
--do {                                                                             \
--  char **_da_dst = (char**)(&(dst));                                             \
--  *_da_dst = (char*)(src);                                                       \
--} while(0)
--#else 
--#define DECLTYPE_ASSIGN(dst,src)                                                 \
--do {                                                                             \
--  (dst) = DECLTYPE(dst)(src);                                                    \
--} while(0)
--#endif
--
--/* a number of the hash function use uint32_t which isn't defined on win32 */
--#ifdef _MSC_VER
--typedef unsigned int uint32_t;
--typedef unsigned char uint8_t;
--#else
--#include <inttypes.h>   /* uint32_t */
--#endif
--
--#define UTHASH_VERSION 1.9.8
--
--#ifndef uthash_fatal
--#define uthash_fatal(msg) exit(-1)        /* fatal error (out of memory,etc) */
--#endif
--#ifndef uthash_malloc
--#define uthash_malloc(sz) malloc(sz)      /* malloc fcn                      */
--#endif
--#ifndef uthash_free
--#define uthash_free(ptr,sz) free(ptr)     /* free fcn                        */
--#endif
--
--#ifndef uthash_noexpand_fyi
--#define uthash_noexpand_fyi(tbl)          /* can be defined to log noexpand  */
--#endif
--#ifndef uthash_expand_fyi
--#define uthash_expand_fyi(tbl)            /* can be defined to log expands   */
--#endif
--
--/* initial number of buckets */
--#define HASH_INITIAL_NUM_BUCKETS 32      /* initial number of buckets        */
--#define HASH_INITIAL_NUM_BUCKETS_LOG2 5  /* lg2 of initial number of buckets */
--#define HASH_BKT_CAPACITY_THRESH 10      /* expand when bucket count reaches */
--
--/* calculate the element whose hash handle address is hhe */
--#define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho)))
--
--#define HASH_FIND(hh,head,keyptr,keylen,out)                                     \
--do {                                                                             \
--  unsigned _hf_bkt,_hf_hashv;                                                    \
--  out=NULL;                                                                      \
--  if (head) {                                                                    \
--     HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt);   \
--     if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) {                           \
--       HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ],  \
--                        keyptr,keylen,out);                                      \
--     }                                                                           \
--  }                                                                              \
--} while (0)
--
--#ifdef HASH_BLOOM
--#define HASH_BLOOM_BITLEN (1ULL << HASH_BLOOM)
--#define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8) + ((HASH_BLOOM_BITLEN%8) ? 1:0)
--#define HASH_BLOOM_MAKE(tbl)                                                     \
--do {                                                                             \
--  (tbl)->bloom_nbits = HASH_BLOOM;                                               \
--  (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN);                 \
--  if (!((tbl)->bloom_bv))  { uthash_fatal( "out of memory"); }                   \
--  memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN);                                \
--  (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE;                                       \
--} while (0) 
--
--#define HASH_BLOOM_FREE(tbl)                                                     \
--do {                                                                             \
--  uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN);                              \
--} while (0) 
--
--#define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8] |= (1U << ((idx)%8)))
--#define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8] & (1U << ((idx)%8)))
--
--#define HASH_BLOOM_ADD(tbl,hashv)                                                \
--  HASH_BLOOM_BITSET((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
--
--#define HASH_BLOOM_TEST(tbl,hashv)                                               \
--  HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
--
--#else
--#define HASH_BLOOM_MAKE(tbl) 
--#define HASH_BLOOM_FREE(tbl) 
--#define HASH_BLOOM_ADD(tbl,hashv) 
--#define HASH_BLOOM_TEST(tbl,hashv) (1)
--#define HASH_BLOOM_BYTELEN 0
--#endif
--
--#define HASH_MAKE_TABLE(hh,head)                                                 \
--do {                                                                             \
--  (head)->hh.tbl = (UT_hash_table*)uthash_malloc(                                \
--                  sizeof(UT_hash_table));                                        \
--  if (!((head)->hh.tbl))  { uthash_fatal( "out of memory"); }                    \
--  memset((head)->hh.tbl, 0, sizeof(UT_hash_table));                              \
--  (head)->hh.tbl->tail = &((head)->hh);                                          \
--  (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS;                        \
--  (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2;              \
--  (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head);                    \
--  (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc(                      \
--          HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket));               \
--  if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); }             \
--  memset((head)->hh.tbl->buckets, 0,                                             \
--          HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket));               \
--  HASH_BLOOM_MAKE((head)->hh.tbl);                                               \
--  (head)->hh.tbl->signature = HASH_SIGNATURE;                                    \
--} while(0)
--
--#define HASH_ADD(hh,head,fieldname,keylen_in,add)                                \
--        HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
--
--#define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced)                   \
--do {                                                                             \
--  replaced=NULL;                                                                 \
--  HASH_FIND(hh,head,&((add)->fieldname),keylen_in,replaced);                     \
--  if (replaced!=NULL) {                                                          \
--     HASH_DELETE(hh,head,replaced);                                              \
--  };                                                                             \
--  HASH_ADD(hh,head,fieldname,keylen_in,add);                                     \
--} while(0)
-- 
--#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add)                            \
--do {                                                                             \
-- unsigned _ha_bkt;                                                               \
-- (add)->hh.next = NULL;                                                          \
-- (add)->hh.key = (char*)keyptr;                                                  \
-- (add)->hh.keylen = (unsigned)keylen_in;                                                   \
-- if (!(head)) {                                                                  \
--    head = (add);                                                                \
--    (head)->hh.prev = NULL;                                                      \
--    HASH_MAKE_TABLE(hh,head);                                                    \
-- } else {                                                                        \
--    (head)->hh.tbl->tail->next = (add);                                          \
--    (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail);         \
--    (head)->hh.tbl->tail = &((add)->hh);                                         \
-- }                                                                               \
-- (head)->hh.tbl->num_items++;                                                    \
-- (add)->hh.tbl = (head)->hh.tbl;                                                 \
-- HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets,                         \
--         (add)->hh.hashv, _ha_bkt);                                              \
-- HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh);                   \
-- HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv);                                 \
-- HASH_EMIT_KEY(hh,head,keyptr,keylen_in);                                        \
-- HASH_FSCK(hh,head);                                                             \
--} while(0)
--
--#define HASH_TO_BKT( hashv, num_bkts, bkt )                                      \
--do {                                                                             \
--  bkt = ((hashv) & ((num_bkts) - 1));                                            \
--} while(0)
--
--/* delete "delptr" from the hash table.
-- * "the usual" patch-up process for the app-order doubly-linked-list.
-- * The use of _hd_hh_del below deserves special explanation.
-- * These used to be expressed using (delptr) but that led to a bug
-- * if someone used the same symbol for the head and deletee, like
-- *  HASH_DELETE(hh,users,users);
-- * We want that to work, but by changing the head (users) below
-- * we were forfeiting our ability to further refer to the deletee (users)
-- * in the patch-up process. Solution: use scratch space to
-- * copy the deletee pointer, then the latter references are via that
-- * scratch pointer rather than through the repointed (users) symbol.
-- */
--#define HASH_DELETE(hh,head,delptr)                                              \
--do {                                                                             \
--    unsigned _hd_bkt;                                                            \
--    struct UT_hash_handle *_hd_hh_del;                                           \
--    if ( ((delptr)->hh.prev == NULL) && ((delptr)->hh.next == NULL) )  {         \
--        uthash_free((head)->hh.tbl->buckets,                                     \
--                    (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
--        HASH_BLOOM_FREE((head)->hh.tbl);                                         \
--        uthash_free((head)->hh.tbl, sizeof(UT_hash_table));                      \
--        head = NULL;                                                             \
--    } else {                                                                     \
--        _hd_hh_del = &((delptr)->hh);                                            \
--        if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) {     \
--            (head)->hh.tbl->tail =                                               \
--                (UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) +               \
--                (head)->hh.tbl->hho);                                            \
--        }                                                                        \
--        if ((delptr)->hh.prev) {                                                 \
--            ((UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) +                  \
--                    (head)->hh.tbl->hho))->next = (delptr)->hh.next;             \
--        } else {                                                                 \
--            DECLTYPE_ASSIGN(head,(delptr)->hh.next);                             \
--        }                                                                        \
--        if (_hd_hh_del->next) {                                                  \
--            ((UT_hash_handle*)((ptrdiff_t)_hd_hh_del->next +                     \
--                    (head)->hh.tbl->hho))->prev =                                \
--                    _hd_hh_del->prev;                                            \
--        }                                                                        \
--        HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt);   \
--        HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del);        \
--        (head)->hh.tbl->num_items--;                                             \
--    }                                                                            \
--    HASH_FSCK(hh,head);                                                          \
--} while (0)
--
--
--/* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */
--#define HASH_FIND_STR(head,findstr,out)                                          \
--    HASH_FIND(hh,head,findstr,strlen(findstr),out)
--#define HASH_ADD_STR(head,strfield,add)                                          \
--    HASH_ADD(hh,head,strfield,strlen(add->strfield),add)
--#define HASH_REPLACE_STR(head,strfield,add,replaced)                             \
--  HASH_REPLACE(hh,head,strfield,strlen(add->strfield),add,replaced)
--#define HASH_FIND_INT(head,findint,out)                                          \
--    HASH_FIND(hh,head,findint,sizeof(int),out)
--#define HASH_ADD_INT(head,intfield,add)                                          \
--    HASH_ADD(hh,head,intfield,sizeof(int),add)
--#define HASH_REPLACE_INT(head,intfield,add,replaced)                             \
--    HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
--#define HASH_FIND_PTR(head,findptr,out)                                          \
--    HASH_FIND(hh,head,findptr,sizeof(void *),out)
--#define HASH_ADD_PTR(head,ptrfield,add)                                          \
--    HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
--#define HASH_REPLACE_PTR(head,ptrfield,add)                                      \
--    HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
--#define HASH_DEL(head,delptr)                                                    \
--    HASH_DELETE(hh,head,delptr)
--
--/* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined.
-- * This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined.
-- */
--#ifdef HASH_DEBUG
--#define HASH_OOPS(...) do { fprintf(stderr,__VA_ARGS__); exit(-1); } while (0)
--#define HASH_FSCK(hh,head)                                                       \
--do {                                                                             \
--    unsigned _bkt_i;                                                             \
--    unsigned _count, _bkt_count;                                                 \
--    char *_prev;                                                                 \
--    struct UT_hash_handle *_thh;                                                 \
--    if (head) {                                                                  \
--        _count = 0;                                                              \
--        for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) {       \
--            _bkt_count = 0;                                                      \
--            _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head;                      \
--            _prev = NULL;                                                        \
--            while (_thh) {                                                       \
--               if (_prev != (char*)(_thh->hh_prev)) {                            \
--                   HASH_OOPS("invalid hh_prev %p, actual %p\n",                  \
--                    _thh->hh_prev, _prev );                                      \
--               }                                                                 \
--               _bkt_count++;                                                     \
--               _prev = (char*)(_thh);                                            \
--               _thh = _thh->hh_next;                                             \
--            }                                                                    \
--            _count += _bkt_count;                                                \
--            if ((head)->hh.tbl->buckets[_bkt_i].count !=  _bkt_count) {          \
--               HASH_OOPS("invalid bucket count %d, actual %d\n",                 \
--                (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count);              \
--            }                                                                    \
--        }                                                                        \
--        if (_count != (head)->hh.tbl->num_items) {                               \
--            HASH_OOPS("invalid hh item count %d, actual %d\n",                   \
--                (head)->hh.tbl->num_items, _count );                             \
--        }                                                                        \
--        /* traverse hh in app order; check next/prev integrity, count */         \
--        _count = 0;                                                              \
--        _prev = NULL;                                                            \
--        _thh =  &(head)->hh;                                                     \
--        while (_thh) {                                                           \
--           _count++;                                                             \
--           if (_prev !=(char*)(_thh->prev)) {                                    \
--              HASH_OOPS("invalid prev %p, actual %p\n",                          \
--                    _thh->prev, _prev );                                         \
--           }                                                                     \
--           _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh);                    \
--           _thh = ( _thh->next ?  (UT_hash_handle*)((char*)(_thh->next) +        \
--                                  (head)->hh.tbl->hho) : NULL );                 \
--        }                                                                        \
--        if (_count != (head)->hh.tbl->num_items) {                               \
--            HASH_OOPS("invalid app item count %d, actual %d\n",                  \
--                (head)->hh.tbl->num_items, _count );                             \
--        }                                                                        \
--    }                                                                            \
--} while (0)
--#else
--#define HASH_FSCK(hh,head) 
--#endif
--
--/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to 
-- * the descriptor to which this macro is defined for tuning the hash function.
-- * The app can #include <unistd.h> to get the prototype for write(2). */
--#ifdef HASH_EMIT_KEYS
--#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)                                   \
--do {                                                                             \
--    unsigned _klen = fieldlen;                                                   \
--    write(HASH_EMIT_KEYS, &_klen, sizeof(_klen));                                \
--    write(HASH_EMIT_KEYS, keyptr, fieldlen);                                     \
--} while (0)
--#else 
--#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)                    
--#endif
--
--/* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */
--#ifdef HASH_FUNCTION 
--#define HASH_FCN HASH_FUNCTION
--#else
--#define HASH_FCN HASH_JEN
--#endif
--
--/* The Bernstein hash function, used in Perl prior to v5.6 */
--#define HASH_BER(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _hb_keylen=keylen;                                                    \
--  char *_hb_key=(char*)(key);                                                    \
--  (hashv) = 0;                                                                   \
--  while (_hb_keylen--)  { (hashv) = ((hashv) * 33) + *_hb_key++; }               \
--  bkt = (hashv) & (num_bkts-1);                                                  \
--} while (0)
--
--
--/* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at 
-- * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx */
--#define HASH_SAX(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _sx_i;                                                                \
--  char *_hs_key=(char*)(key);                                                    \
--  hashv = 0;                                                                     \
--  for(_sx_i=0; _sx_i < keylen; _sx_i++)                                          \
--      hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i];                     \
--  bkt = hashv & (num_bkts-1);                                                    \
--} while (0)
--
--#define HASH_FNV(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _fn_i;                                                                \
--  char *_hf_key=(char*)(key);                                                    \
--  hashv = 2166136261UL;                                                          \
--  for(_fn_i=0; _fn_i < keylen; _fn_i++)                                          \
--      hashv = (hashv * 16777619) ^ _hf_key[_fn_i];                               \
--  bkt = hashv & (num_bkts-1);                                                    \
--} while(0) 
-- 
--#define HASH_OAT(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _ho_i;                                                                \
--  char *_ho_key=(char*)(key);                                                    \
--  hashv = 0;                                                                     \
--  for(_ho_i=0; _ho_i < keylen; _ho_i++) {                                        \
--      hashv += _ho_key[_ho_i];                                                   \
--      hashv += (hashv << 10);                                                    \
--      hashv ^= (hashv >> 6);                                                     \
--  }                                                                              \
--  hashv += (hashv << 3);                                                         \
--  hashv ^= (hashv >> 11);                                                        \
--  hashv += (hashv << 15);                                                        \
--  bkt = hashv & (num_bkts-1);                                                    \
--} while(0)
--
--#define HASH_JEN_MIX(a,b,c)                                                      \
--do {                                                                             \
--  a -= b; a -= c; a ^= ( c >> 13 );                                              \
--  b -= c; b -= a; b ^= ( a << 8 );                                               \
--  c -= a; c -= b; c ^= ( b >> 13 );                                              \
--  a -= b; a -= c; a ^= ( c >> 12 );                                              \
--  b -= c; b -= a; b ^= ( a << 16 );                                              \
--  c -= a; c -= b; c ^= ( b >> 5 );                                               \
--  a -= b; a -= c; a ^= ( c >> 3 );                                               \
--  b -= c; b -= a; b ^= ( a << 10 );                                              \
--  c -= a; c -= b; c ^= ( b >> 15 );                                              \
--} while (0)
--
--#define HASH_JEN(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _hj_i,_hj_j,_hj_k;                                                    \
--  unsigned char *_hj_key=(unsigned char*)(key);                                  \
--  hashv = 0xfeedbeef;                                                            \
--  _hj_i = _hj_j = 0x9e3779b9;                                                    \
--  _hj_k = (unsigned)keylen;                                                      \
--  while (_hj_k >= 12) {                                                          \
--    _hj_i +=    (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 )                      \
--        + ( (unsigned)_hj_key[2] << 16 )                                         \
--        + ( (unsigned)_hj_key[3] << 24 ) );                                      \
--    _hj_j +=    (_hj_key[4] + ( (unsigned)_hj_key[5] << 8 )                      \
--        + ( (unsigned)_hj_key[6] << 16 )                                         \
--        + ( (unsigned)_hj_key[7] << 24 ) );                                      \
--    hashv += (_hj_key[8] + ( (unsigned)_hj_key[9] << 8 )                         \
--        + ( (unsigned)_hj_key[10] << 16 )                                        \
--        + ( (unsigned)_hj_key[11] << 24 ) );                                     \
--                                                                                 \
--     HASH_JEN_MIX(_hj_i, _hj_j, hashv);                                          \
--                                                                                 \
--     _hj_key += 12;                                                              \
--     _hj_k -= 12;                                                                \
--  }                                                                              \
--  hashv += keylen;                                                               \
--  switch ( _hj_k ) {                                                             \
--     case 11: hashv += ( (unsigned)_hj_key[10] << 24 );                          \
--     case 10: hashv += ( (unsigned)_hj_key[9] << 16 );                           \
--     case 9:  hashv += ( (unsigned)_hj_key[8] << 8 );                            \
--     case 8:  _hj_j += ( (unsigned)_hj_key[7] << 24 );                           \
--     case 7:  _hj_j += ( (unsigned)_hj_key[6] << 16 );                           \
--     case 6:  _hj_j += ( (unsigned)_hj_key[5] << 8 );                            \
--     case 5:  _hj_j += _hj_key[4];                                               \
--     case 4:  _hj_i += ( (unsigned)_hj_key[3] << 24 );                           \
--     case 3:  _hj_i += ( (unsigned)_hj_key[2] << 16 );                           \
--     case 2:  _hj_i += ( (unsigned)_hj_key[1] << 8 );                            \
--     case 1:  _hj_i += _hj_key[0];                                               \
--  }                                                                              \
--  HASH_JEN_MIX(_hj_i, _hj_j, hashv);                                             \
--  bkt = hashv & (num_bkts-1);                                                    \
--} while(0)
--
--/* The Paul Hsieh hash function */
--#undef get16bits
--#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__)             \
--  || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
--#define get16bits(d) (*((const uint16_t *) (d)))
--#endif
--
--#if !defined (get16bits)
--#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)             \
--                       +(uint32_t)(((const uint8_t *)(d))[0]) )
--#endif
--#define HASH_SFH(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned char *_sfh_key=(unsigned char*)(key);                                 \
--  uint32_t _sfh_tmp, _sfh_len = keylen;                                          \
--                                                                                 \
--  int _sfh_rem = _sfh_len & 3;                                                   \
--  _sfh_len >>= 2;                                                                \
--  hashv = 0xcafebabe;                                                            \
--                                                                                 \
--  /* Main loop */                                                                \
--  for (;_sfh_len > 0; _sfh_len--) {                                              \
--    hashv    += get16bits (_sfh_key);                                            \
--    _sfh_tmp       = (uint32_t)(get16bits (_sfh_key+2)) << 11  ^ hashv;          \
--    hashv     = (hashv << 16) ^ _sfh_tmp;                                        \
--    _sfh_key += 2*sizeof (uint16_t);                                             \
--    hashv    += hashv >> 11;                                                     \
--  }                                                                              \
--                                                                                 \
--  /* Handle end cases */                                                         \
--  switch (_sfh_rem) {                                                            \
--    case 3: hashv += get16bits (_sfh_key);                                       \
--            hashv ^= hashv << 16;                                                \
--            hashv ^= (uint32_t)(_sfh_key[sizeof (uint16_t)] << 18);              \
--            hashv += hashv >> 11;                                                \
--            break;                                                               \
--    case 2: hashv += get16bits (_sfh_key);                                       \
--            hashv ^= hashv << 11;                                                \
--            hashv += hashv >> 17;                                                \
--            break;                                                               \
--    case 1: hashv += *_sfh_key;                                                  \
--            hashv ^= hashv << 10;                                                \
--            hashv += hashv >> 1;                                                 \
--  }                                                                              \
--                                                                                 \
--    /* Force "avalanching" of final 127 bits */                                  \
--    hashv ^= hashv << 3;                                                         \
--    hashv += hashv >> 5;                                                         \
--    hashv ^= hashv << 4;                                                         \
--    hashv += hashv >> 17;                                                        \
--    hashv ^= hashv << 25;                                                        \
--    hashv += hashv >> 6;                                                         \
--    bkt = hashv & (num_bkts-1);                                                  \
--} while(0) 
--
--#ifdef HASH_USING_NO_STRICT_ALIASING
--/* The MurmurHash exploits some CPU's (x86,x86_64) tolerance for unaligned reads.
-- * For other types of CPU's (e.g. Sparc) an unaligned read causes a bus error.
-- * MurmurHash uses the faster approach only on CPU's where we know it's safe. 
-- *
-- * Note the preprocessor built-in defines can be emitted using:
-- *
-- *   gcc -m64 -dM -E - < /dev/null                  (on gcc)
-- *   cc -## a.c (where a.c is a simple test file)   (Sun Studio)
-- */
--#if (defined(__i386__) || defined(__x86_64__)  || defined(_M_IX86))
--#define MUR_GETBLOCK(p,i) p[i]
--#else /* non intel */
--#define MUR_PLUS0_ALIGNED(p) (((unsigned long)p & 0x3) == 0)
--#define MUR_PLUS1_ALIGNED(p) (((unsigned long)p & 0x3) == 1)
--#define MUR_PLUS2_ALIGNED(p) (((unsigned long)p & 0x3) == 2)
--#define MUR_PLUS3_ALIGNED(p) (((unsigned long)p & 0x3) == 3)
--#define WP(p) ((uint32_t*)((unsigned long)(p) & ~3UL))
--#if (defined(__BIG_ENDIAN__) || defined(SPARC) || defined(__ppc__) || defined(__ppc64__))
--#define MUR_THREE_ONE(p) ((((*WP(p))&0x00ffffff) << 8) | (((*(WP(p)+1))&0xff000000) >> 24))
--#define MUR_TWO_TWO(p)   ((((*WP(p))&0x0000ffff) <<16) | (((*(WP(p)+1))&0xffff0000) >> 16))
--#define MUR_ONE_THREE(p) ((((*WP(p))&0x000000ff) <<24) | (((*(WP(p)+1))&0xffffff00) >>  8))
--#else /* assume little endian non-intel */
--#define MUR_THREE_ONE(p) ((((*WP(p))&0xffffff00) >> 8) | (((*(WP(p)+1))&0x000000ff) << 24))
--#define MUR_TWO_TWO(p)   ((((*WP(p))&0xffff0000) >>16) | (((*(WP(p)+1))&0x0000ffff) << 16))
--#define MUR_ONE_THREE(p) ((((*WP(p))&0xff000000) >>24) | (((*(WP(p)+1))&0x00ffffff) <<  8))
--#endif
--#define MUR_GETBLOCK(p,i) (MUR_PLUS0_ALIGNED(p) ? ((p)[i]) :           \
--                            (MUR_PLUS1_ALIGNED(p) ? MUR_THREE_ONE(p) : \
--                             (MUR_PLUS2_ALIGNED(p) ? MUR_TWO_TWO(p) :  \
--                                                      MUR_ONE_THREE(p))))
--#endif
--#define MUR_ROTL32(x,r) (((x) << (r)) | ((x) >> (32 - (r))))
--#define MUR_FMIX(_h) \
--do {                 \
--  _h ^= _h >> 16;    \
--  _h *= 0x85ebca6b;  \
--  _h ^= _h >> 13;    \
--  _h *= 0xc2b2ae35l; \
--  _h ^= _h >> 16;    \
--} while(0)
--
--#define HASH_MUR(key,keylen,num_bkts,hashv,bkt)                        \
--do {                                                                   \
--  const uint8_t *_mur_data = (const uint8_t*)(key);                    \
--  const int _mur_nblocks = (keylen) / 4;                               \
--  uint32_t _mur_h1 = 0xf88D5353;                                       \
--  uint32_t _mur_c1 = 0xcc9e2d51;                                       \
--  uint32_t _mur_c2 = 0x1b873593;                                       \
--  uint32_t _mur_k1 = 0;                                                \
--  const uint8_t *_mur_tail;                                            \
--  const uint32_t *_mur_blocks = (const uint32_t*)(_mur_data+_mur_nblocks*4); \
--  int _mur_i;                                                          \
--  for(_mur_i = -_mur_nblocks; _mur_i; _mur_i++) {                      \
--    _mur_k1 = MUR_GETBLOCK(_mur_blocks,_mur_i);                        \
--    _mur_k1 *= _mur_c1;                                                \
--    _mur_k1 = MUR_ROTL32(_mur_k1,15);                                  \
--    _mur_k1 *= _mur_c2;                                                \
--                                                                       \
--    _mur_h1 ^= _mur_k1;                                                \
--    _mur_h1 = MUR_ROTL32(_mur_h1,13);                                  \
--    _mur_h1 = _mur_h1*5+0xe6546b64;                                    \
--  }                                                                    \
--  _mur_tail = (const uint8_t*)(_mur_data + _mur_nblocks*4);            \
--  _mur_k1=0;                                                           \
--  switch((keylen) & 3) {                                               \
--    case 3: _mur_k1 ^= _mur_tail[2] << 16;                             \
--    case 2: _mur_k1 ^= _mur_tail[1] << 8;                              \
--    case 1: _mur_k1 ^= _mur_tail[0];                                   \
--    _mur_k1 *= _mur_c1;                                                \
--    _mur_k1 = MUR_ROTL32(_mur_k1,15);                                  \
--    _mur_k1 *= _mur_c2;                                                \
--    _mur_h1 ^= _mur_k1;                                                \
--  }                                                                    \
--  _mur_h1 ^= (keylen);                                                 \
--  MUR_FMIX(_mur_h1);                                                   \
--  hashv = _mur_h1;                                                     \
--  bkt = hashv & (num_bkts-1);                                          \
--} while(0)
--#endif  /* HASH_USING_NO_STRICT_ALIASING */
--
--/* key comparison function; return 0 if keys equal */
--#define HASH_KEYCMP(a,b,len) memcmp(a,b,len) 
--
--/* iterate over items in a known bucket to find desired item */
--#define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out)                       \
--do {                                                                             \
-- if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head));          \
-- else out=NULL;                                                                  \
-- while (out) {                                                                   \
--    if ((out)->hh.keylen == keylen_in) {                                           \
--        if ((HASH_KEYCMP((out)->hh.key,keyptr,keylen_in)) == 0) break;             \
--    }                                                                            \
--    if ((out)->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,(out)->hh.hh_next)); \
--    else out = NULL;                                                             \
-- }                                                                               \
--} while(0)
--
--/* add an item to a bucket  */
--#define HASH_ADD_TO_BKT(head,addhh)                                              \
--do {                                                                             \
-- head.count++;                                                                   \
-- (addhh)->hh_next = head.hh_head;                                                \
-- (addhh)->hh_prev = NULL;                                                        \
-- if (head.hh_head) { (head).hh_head->hh_prev = (addhh); }                        \
-- (head).hh_head=addhh;                                                           \
-- if (head.count >= ((head.expand_mult+1) * HASH_BKT_CAPACITY_THRESH)             \
--     && (addhh)->tbl->noexpand != 1) {                                           \
--       HASH_EXPAND_BUCKETS((addhh)->tbl);                                        \
-- }                                                                               \
--} while(0)
--
--/* remove an item from a given bucket */
--#define HASH_DEL_IN_BKT(hh,head,hh_del)                                          \
--    (head).count--;                                                              \
--    if ((head).hh_head == hh_del) {                                              \
--      (head).hh_head = hh_del->hh_next;                                          \
--    }                                                                            \
--    if (hh_del->hh_prev) {                                                       \
--        hh_del->hh_prev->hh_next = hh_del->hh_next;                              \
--    }                                                                            \
--    if (hh_del->hh_next) {                                                       \
--        hh_del->hh_next->hh_prev = hh_del->hh_prev;                              \
--    }                                                                
--
--/* Bucket expansion has the effect of doubling the number of buckets
-- * and redistributing the items into the new buckets. Ideally the
-- * items will distribute more or less evenly into the new buckets
-- * (the extent to which this is true is a measure of the quality of
-- * the hash function as it applies to the key domain). 
-- * 
-- * With the items distributed into more buckets, the chain length
-- * (item count) in each bucket is reduced. Thus by expanding buckets
-- * the hash keeps a bound on the chain length. This bounded chain 
-- * length is the essence of how a hash provides constant time lookup.
-- * 
-- * The calculation of tbl->ideal_chain_maxlen below deserves some
-- * explanation. First, keep in mind that we're calculating the ideal
-- * maximum chain length based on the *new* (doubled) bucket count.
-- * In fractions this is just n/b (n=number of items,b=new num buckets).
-- * Since the ideal chain length is an integer, we want to calculate 
-- * ceil(n/b). We don't depend on floating point arithmetic in this
-- * hash, so to calculate ceil(n/b) with integers we could write
-- * 
-- *      ceil(n/b) = (n/b) + ((n%b)?1:0)
-- * 
-- * and in fact a previous version of this hash did just that.
-- * But now we have improved things a bit by recognizing that b is
-- * always a power of two. We keep its base 2 log handy (call it lb),
-- * so now we can write this with a bit shift and logical AND:
-- * 
-- *      ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0)
-- * 
-- */
--#define HASH_EXPAND_BUCKETS(tbl)                                                 \
--do {                                                                             \
--    unsigned _he_bkt;                                                            \
--    unsigned _he_bkt_i;                                                          \
--    struct UT_hash_handle *_he_thh, *_he_hh_nxt;                                 \
--    UT_hash_bucket *_he_new_buckets, *_he_newbkt;                                \
--    _he_new_buckets = (UT_hash_bucket*)uthash_malloc(                            \
--             2 * tbl->num_buckets * sizeof(struct UT_hash_bucket));              \
--    if (!_he_new_buckets) { uthash_fatal( "out of memory"); }                    \
--    memset(_he_new_buckets, 0,                                                   \
--            2 * tbl->num_buckets * sizeof(struct UT_hash_bucket));               \
--    tbl->ideal_chain_maxlen =                                                    \
--       (tbl->num_items >> (tbl->log2_num_buckets+1)) +                           \
--       ((tbl->num_items & ((tbl->num_buckets*2)-1)) ? 1 : 0);                    \
--    tbl->nonideal_items = 0;                                                     \
--    for(_he_bkt_i = 0; _he_bkt_i < tbl->num_buckets; _he_bkt_i++)                \
--    {                                                                            \
--        _he_thh = tbl->buckets[ _he_bkt_i ].hh_head;                             \
--        while (_he_thh) {                                                        \
--           _he_hh_nxt = _he_thh->hh_next;                                        \
--           HASH_TO_BKT( _he_thh->hashv, tbl->num_buckets*2, _he_bkt);            \
--           _he_newbkt = &(_he_new_buckets[ _he_bkt ]);                           \
--           if (++(_he_newbkt->count) > tbl->ideal_chain_maxlen) {                \
--             tbl->nonideal_items++;                                              \
--             _he_newbkt->expand_mult = _he_newbkt->count /                       \
--                                        tbl->ideal_chain_maxlen;                 \
--           }                                                                     \
--           _he_thh->hh_prev = NULL;                                              \
--           _he_thh->hh_next = _he_newbkt->hh_head;                               \
--           if (_he_newbkt->hh_head) _he_newbkt->hh_head->hh_prev =               \
--                _he_thh;                                                         \
--           _he_newbkt->hh_head = _he_thh;                                        \
--           _he_thh = _he_hh_nxt;                                                 \
--        }                                                                        \
--    }                                                                            \
--    uthash_free( tbl->buckets, tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
--    tbl->num_buckets *= 2;                                                       \
--    tbl->log2_num_buckets++;                                                     \
--    tbl->buckets = _he_new_buckets;                                              \
--    tbl->ineff_expands = (tbl->nonideal_items > (tbl->num_items >> 1)) ?         \
--        (tbl->ineff_expands+1) : 0;                                              \
--    if (tbl->ineff_expands > 1) {                                                \
--        tbl->noexpand=1;                                                         \
--        uthash_noexpand_fyi(tbl);                                                \
--    }                                                                            \
--    uthash_expand_fyi(tbl);                                                      \
--} while(0)
--
--
--/* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */
--/* Note that HASH_SORT assumes the hash handle name to be hh. 
-- * HASH_SRT was added to allow the hash handle name to be passed in. */
--#define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn)
--#define HASH_SRT(hh,head,cmpfcn)                                                 \
--do {                                                                             \
--  unsigned _hs_i;                                                                \
--  unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize;               \
--  struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail;            \
--  if (head) {                                                                    \
--      _hs_insize = 1;                                                            \
--      _hs_looping = 1;                                                           \
--      _hs_list = &((head)->hh);                                                  \
--      while (_hs_looping) {                                                      \
--          _hs_p = _hs_list;                                                      \
--          _hs_list = NULL;                                                       \
--          _hs_tail = NULL;                                                       \
--          _hs_nmerges = 0;                                                       \
--          while (_hs_p) {                                                        \
--              _hs_nmerges++;                                                     \
--              _hs_q = _hs_p;                                                     \
--              _hs_psize = 0;                                                     \
--              for ( _hs_i = 0; _hs_i  < _hs_insize; _hs_i++ ) {                  \
--                  _hs_psize++;                                                   \
--                  _hs_q = (UT_hash_handle*)((_hs_q->next) ?                      \
--                          ((void*)((char*)(_hs_q->next) +                        \
--                          (head)->hh.tbl->hho)) : NULL);                         \
--                  if (! (_hs_q) ) break;                                         \
--              }                                                                  \
--              _hs_qsize = _hs_insize;                                            \
--              while ((_hs_psize > 0) || ((_hs_qsize > 0) && _hs_q )) {           \
--                  if (_hs_psize == 0) {                                          \
--                      _hs_e = _hs_q;                                             \
--                      _hs_q = (UT_hash_handle*)((_hs_q->next) ?                  \
--                              ((void*)((char*)(_hs_q->next) +                    \
--                              (head)->hh.tbl->hho)) : NULL);                     \
--                      _hs_qsize--;                                               \
--                  } else if ( (_hs_qsize == 0) || !(_hs_q) ) {                   \
--                      _hs_e = _hs_p;                                             \
--                      if (_hs_p){                                                \
--                        _hs_p = (UT_hash_handle*)((_hs_p->next) ?                \
--                                ((void*)((char*)(_hs_p->next) +                  \
--                                (head)->hh.tbl->hho)) : NULL);                   \
--                       }                                                         \
--                      _hs_psize--;                                               \
--                  } else if ((                                                   \
--                      cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \
--                             DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \
--                             ) <= 0) {                                           \
--                      _hs_e = _hs_p;                                             \
--                      if (_hs_p){                                                \
--                        _hs_p = (UT_hash_handle*)((_hs_p->next) ?                \
--                               ((void*)((char*)(_hs_p->next) +                   \
--                               (head)->hh.tbl->hho)) : NULL);                    \
--                       }                                                         \
--                      _hs_psize--;                                               \
--                  } else {                                                       \
--                      _hs_e = _hs_q;                                             \
--                      _hs_q = (UT_hash_handle*)((_hs_q->next) ?                  \
--                              ((void*)((char*)(_hs_q->next) +                    \
--                              (head)->hh.tbl->hho)) : NULL);                     \
--                      _hs_qsize--;                                               \
--                  }                                                              \
--                  if ( _hs_tail ) {                                              \
--                      _hs_tail->next = ((_hs_e) ?                                \
--                            ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL);          \
--                  } else {                                                       \
--                      _hs_list = _hs_e;                                          \
--                  }                                                              \
--                  if (_hs_e) {                                                   \
--                  _hs_e->prev = ((_hs_tail) ?                                    \
--                     ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL);              \
--                  }                                                              \
--                  _hs_tail = _hs_e;                                              \
--              }                                                                  \
--              _hs_p = _hs_q;                                                     \
--          }                                                                      \
--          if (_hs_tail){                                                         \
--            _hs_tail->next = NULL;                                               \
--          }                                                                      \
--          if ( _hs_nmerges <= 1 ) {                                              \
--              _hs_looping=0;                                                     \
--              (head)->hh.tbl->tail = _hs_tail;                                   \
--              DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list));      \
--          }                                                                      \
--          _hs_insize *= 2;                                                       \
--      }                                                                          \
--      HASH_FSCK(hh,head);                                                        \
-- }                                                                               \
--} while (0)
--
--/* This function selects items from one hash into another hash. 
-- * The end result is that the selected items have dual presence 
-- * in both hashes. There is no copy of the items made; rather 
-- * they are added into the new hash through a secondary hash 
-- * hash handle that must be present in the structure. */
--#define HASH_SELECT(hh_dst, dst, hh_src, src, cond)                              \
--do {                                                                             \
--  unsigned _src_bkt, _dst_bkt;                                                   \
--  void *_last_elt=NULL, *_elt;                                                   \
--  UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL;                         \
--  ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst));                 \
--  if (src) {                                                                     \
--    for(_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) {     \
--      for(_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head;                \
--          _src_hh;                                                               \
--          _src_hh = _src_hh->hh_next) {                                          \
--          _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh);                       \
--          if (cond(_elt)) {                                                      \
--            _dst_hh = (UT_hash_handle*)(((char*)_elt) + _dst_hho);               \
--            _dst_hh->key = _src_hh->key;                                         \
--            _dst_hh->keylen = _src_hh->keylen;                                   \
--            _dst_hh->hashv = _src_hh->hashv;                                     \
--            _dst_hh->prev = _last_elt;                                           \
--            _dst_hh->next = NULL;                                                \
--            if (_last_elt_hh) { _last_elt_hh->next = _elt; }                     \
--            if (!dst) {                                                          \
--              DECLTYPE_ASSIGN(dst,_elt);                                         \
--              HASH_MAKE_TABLE(hh_dst,dst);                                       \
--            } else {                                                             \
--              _dst_hh->tbl = (dst)->hh_dst.tbl;                                  \
--            }                                                                    \
--            HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt);    \
--            HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt],_dst_hh);            \
--            (dst)->hh_dst.tbl->num_items++;                                      \
--            _last_elt = _elt;                                                    \
--            _last_elt_hh = _dst_hh;                                              \
--          }                                                                      \
--      }                                                                          \
--    }                                                                            \
--  }                                                                              \
--  HASH_FSCK(hh_dst,dst);                                                         \
--} while (0)
--
--#define HASH_CLEAR(hh,head)                                                      \
--do {                                                                             \
--  if (head) {                                                                    \
--    uthash_free((head)->hh.tbl->buckets,                                         \
--                (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket));      \
--    HASH_BLOOM_FREE((head)->hh.tbl);                                             \
--    uthash_free((head)->hh.tbl, sizeof(UT_hash_table));                          \
--    (head)=NULL;                                                                 \
--  }                                                                              \
--} while(0)
--
--#define HASH_OVERHEAD(hh,head)                                                   \
-- (size_t)((((head)->hh.tbl->num_items   * sizeof(UT_hash_handle))   +            \
--           ((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket))   +            \
--            (sizeof(UT_hash_table))                                 +            \
--            (HASH_BLOOM_BYTELEN)))
--
--#ifdef NO_DECLTYPE
--#define HASH_ITER(hh,head,el,tmp)                                                \
--for((el)=(head), (*(char**)(&(tmp)))=(char*)((head)?(head)->hh.next:NULL);       \
--  el; (el)=(tmp),(*(char**)(&(tmp)))=(char*)((tmp)?(tmp)->hh.next:NULL)) 
--#else
--#define HASH_ITER(hh,head,el,tmp)                                                \
--for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL);                 \
--  el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL))
--#endif
--
--/* obtain a count of items in the hash */
--#define HASH_COUNT(head) HASH_CNT(hh,head) 
--#define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
--
--typedef struct UT_hash_bucket {
--   struct UT_hash_handle *hh_head;
--   unsigned count;
--
--   /* expand_mult is normally set to 0. In this situation, the max chain length
--    * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
--    * the bucket's chain exceeds this length, bucket expansion is triggered). 
--    * However, setting expand_mult to a non-zero value delays bucket expansion
--    * (that would be triggered by additions to this particular bucket)
--    * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
--    * (The multiplier is simply expand_mult+1). The whole idea of this
--    * multiplier is to reduce bucket expansions, since they are expensive, in
--    * situations where we know that a particular bucket tends to be overused.
--    * It is better to let its chain length grow to a longer yet-still-bounded
--    * value, than to do an O(n) bucket expansion too often. 
--    */
--   unsigned expand_mult;
--
--} UT_hash_bucket;
--
--/* random signature used only to find hash tables in external analysis */
--#define HASH_SIGNATURE 0xa0111fe1
--#define HASH_BLOOM_SIGNATURE 0xb12220f2
--
--typedef struct UT_hash_table {
--   UT_hash_bucket *buckets;
--   unsigned num_buckets, log2_num_buckets;
--   unsigned num_items;
--   struct UT_hash_handle *tail; /* tail hh in app order, for fast append    */
--   ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
--
--   /* in an ideal situation (all buckets used equally), no bucket would have
--    * more than ceil(#items/#buckets) items. that's the ideal chain length. */
--   unsigned ideal_chain_maxlen;
--
--   /* nonideal_items is the number of items in the hash whose chain position
--    * exceeds the ideal chain maxlen. these items pay the penalty for an uneven
--    * hash distribution; reaching them in a chain traversal takes >ideal steps */
--   unsigned nonideal_items;
--
--   /* ineffective expands occur when a bucket doubling was performed, but 
--    * afterward, more than half the items in the hash had nonideal chain
--    * positions. If this happens on two consecutive expansions we inhibit any
--    * further expansion, as it's not helping; this happens when the hash
--    * function isn't a good fit for the key domain. When expansion is inhibited
--    * the hash will still work, albeit no longer in constant time. */
--   unsigned ineff_expands, noexpand;
--
--   uint32_t signature; /* used only to find hash tables in external analysis */
--#ifdef HASH_BLOOM
--   uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
--   uint8_t *bloom_bv;
--   char bloom_nbits;
--#endif
--
--} UT_hash_table;
--
--typedef struct UT_hash_handle {
--   struct UT_hash_table *tbl;
--   void *prev;                       /* prev element in app order      */
--   void *next;                       /* next element in app order      */
--   struct UT_hash_handle *hh_prev;   /* previous hh in bucket order    */
--   struct UT_hash_handle *hh_next;   /* next hh in bucket order        */
--   void *key;                        /* ptr to enclosing struct's key  */
--   unsigned keylen;                  /* enclosing struct's key len     */
--   unsigned hashv;                   /* result of hash-fcn(key)        */
--} UT_hash_handle;
--
--#endif /* UTHASH_H */
--- 
-2.15.1
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init
deleted file mode 100644
index d2a27b2..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.init
+++ /dev/null
@@ -1,89 +0,0 @@
-#! /bin/sh
-
-# Based on the Debian initscript for mosquitto
-
-### BEGIN INIT INFO
-# Provides:         mosquitto
-# Required-Start:   $remote_fs $syslog
-# Required-Stop:    $remote_fs $syslog
-# Default-Start:    2 3 4 5
-# Default-Stop:     0 1 6
-# Short-Description:    mosquitto MQTT v3.1 message broker
-# Description: 
-#  This is a message broker that supports version 3.1 of the MQ Telemetry
-#  Transport (MQTT) protocol.
-#  
-#  MQTT provides a method of carrying out messaging using a publish/subscribe
-#  model. It is lightweight, both in terms of bandwidth usage and ease of
-#  implementation. This makes it particularly useful at the edge of the network
-#  where a sensor or other simple device may be implemented using an arduino for
-#  example.
-### END INIT INFO
-
-set -e
-
-PIDFILE=@LOCALSTATEDIR@/run/mosquitto.pid
-DAEMON=@SBINDIR@/mosquitto
-
-# start and stop the mosquitto MQTT message broker
-
-test -x ${DAEMON} || exit 0
-
-umask 022
-
-. @SYSCONFDIR@/init.d/functions
-
-export PATH="${PATH:+$PATH:}@SBINDIR@:@BASE_SBINDIR@"
-
-case "$1" in
-    start)
-        echo "Starting Mosquitto message broker" "mosquitto"
-        if start-stop-daemon --start --quiet --oknodo --background  --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} ; then
-            exit 0
-        else
-            exit 1
-        fi
-        ;;
-    stop)
-        echo "Stopping Mosquitto message broker" "mosquitto"
-        if start-stop-daemon --stop --quiet --oknodo --pidfile ${PIDFILE}; then
-            rm -f ${PIDFILE}
-            exit 0
-        else
-            exit 1
-        fi
-        ;;
-
-
-    reload|force-reload)
-        if [ -f ${PIDFILE} ] ; then
-            echo "Reloading configuration for mosquitto"
-            pid=`cat ${PIDFILE}`
-            kill -HUP $pid
-        else
-            echo "mosquitto does not seem to be running"
-        fi
-        ;;
-
-    restart)
-        echo "Restarting Mosquitto message broker" "mosquitto"
-        if start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile ${PIDFILE}; then
-            rm -f ${PIDFILE}
-        fi
-        if start-stop-daemon --start --quiet --oknodo --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} -- -c @SYSCONFDIR@/mosquitto/mosquitto.conf ; then
-            exit 0
-        else
-            exit 1
-        fi
-        ;;
-
-    status)
-        status ${DAEMON} && exit 0 || exit $?
-        ;;
-
-    *)
-        echo "Usage: $0 {start|stop|reload|force-reload|restart|status}"
-        exit 1
-esac
-
-exit 0
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service
deleted file mode 100644
index 25f68fa..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/files/mosquitto.service
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=Mosquitto - lightweight server implementation of the MQTT and MQTT-SN protocols
-ConditionPathExists=/etc/mosquitto/mosquitto.conf
-After=network.target
-
-[Service]
-Type=simple
-ExecStartPre=/bin/rm -f /var/run/mosquitto.pid
-ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
-ExecReload=/bin/kill -HUP $MAINPID
-PIDFile=/var/run/mosquitto.pid
-Restart=on-failure
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb b/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb
deleted file mode 100644
index 13ce381..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/mosquitto/mosquitto_1.4.14.bb
+++ /dev/null
@@ -1,83 +0,0 @@
-SUMMARY = "Open source MQTT v3.1/3.1.1 implemention"
-DESCRIPTION = "Mosquitto is an open source (Eclipse licensed) message broker that implements the MQ Telemetry Transport protocol version 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. "
-HOMEPAGE = "http://mosquitto.org/"
-SECTION = "console/network"
-LICENSE = "EPL-1.0 | EDL-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=62ddc846179e908dc0c8efec4a42ef20 \
-                    file://edl-v10;md5=c09f121939f063aeb5235972be8c722c \
-                    file://epl-v10;md5=8d383c379e91d20ba18a52c3e7d3a979 \
-                    file://notice.html;md5=a00d6f9ab542be7babc2d8b80d5d2a4c \
-"
-DEPENDS = "uthash"
-
-SRC_URI = "http://mosquitto.org/files/source/mosquitto-${PV}.tar.gz \
-           file://0001-config.mk-allow-prefix-mandir-localedir-from-environ.patch \
-           file://0002-uthash-remove-in-tree-version.patch \
-           file://mosquitto.service \
-           file://mosquitto.init \
-"
-
-SRC_URI[md5sum] = "6b0966e93f118bc71ad7b61600a6c2d3"
-SRC_URI[sha256sum] = "156b1fa731d12baad4b8b22f7b6a8af50ba881fc711b81e9919ec103cf2942d1"
-
-inherit systemd update-rc.d useradd
-
-PACKAGECONFIG ??= "ssl uuid"
-
-PACKAGECONFIG[dns-srv] = ",,c-ares"
-PACKAGECONFIG[ssl] = ",,openssl"
-PACKAGECONFIG[uuid] = ",,util-linux"
-EXTRA_OEMAKE = "${@bb.utils.contains('PACKAGECONFIG', 'dns-srv', 'WITH_SRV=yes', 'WITH_SRV=no', d)} \
-                STRIP=/bin/true \
-                WITH_DOCS=no \
-                ${@bb.utils.contains('PACKAGECONFIG', 'ssl', 'WITH_TLS=yes WITH_TLS_PSK=yes', 'WITH_TLS=no WITH_TLS_PSK=no', d)} \
-                ${@bb.utils.contains('PACKAGECONFIG', 'uuid', 'WITH_UUID=yes', 'WITH_UUID=no', d)}"
-
-export LIB_SUFFIX="${@d.getVar('baselib', True).replace('lib', '')}"
-
-do_compile() {
-    oe_runmake PREFIX=${prefix}
-}
-
-do_install() {
-    oe_runmake install DESTDIR=${D}
-    install -d ${D}${libdir}
-    install -m 0644 lib/libmosquitto.a ${D}${libdir}/
-
-    install -d ${D}${systemd_unitdir}/system/
-    install -m 0644 ${WORKDIR}/mosquitto.service ${D}${systemd_unitdir}/system/
-
-    install -d ${D}${sysconfdir}/init.d/
-    install -m 0755 ${WORKDIR}/mosquitto.init ${D}${sysconfdir}/init.d/mosquitto
-    sed -i -e 's,@SBINDIR@,${sbindir},g' \
-        -e 's,@BASE_SBINDIR@,${base_sbindir},g' \
-        -e 's,@LOCALSTATEDIR@,${localstatedir},g' \
-        -e 's,@SYSCONFDIR@,${sysconfdir},g' \
-        ${D}${sysconfdir}/init.d/mosquitto
-}
-
-PACKAGES += "libmosquitto1 libmosquittopp1 ${PN}-clients"
-
-FILES_${PN} = "${sbindir}/mosquitto \
-               ${bindir}/mosquitto_passwd \
-               ${sysconfdir}/mosquitto \
-               ${sysconfdir}/init.d \
-               ${systemd_unitdir}/system/mosquitto.service \
-"
-
-FILES_libmosquitto1 = "${libdir}/libmosquitto.so.1"
-
-FILES_libmosquittopp1 = "${libdir}/libmosquittopp.so.1"
-
-FILES_${PN}-clients = "${bindir}/mosquitto_pub \
-                       ${bindir}/mosquitto_sub \
-"
-
-SYSTEMD_SERVICE_${PN} = "mosquitto.service"
-
-INITSCRIPT_NAME = "mosquitto"
-INITSCRIPT_PARAMS = "defaults 30"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system --no-create-home --shell /bin/false \
-                       --user-group mosquitto"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
index 1b56685..3fb8cb1 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
@@ -2,29 +2,26 @@
 Object Exchange (OBEX) protocol."
 HOMEPAGE = "http://openobex.triq.net"
 SECTION = "libs"
-DEPENDS = "virtual/libusb0"
-DEPENDS_append_class-target = " ${@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 \
 "
 
+DEPENDS = "virtual/libusb0"
+DEPENDS_append_class-target = " ${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
+
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}/${PV}/${BP}-Source.tar.gz \
 "
-
 SRC_URI[md5sum] = "f6e0b6cb7dcfd731460a7e9a91429a3a"
 SRC_URI[sha256sum] = "158860aaea52f0fce0c8e4b64550daaae06df2689e05834697b7e8c7d73dd4fc"
 
-inherit cmake pkgconfig
-
 S = "${WORKDIR}/${BP}-Source"
 
+inherit cmake pkgconfig
+
 EXTRA_OECONF = " -DCMAKE_SKIP_RPATH=ON "
 EXTRA_OECMAKE += "-DBUILD_DOCUMENTATION=OFF"
 
-#--enable-apps --enable-syslog
-
 ASNEEDED = ""
 
 do_install_append () {
@@ -34,7 +31,7 @@
 PACKAGES =+ "openobex-apps"
 FILES_${PN}-apps = "${bindir}/*"
 FILES_${PN} += "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${bindir}/openobex-config ${libdir}/cmake"
+FILES_${PN}-dev += "${bindir}/openobex-config"
 DEBIAN_NOAUTONAME_${PN}-apps = "1"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb
index fec380c..a7a9b5a 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb
@@ -13,7 +13,7 @@
 
 SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=http"
 
-SRCREV = "e8d34da24ad807f5e698b327d67591fd4b4bfa7e"
+SRCREV = "09fe0744e02f317b907e96dd5afcc02224ddbb85"
 
 DEPENDS = "openssl"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
index c731cf7..9bb81c4 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
@@ -8,9 +8,10 @@
 SRC_URI = "git://github.com/rakshasa/rtorrent \
     file://don-t-run-code-while-configuring-package.patch \
 "
-SRCREV = "226e670decf92e7adaa845a6982aca4f164ea740"
+# v0.9.7
+SRCREV = "327164f9d86aafcd2500a317d485374df32ea622"
 
-PV = "0.9.6+git${SRCPV}"
+PV = "0.9.7+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.5.bb
similarity index 71%
rename from meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb
rename to meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.5.bb
index 708650f..f64776c 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.4.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.5.bb
@@ -7,8 +7,8 @@
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "562274d783534276a9feac913b7d8c4e"
-SRC_URI[sha256sum] = "d846066e27c3072565990745d030357aa0c278f96b7d1d4f59023347c1db8824"
+SRC_URI[md5sum] = "e10e7c8c97e5bade5e85ce6e89bdf1f4"
+SRC_URI[sha256sum] = "ba9e1d60a89fd7ed075553b4a2074352902203f7fbd9b65b15048c05f0e3f3be"
 
 inherit autotools pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch
index fcc2f08..a77cd28 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch
@@ -1,9 +1,10 @@
-From b3da0d8677b7e8467367a303c18551c56ed20e15 Mon Sep 17 00:00:00 2001
+From a5544d8e543436e413379422b702f6f56ac7eb8e Mon Sep 17 00:00:00 2001
 From: Philip Balister <philip@balister.org>
 Date: Tue, 12 Apr 2016 17:30:15 -0400
 Subject: [PATCH] Forcibly disable check for Qt5.
 
 Signed-off-by: Philip Balister <philip@balister.org>
+
 ---
  build/cmake/DefineOptions.cmake | 3 ---
  1 file changed, 3 deletions(-)
@@ -22,6 +23,3 @@
  if(${WITH_QT4} AND ${WITH_QT5} AND ${CMAKE_MAJOR_VERSION} LESS 3)
    # cmake < 3.0.0 causes conflict when building both Qt4 and Qt5
    set(WITH_QT4 OFF)
--- 
-2.5.5
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch
index 7cc8d17..182eacc 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch
@@ -1,7 +1,7 @@
-From bc577820ad25795543b31f123e309cdaebc7d6c6 Mon Sep 17 00:00:00 2001
+From b8e254a2f4ba49412e541598c72159869a7770f8 Mon Sep 17 00:00:00 2001
 From: Cody P Schafer <dev@codyps.com>
 Date: Mon, 16 May 2016 15:21:10 -0400
-Subject: [PATCH 1/2] THRIFT-3828 In cmake avoid use of both quoted paths and
+Subject: [PATCH] THRIFT-3828 In cmake avoid use of both quoted paths and
  SYSTEM with include_directories()
 
 This allows us to avoid issues where there are no paths to be added to
@@ -11,6 +11,7 @@
 Specifically, gcc-6 requires that libraries stop passing paths like
 '/usr/include' (or they will get libstdc++ build errors), so these paths
 will be empty more often in the future.
+
 ---
  lib/cpp/CMakeLists.txt      | 8 ++++----
  lib/cpp/test/CMakeLists.txt | 2 +-
@@ -105,6 +106,3 @@
  
  #Make sure gen-cpp files can be included
  include_directories("${CMAKE_CURRENT_BINARY_DIR}")
--- 
-2.9.3
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch
index f13adbb..37715c2 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch
@@ -1,7 +1,7 @@
-From f6cad0580e5391c37af7f60adddb71bf1a403dc4 Mon Sep 17 00:00:00 2001
+From 7b05a74432f08ef34d0f8743dd6438ad012e3b5e Mon Sep 17 00:00:00 2001
 From: Cody P Schafer <dev@codyps.com>
 Date: Fri, 9 Sep 2016 15:50:26 -0400
-Subject: [PATCH 2/2] THRIFT-3831 in test/cpp explicitly use `signed char`
+Subject: [PATCH] THRIFT-3831 in test/cpp explicitly use `signed char`
 
 `char`'s signed-ness is implimentation dependent, and in the case where
 `char` was not signed, we previously recieved errors like
@@ -9,15 +9,16 @@
     thrift/0.9.3-r0/git/test/cpp/src/TestClient.cpp:404:15: error: narrowing conversion of '-127' from 'int' to 'char' inside { } [-Wnarrowing]
 
 (This example from gcc-6 on arm)
+
 ---
  test/cpp/src/TestClient.cpp | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/test/cpp/src/TestClient.cpp b/test/cpp/src/TestClient.cpp
-index e709899..4a961f8 100644
+index 7c425a9..7145ebb 100644
 --- a/test/cpp/src/TestClient.cpp
 +++ b/test/cpp/src/TestClient.cpp
-@@ -383,7 +383,7 @@ int main(int argc, char** argv) {
+@@ -381,7 +381,7 @@ int main(int argc, char** argv) {
       * BINARY TEST
       */
      printf("testBinary([-128..127]) = {");
@@ -26,7 +27,7 @@
          = {-128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114,
             -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99,
             -98,  -97,  -96,  -95,  -94,  -93,  -92,  -91,  -90,  -89,  -88,  -87,  -86,  -85,  -84,
-@@ -404,7 +404,7 @@ int main(int argc, char** argv) {
+@@ -402,7 +402,7 @@ int main(int argc, char** argv) {
             127};
      try {
        string bin_result;
@@ -35,6 +36,3 @@
        if (bin_result.size() != 256) {
          printf("}\n*** FAILED ***\n");
          printf("invalid length: %lu\n", bin_result.size());
--- 
-2.9.3
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch
new file mode 100644
index 0000000..500cfab
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch
@@ -0,0 +1,41 @@
+From 5f2c7e50b99d72177250c44236c41b99bfc161b5 Mon Sep 17 00:00:00 2001
+From: Andrej Valek <andrej.valek@siemens.com>
+Date: Thu, 7 Jun 2018 15:21:06 +0200
+Subject: [PATCH 4/6] %% original patch:
+ 0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch
+
+---
+ lib/cpp/src/thrift/transport/TSSLSocket.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+index 98c5326..3da9e45 100644
+--- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp
++++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+@@ -39,6 +39,7 @@
+ #include <thrift/transport/PlatformSocket.h>
+ 
+ #define OPENSSL_VERSION_NO_THREAD_ID 0x10000000L
++#define OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2 0x10100000L
+ 
+ using namespace std;
+ using namespace apache::thrift::concurrency;
+@@ -143,10 +144,15 @@ SSLContext::SSLContext(const SSLProtocol& protocol) {
+     ctx_ = SSL_CTX_new(SSLv3_method());
+   } else if (protocol == TLSv1_0) {
+     ctx_ = SSL_CTX_new(TLSv1_method());
++#if (OPENSSL_VERSION_NUMBER >= OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2)
+   } else if (protocol == TLSv1_1) {
+     ctx_ = SSL_CTX_new(TLSv1_1_method());
+   } else if (protocol == TLSv1_2) {
+     ctx_ = SSL_CTX_new(TLSv1_2_method());
++#else
++  //Support for this versions will end on 2016-12-31
++  //https://www.openssl.org/about/releasestrat.html
++#endif
+   } else {
+     /// UNKNOWN PROTOCOL!
+     throw TSSLException("SSL_CTX_new: Unknown protocol");
+-- 
+2.19.0
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch
new file mode 100644
index 0000000..f4482b1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch
@@ -0,0 +1,26 @@
+From 81f36e7174097a1f1f3e7f94a97574b2ec68577f Mon Sep 17 00:00:00 2001
+From: "James E. King, III" <jim.king@simplivity.com>
+Date: Thu, 29 Sep 2016 15:04:09 -0400
+Subject: [PATCH] THRIFT-3878: fix interop with newer OpenSSL libraries
+
+---
+ lib/cpp/src/thrift/transport/TSSLSocket.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+index 3da9e45..0a3a124 100644
+--- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp
++++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+@@ -97,7 +97,12 @@ void initializeOpenSSL() {
+   SSL_library_init();
+   SSL_load_error_strings();
+   // static locking
++  // newer versions of OpenSSL changed CRYPTO_num_locks - see THRIFT-3878
++#ifdef CRYPTO_num_locks
++  mutexes = boost::shared_array<Mutex>(new Mutex[CRYPTO_num_locks()]);
++#else
+   mutexes = boost::shared_array<Mutex>(new Mutex[ ::CRYPTO_num_locks()]);
++#endif
+   if (mutexes == NULL) {
+     throw TTransportException(TTransportException::INTERNAL_ERROR,
+                               "initializeOpenSSL() failed, "
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch
new file mode 100644
index 0000000..dfaa2fb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch
@@ -0,0 +1,46 @@
+From 4cd49f470ca983369451d1141acc80fe1115cab4 Mon Sep 17 00:00:00 2001
+From: Nobuaki Sukegawa <nsuke@apache.org>
+Date: Sun, 13 Mar 2016 08:55:38 +0900
+Subject: [PATCH] THRIFT-3736 C++ library build fails if OpenSSL does not
+
+ surrpot SSLv3
+
+---
+ lib/cpp/src/thrift/transport/TSSLSocket.cpp | 2 ++
+ lib/cpp/test/SecurityTest.cpp               | 8 ++++++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+index 0a3a124..3e79354 100644
+--- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp
++++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
+@@ -145,8 +145,10 @@ static char uppercase(char c);
+ SSLContext::SSLContext(const SSLProtocol& protocol) {
+   if (protocol == SSLTLS) {
+     ctx_ = SSL_CTX_new(SSLv23_method());
++#ifndef OPENSSL_NO_SSL3
+   } else if (protocol == SSLv3) {
+     ctx_ = SSL_CTX_new(SSLv3_method());
++#endif
+   } else if (protocol == TLSv1_0) {
+     ctx_ = SSL_CTX_new(TLSv1_method());
+ #if (OPENSSL_VERSION_NUMBER >= OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2)
+diff --git a/lib/cpp/test/SecurityTest.cpp b/lib/cpp/test/SecurityTest.cpp
+index 213efd4..08110e7 100644
+--- a/lib/cpp/test/SecurityTest.cpp
++++ b/lib/cpp/test/SecurityTest.cpp
+@@ -239,6 +239,14 @@ BOOST_AUTO_TEST_CASE(ssl_security_matrix)
+                     continue;
+                 }
+ 
++#ifdef OPENSSL_NO_SSL3
++                if (si == 2 || ci == 2)
++                {
++                    // Skip all SSLv3 cases - protocol not supported
++                    continue;
++                }
++#endif
++
+                 boost::mutex::scoped_lock lock(mMutex);
+ 
+                 BOOST_TEST_MESSAGE(boost::format("TEST: Server = %1%, Client = %2%")
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb
index aa93283..7ab7402 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb
@@ -12,6 +12,9 @@
            file://0001-Forcibly-disable-check-for-Qt5.patch \
            file://0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch \
            file://0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch \
+           file://0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch \
+           file://0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch \
+           file://0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch \
 "
 
 SRC_URI[md5sum] = "88d667a8ae870d5adeca8cb7d6795442"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch
deleted file mode 100644
index 8e5f4da..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0001-Add-format-string-to-fprintf-call.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a0ad5128d14b022239445e251cf4a9826e86aa96 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 27 Jun 2017 07:48:31 -0700
-Subject: [PATCH] Add format string to fprintf() call
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/vt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/vt.c b/src/vt.c
-index 795d393..a533d3d 100644
---- a/src/vt.c
-+++ b/src/vt.c
-@@ -499,7 +499,7 @@ static int vt_cmd_dump_candidates(const struct vt_handle *vh,
- 		}
- 		llen += cmdlen;
- 
--		ret = fprintf(vh->vh_stream, e->cmd);
-+		ret = fprintf(vh->vh_stream, "%s", e->cmd);
- 		if (ret < 0)
- 			return ret;
- 
--- 
-2.13.2
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch
deleted file mode 100644
index 8192056..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From f567740cf64978ac9db014c786b6d0267b244f33 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 4 Mar 2018 22:30:30 -0800
-Subject: [PATCH 1/2] replace SIGCLD with SIGCHLD and include sys/types.h
-
-Fixes
-main.c:129:10: error: 'SIGCLD' undeclared (first use in this function); did you mean 'SIGCHLD'?
-   signal(SIGCLD, sig_child);
-          ^~~~~~
-          SIGCHLD
-
-main.c:125:2: warning: implicit declaration of function 'umask' [-Wimplicit-function-declaration]
-  umask(0);
-  ^~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/main.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/main.c b/src/main.c
-index 3cf4072..cd34196 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -31,6 +31,7 @@
- #include <sys/ioctl.h>
- #include <sys/wait.h>
- #include <sys/param.h>
-+#include <sys/types.h>
- #include <pthread.h>
- #include <fcntl.h>
- #include <unistd.h>
-@@ -126,9 +127,9 @@ static void daemon_start(int ignsigcld)
- 
- 	if (ignsigcld) {
- #ifdef SIGTSTP
--		signal(SIGCLD, sig_child);
-+		signal(SIGCHLD, sig_child);
- #else
--		signal(SIGCLD, SIG_IGN);
-+		signal(SIGCHLD, SIG_IGN);
- #endif
- 	}
- }
--- 
-2.16.2
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch
deleted file mode 100644
index 90d12da..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 19b6cf8099e1974b5fc39086fc54103b0cbc2658 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 4 Mar 2018 23:01:25 -0800
-Subject: [PATCH 2/2] replace PTHREAD_MUTEX_FAST_NP with PTHREAD_MUTEX_NORMAL
-
-PTHREAD_MUTEX_FAST_NP is not available on non-posix systems
-e.g. musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/ha.c        | 2 +-
- src/icmp6.c     | 2 +-
- src/mh.c        | 2 +-
- src/mn.c        | 2 +-
- src/movement.c  | 2 +-
- src/mpdisc_ha.c | 2 +-
- src/mpdisc_mn.c | 2 +-
- src/tqueue.c    | 2 +-
- src/tunnelctl.c | 2 +-
- 9 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/src/ha.c b/src/ha.c
-index fbdcff0..b2f811e 100644
---- a/src/ha.c
-+++ b/src/ha.c
-@@ -1246,7 +1246,7 @@ int ha_init(void)
- {
- 	pthread_mutexattr_t mattrs;
- 	pthread_mutexattr_init(&mattrs);
--	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 	if (pthread_mutex_init(&bu_worker_mutex, &mattrs) ||
- 	    pthread_cond_init(&cond, NULL))
- 		return -1;
-diff --git a/src/icmp6.c b/src/icmp6.c
-index 3695135..6460634 100644
---- a/src/icmp6.c
-+++ b/src/icmp6.c
-@@ -243,7 +243,7 @@ int icmp6_init(void)
- 		return -1;
- 	/* create ICMP listener thread */
- 	pthread_mutexattr_init(&mattrs);
--	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 	if (pthread_mutex_init(&icmp6_sock.send_mutex, &mattrs) ||
- 	    pthread_rwlock_init(&handler_lock, NULL) ||
- 	    pthread_create(&icmp6_listener, NULL, icmp6_listen, NULL))
-diff --git a/src/mh.c b/src/mh.c
-index 60e345e..7928f4c 100644
---- a/src/mh.c
-+++ b/src/mh.c
-@@ -204,7 +204,7 @@ int mh_init(void)
- 		return -1;
- 
- 	pthread_mutexattr_init(&mattrs);
--	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 	if (pthread_mutex_init(&mh_sock.send_mutex, &mattrs) ||
- 	    pthread_rwlock_init(&handler_lock, NULL) ||
- 	    pthread_create(&mh_listener, NULL, mh_listen, NULL))
-diff --git a/src/mn.c b/src/mn.c
-index 092cfcb..8f7f448 100644
---- a/src/mn.c
-+++ b/src/mn.c
-@@ -1478,7 +1478,7 @@ static struct home_addr_info *hai_copy(struct home_addr_info *conf_hai)
- 	if (hai != NULL) {
- 		pthread_mutexattr_t mattrs;
- 		pthread_mutexattr_init(&mattrs);
--		pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+		pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 
- 		memcpy(hai, conf_hai, sizeof(struct home_addr_info));
- 
-diff --git a/src/movement.c b/src/movement.c
-index d985937..6400448 100644
---- a/src/movement.c
-+++ b/src/movement.c
-@@ -2013,7 +2013,7 @@ int md_init(void)
- 	int val;
- 
- 	pthread_mutexattr_init(&mattrs);
--	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 	if (pthread_mutex_init(&iface_lock, &mattrs))
- 		return -1;
- 
-diff --git a/src/mpdisc_ha.c b/src/mpdisc_ha.c
-index 40ba05f..fd7a90d 100644
---- a/src/mpdisc_ha.c
-+++ b/src/mpdisc_ha.c
-@@ -559,7 +559,7 @@ int mpd_ha_init(void)
- {
- 	pthread_mutexattr_t mattrs;
- 	pthread_mutexattr_init(&mattrs);
--	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 	if (pthread_mutex_init(&mpa_lock, &mattrs) ||
- 	    pthread_rwlock_init(&prefix_lock, NULL) ||
- 	    hash_init(&mpa_hash, DOUBLE_ADDR, MPA_BUCKETS) < 0)
-diff --git a/src/mpdisc_mn.c b/src/mpdisc_mn.c
-index 4873bd6..ada02bd 100644
---- a/src/mpdisc_mn.c
-+++ b/src/mpdisc_mn.c
-@@ -267,7 +267,7 @@ int mpd_mn_init(void)
- {
- 	pthread_mutexattr_t mattrs;
- 	pthread_mutexattr_init(&mattrs);
--	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 	if (pthread_mutex_init(&mps_lock, &mattrs))
- 		return -1;
- 	if (hash_init(&mps_hash, DOUBLE_ADDR, MPS_BUCKETS) < 0)
-diff --git a/src/tqueue.c b/src/tqueue.c
-index 2f7aa0b..9c185b8 100644
---- a/src/tqueue.c
-+++ b/src/tqueue.c
-@@ -65,7 +65,7 @@ int taskqueue_init(void)
- {
- 	pthread_mutexattr_t mattrs;
- 	pthread_mutexattr_init(&mattrs);
--	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 	if (pthread_mutex_init(&mutex, &mattrs) ||
- 	    pthread_cond_init(&cond, NULL) ||
- 	    pthread_create(&tq_runner, NULL, runner, NULL))
-diff --git a/src/tunnelctl.c b/src/tunnelctl.c
-index 23fc20b..813b8ec 100644
---- a/src/tunnelctl.c
-+++ b/src/tunnelctl.c
-@@ -433,7 +433,7 @@ int tunnelctl_init(void)
- 		return -1;
- 
- 	pthread_mutexattr_init(&mattrs);
--	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_FAST_NP);
-+	pthread_mutexattr_settype(&mattrs, PTHREAD_MUTEX_NORMAL);
- 	if (pthread_mutex_init(&tnl_lock, &mattrs))
- 		return -1;
- 
--- 
-2.16.2
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch
deleted file mode 100644
index dbf0082..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/add-dependency-to-support-parallel-compilation.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-When "make -j10", the compilation will fail,
-because scan.c has included gram.h, but gram.h was produced
-after scan.c was compiled
-
-So add this dependency to ensure that gram.h is produced
-before scan.c is produced.
-
-Upstream-Status: Inappropriate [upstream is not active]
-
-Signed-off-by: Roy.Li <RongQing.Li@windriver.com>
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- src/Makefile.am |    2 ++
- 1 file changed, 2 insertions(+)
-
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -81,3 +81,5 @@ CLEANFILES = gram.c gram.h \
- 
- DISTCLEANFILES = $(BUILT_SOURCES)
- MAINTAINERCLEANFILES = Makefile.in
-+
-+scan.c: gram.h
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d
deleted file mode 100755
index ebd70a6..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/bin/sh
-#
-# mip6d		Start script for the Mobile IPv6 daemon
-#
-# chkconfig:	- 55 25
-# description:	The mobile IPv6 daemon allows nodes to remain \
-#		reachable while moving around in the IPv6 Internet.
-# processname:	mip6d
-# config:	/etc/mip6d.conf
-# config:	/etc/sysconfig/mip6d
-#
-### BEGIN INIT INFO
-# Provides: mipv6-daemon
-# Required-Start: $local_fs $remote_fs $network $named
-# Required-Stop: $local_fs $remote_fs $network
-# Should-Start: $syslog
-# Should-Stop: $network $syslog
-# Default-Start:
-# Default-Stop: 0 1 6
-# Short-Description: Start and stop Mobile IPV6 daemon
-# Description:	The mobile IPv6 daemon allows nodes to remain
-#		reachable while moving around in the IPv6 Internet.
-### END INIT INFO
-
-# Source function library.
-. /etc/init.d/functions
-
-if [ -f /etc/sysconfig/mip6d ]; then
-	. /etc/sysconfig/mip6d
-fi
-
-mip6d=/usr/sbin/mip6d
-prog="mip6d"
-lockfile=/var/lock/subsys/$prog
-
-start() {
-	[ -x $mip6d ] || exit 5
-	echo -n $"Starting $prog: "
-	start-stop-daemon -S -x ${mip6d} && success || failure
-	retval=$?
-	echo
-	[ $retval -eq 0 ] && touch ${lockfile}
-	return $retval
-}
-
-stop() {
-	echo -n $"Stopping $prog: "
-	start-stop-daemon -K -x $mip6d
-	retval=$?
-	echo
-	[ $retval -eq 0 ] && rm -f ${lockfile}
-	return $retval
-}
-
-restart() {
-	stop
-	start
-}
-
-reload()
-{
-	echo -n $"Reloading $prog configuration: "
-	killproc $mip6d -HUP
-	retval=$?
-	echo
-	return $retval
-}
-
-force_reload() {
-	restart
-}
-
-rh_status() {
-	status $prog
-}
-
-rh_status_q() {
-	rh_status > /dev/null 2>&1
-}
-
-case "$1" in
-  start)
-	rh_status_q && exit 0
-	$1
-	;;
-  stop)
-	rh_status_q || exit 0
-	$1
-	;;
-  restart)
-	$1
-	;;
-  reload)
-	rh_status_q || exit 7
-	$1
-	;;
-  force-reload)
-	force_reload
-	;;
-  status)
-	rh_status
-	;;
-  condrestart|try-restart)
-	rh_status_q || exit 0
-	restart
-	;;
-  *)
-	echo $"Usage: $prog {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
-	exit 2
-esac
-
-exit $?
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d.service b/meta-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d.service
deleted file mode 100644
index 2b5a5b9..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/umip/files/mip6d.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=MIPL Mobile IPv6
-After=network.target
-
-[Service]
-EnvironmentFile=-@SYSCONFDIR@/sysconfig/mip6d
-ExecStart=@SBINDIR@/mip6d $ARGS
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/umip/umip_1.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/umip/umip_1.0.bb
deleted file mode 100644
index 0c120bf..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/umip/umip_1.0.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-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://github.com/jlanza/umip \
-           file://add-dependency-to-support-parallel-compilation.patch \
-           file://mip6d \
-           file://mip6d.service \
-           file://0001-Add-format-string-to-fprintf-call.patch \
-           file://0001-replace-SIGCLD-with-SIGCHLD-and-include-sys-types.h.patch \
-           file://0002-replace-PTHREAD_MUTEX_FAST_NP-with-PTHREAD_MUTEX_NOR.patch \
-           "
-SRCREV = "7d67209cd1bba2dd0e183a0fa07eeef07964dd14"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF = "--enable-vt"
-
-inherit autotools-brokensep systemd update-rc.d
-
-INITSCRIPT_NAME = "mip6d"
-INITSCRIPT_PARAMS = "start 64 . stop 36 0 1 2 3 4 5 6 ."
-
-SYSTEMD_SERVICE_${PN} = "mip6d.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-do_install_append() {
-	install -D -m 0755 ${WORKDIR}/mip6d ${D}${sysconfdir}/init.d/mip6d
-	install -D -m 0644 ${WORKDIR}/mip6d.service ${D}${systemd_system_unitdir}/mip6d.service
-	sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
-	    -e 's,@SBINDIR@,${sbindir},g' \
-	    ${D}${systemd_system_unitdir}/mip6d.service
-}
-
-RRECOMMENDS_${PN} = "kernel-module-mip6 kernel-module-ipv6"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
index 4365aa4..7284234 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/usbmuxd/usbmuxd_git.bb
@@ -1,24 +1,21 @@
 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"
+                    file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504"
 
-DEPENDS = "udev libusb1"
+DEPENDS = "udev libusb1 libplist"
 
-inherit cmake pkgconfig gitpkgv
+inherit autotools pkgconfig gitpkgv systemd
 
 PKGV = "${GITPKGVTAG}"
 
-SRCREV = "919587580c5e77f3936f3432115d2e10c7bac7c5"
-SRC_URI = "git://git.sukimashita.com/usbmuxd.git;protocol=http"
+SRCREV = "ee85938c21043ef5f7cd4dfbc7677f385814d4d8"
+SRC_URI = "git://github.com/libimobiledevice/usbmuxd;protocol=https"
 
 S = "${WORKDIR}/git"
 
+EXTRA_OECONF += "--without-preflight"
+
 FILES_${PN} += "${base_libdir}/udev/rules.d/"
 
-# fix usbmuxd installing files to /usr/lib64 on 64bit hosts:
-EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')}"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[plist] = "-DWANT_PLIST=1,-DWANT_PLIST=0,libplist"
+SYSTEMD_SERVICE_${PN} = "usbmuxd.service"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
index 3a71fb9..5154208 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
@@ -30,3 +30,5 @@
 do_install() {
     oe_runmake prefix=${D}/usr PPPDIR=${D}/etc/ppp/peers install
 }
+# http://errors.yoctoproject.org/Errors/Details/186959/
+EXCLUDE_FROM_WORLD_libc-musl = "1"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch
new file mode 100644
index 0000000..19a2e26
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch
@@ -0,0 +1,557 @@
+From 0c35749891bf834c1f3c1c4c330266bd2f4733cc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 9 Sep 2018 10:40:09 -0700
+Subject: [PATCH] Forward port to OpenSSL 1.1.x
+
+* import patch from debian
+https://sources.debian.org/src/wvstreams/4.6.1-14/debian/patches/wvstreams_openssl1.1.patch
+Author: Reiner Herrmann <reiner@reiner-h.de>
+
+Upstream-Status: Submitted [https://github.com/apenwarr/wvstreams/pull/2]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ crypto/wvcrl.cc           | 38 +++++++++++++-------------------------
+ crypto/wvdiffiehellman.cc | 30 +++++++++++++++++++-----------
+ crypto/wvdigest.cc        | 16 ++++++++--------
+ crypto/wvocsp.cc          | 35 +++++++++--------------------------
+ crypto/wvx509.cc          | 31 ++++++++++++++++---------------
+ crypto/wvx509mgr.cc       | 27 ++++++++++++++++-----------
+ include/wvdiffiehellman.h |  2 +-
+ include/wvdigest.h        | 14 ++++++--------
+ include/wvtripledes.h     | 10 +++++-----
+ 9 files changed, 93 insertions(+), 110 deletions(-)
+
+diff --git a/crypto/wvcrl.cc b/crypto/wvcrl.cc
+index fa00c76..880ad85 100644
+--- a/crypto/wvcrl.cc
++++ b/crypto/wvcrl.cc
+@@ -357,31 +357,19 @@ bool WvCRL::isrevoked(WvStringParm serial_number) const
+ 	ASN1_INTEGER *serial = serial_to_int(serial_number);
+ 	if (serial)
+ 	{
+-	    X509_REVOKED mayberevoked;
+-	    mayberevoked.serialNumber = serial;
+-	    if (crl->crl->revoked)
+-	    {
+-		int idx = sk_X509_REVOKED_find(crl->crl->revoked, 
+-					       &mayberevoked);
+-		ASN1_INTEGER_free(serial);
+-		if (idx >= 0)
+-                {
+-                    debug("Certificate is revoked.\n");
+-		    return true;
+-                }
+-                else
+-                {
+-                    debug("Certificate is not revoked.\n");
+-		    return false;
+-                }
+-	    }
+-	    else
+-	    {
+-		ASN1_INTEGER_free(serial);
+-		debug("CRL does not have revoked list.\n");
+-                return false;
+-	    }
+-	    
++	    X509_REVOKED *revoked_entry = NULL;
++	    int idx = X509_CRL_get0_by_serial(crl, &revoked_entry, serial);
++	    ASN1_INTEGER_free(serial);
++	    if (idx >= 1 || revoked_entry)
++            {
++                debug("Certificate is revoked.\n");
++	        return true;
++            }
++            else
++            {
++                debug("Certificate is not revoked.\n");
++	        return false;
++            }
+ 	}
+ 	else
+ 	    debug(WvLog::Warning, "Can't convert serial number to ASN1 format. "
+diff --git a/crypto/wvdiffiehellman.cc b/crypto/wvdiffiehellman.cc
+index 7c0bf32..15cd104 100644
+--- a/crypto/wvdiffiehellman.cc
++++ b/crypto/wvdiffiehellman.cc
+@@ -39,24 +39,25 @@ WvDiffieHellman::WvDiffieHellman(const unsigned char *_key, int _keylen,
+ {
+     int problems;
+     int check;
+-    {
++
+ 	info = DH_new();
+-	info->p = BN_bin2bn(_key, _keylen, NULL);
++	BIGNUM *p = BN_bin2bn(_key, _keylen, NULL);
+ // 	info->p->top = 0;
+ // 	info->p->dmax = _keylen * 8 / BN_BITS2;
+ // 	info->p->neg = 0;
+ // 	info->p->flags = 0;
+ 
+-	info->g = BN_new();
+-	BN_set_word(info->g, generator);
++	BIGNUM *g = BN_new();
++	BN_set_word(g, generator);
+ // 	info->g->d = &generator;
+ //  	info->g->top = 0;
+ //  	info->g->dmax = 1;
+ //  	info->g->neg = 0;
+ //  	info->g->flags = 0;
+-    }
+ 
+-    check = BN_mod_word(info->p, 24);
++	DH_set0_pqg(info, p, NULL, g);
++
++    check = BN_mod_word(p, 24);
+     DH_check(info, &problems);
+     if (problems & DH_CHECK_P_NOT_PRIME)
+  	log(WvLog::Error, "Using a composite number for authentication.\n");
+@@ -64,7 +65,7 @@ WvDiffieHellman::WvDiffieHellman(const unsigned char *_key, int _keylen,
+ 	log(WvLog::Error,"Using an unsafe prime number for authentication.\n");
+     if (problems & DH_NOT_SUITABLE_GENERATOR)
+ 	log(WvLog::Error, "Can you just use 2 instead of %s (%s)!!\n",
+-	    BN_bn2hex(info->g), check);
++	    BN_bn2hex(g), check);
+     if (problems & DH_UNABLE_TO_CHECK_GENERATOR)
+ 	log(WvLog::Notice, "Using a strange argument for diffie-hellman.\n");
+     DH_generate_key(info);
+@@ -72,18 +73,23 @@ WvDiffieHellman::WvDiffieHellman(const unsigned char *_key, int _keylen,
+ 
+ int WvDiffieHellman::pub_key_len()
+ {
+-    return BN_num_bytes(info->pub_key);
++    const BIGNUM *pub_key = NULL;
++	DH_get0_key(info, &pub_key, NULL);
++    return BN_num_bytes(pub_key);
+ }
+ 
+ int WvDiffieHellman::get_public_value(WvBuf &outbuf, int len)
+ {
+-    int key_len = BN_num_bytes(info->pub_key);
++	const BIGNUM *pub_key = NULL;
++	DH_get0_key(info, &pub_key, NULL);
++
++    int key_len = BN_num_bytes(pub_key);
+     if (key_len < len)
+ 	len = key_len;
+ 
+     // alloca is stack allocated, don't free it.
+     unsigned char *foo = (unsigned char*)alloca(key_len);
+-    BN_bn2bin(info->pub_key, foo);
++    BN_bn2bin(pub_key, foo);
+     outbuf.put(foo, len);
+ 
+     return len;
+@@ -91,8 +97,10 @@ int WvDiffieHellman::get_public_value(WvBuf &outbuf, int len)
+ 
+ bool WvDiffieHellman::create_secret(WvBuf &inbuf, size_t in_len, WvBuf& outbuf)
+ {
++   const BIGNUM *pub_key = NULL;
++   DH_get0_key(info, &pub_key, NULL);
+     unsigned char *foo = (unsigned char *)alloca(DH_size(info));
+-   log("My public value\n%s\nYour public value\n%s\n",BN_bn2hex(info->pub_key),
++   log("My public value\n%s\nYour public value\n%s\n",BN_bn2hex(pub_key),
+        hexdump_buffer(inbuf.peek(0, in_len), in_len, false));
+     int len = DH_compute_key (foo, BN_bin2bn(inbuf.get(in_len), in_len, NULL), 
+ 			      info);
+diff --git a/crypto/wvdigest.cc b/crypto/wvdigest.cc
+index 150edee..73ebb5d 100644
+--- a/crypto/wvdigest.cc
++++ b/crypto/wvdigest.cc
+@@ -13,10 +13,10 @@
+ 
+ /***** WvEVPMDDigest *****/
+ 
+-WvEVPMDDigest::WvEVPMDDigest(const env_md_st *_evpmd) :
++WvEVPMDDigest::WvEVPMDDigest(const EVP_MD*_evpmd) :
+     evpmd(_evpmd), active(false)
+ {
+-    evpctx = new EVP_MD_CTX;
++    evpctx = EVP_MD_CTX_new();
+     _reset();
+ }
+ 
+@@ -24,7 +24,7 @@ WvEVPMDDigest::WvEVPMDDigest(const env_md_st *_evpmd) :
+ WvEVPMDDigest::~WvEVPMDDigest()
+ {
+     cleanup();
+-    delete evpctx;
++    EVP_MD_CTX_free(evpctx);
+ }
+ 
+ 
+@@ -60,7 +60,7 @@ bool WvEVPMDDigest::_reset()
+     // the typecast is necessary for API compatibility with different
+     // versions of openssl.  None of them *actually* change the contents of
+     // the pointer.
+-    EVP_DigestInit(evpctx, (env_md_st *)evpmd);
++    EVP_DigestInit(evpctx, evpmd);
+     active = true;
+     return true;
+ }
+@@ -79,7 +79,7 @@ void WvEVPMDDigest::cleanup()
+ 
+ size_t WvEVPMDDigest::digestsize() const
+ {
+-    return EVP_MD_size((env_md_st *)evpmd);
++    return EVP_MD_size(evpmd);
+ }
+ 
+ 
+@@ -104,14 +104,14 @@ WvHMACDigest::WvHMACDigest(WvEVPMDDigest *_digest,
+ {
+     key = new unsigned char[keysize];
+     memcpy(key, _key, keysize);
+-    hmacctx = new HMAC_CTX;
++    hmacctx = HMAC_CTX_new();
+     _reset();
+ }
+ 
+ WvHMACDigest::~WvHMACDigest()
+ {
+     cleanup();
+-    delete hmacctx;
++    HMAC_CTX_free(hmacctx);
+     deletev key;
+     delete digest;
+ }
+@@ -145,7 +145,7 @@ bool WvHMACDigest::_finish(WvBuf &outbuf)
+ bool WvHMACDigest::_reset()
+ {
+     cleanup();
+-    HMAC_Init(hmacctx, key, keysize, (env_md_st *)digest->getevpmd());
++    HMAC_Init(hmacctx, key, keysize, digest->getevpmd());
+     active = true;
+     return true;
+ }
+diff --git a/crypto/wvocsp.cc b/crypto/wvocsp.cc
+index ddb2de4..7d5da07 100644
+--- a/crypto/wvocsp.cc
++++ b/crypto/wvocsp.cc
+@@ -118,9 +118,10 @@ bool WvOCSPResp::check_nonce(const WvOCSPReq &req) const
+ 
+ bool WvOCSPResp::signedbycert(const WvX509 &cert) const
+ {
+-    EVP_PKEY *skey = X509_get_pubkey(cert.cert);
+-    int i = OCSP_BASICRESP_verify(bs, skey, 0);
+-    EVP_PKEY_free(skey);
++    STACK_OF(X509) *sk = sk_X509_new_null();
++    sk_X509_push(sk, cert.cert);
++    int i = OCSP_basic_verify(bs, sk, NULL, OCSP_NOVERIFY);
++    sk_X509_free(sk);
+ 
+     if(i > 0)
+         return true;
+@@ -131,33 +132,15 @@ bool WvOCSPResp::signedbycert(const WvX509 &cert) const
+ 
+ WvX509 WvOCSPResp::get_signing_cert() const
+ {
+-    if (!bs || !sk_X509_num(bs->certs))
++    const STACK_OF(X509) *certs = OCSP_resp_get0_certs(bs);
++    if (!bs || !sk_X509_num(certs))
+         return WvX509();
+ 
+-    // note: the following bit of code is taken almost verbatim from
+-    // ocsp_vfy.c in OpenSSL 0.9.8. Copyright and attribution should 
+-    // properly belong to them
+-
+-    OCSP_RESPID *id = bs->tbsResponseData->responderId;
+-
+-    if (id->type == V_OCSP_RESPID_NAME)
+-    {
+-        X509 *x = X509_find_by_subject(bs->certs, id->value.byName);
+-        if (x)
+-            return WvX509(X509_dup(x));
++    X509 *signer = NULL;
++    if (OCSP_resp_get0_signer(bs, &signer, NULL) == 1) {
++        return WvX509(X509_dup(signer));
+     }
+ 
+-    if (id->value.byKey->length != SHA_DIGEST_LENGTH) return NULL;
+-    unsigned char tmphash[SHA_DIGEST_LENGTH];
+-    unsigned char *keyhash = id->value.byKey->data;
+-    for (int i = 0; i < sk_X509_num(bs->certs); i++)
+-    {
+-        X509 *x = sk_X509_value(bs->certs, i);
+-        X509_pubkey_digest(x, EVP_sha1(), tmphash, NULL);
+-        if(!memcmp(keyhash, tmphash, SHA_DIGEST_LENGTH))
+-            return WvX509(X509_dup(x));
+-    }
+-    
+     return WvX509();
+ }
+ 
+diff --git a/crypto/wvx509.cc b/crypto/wvx509.cc
+index e4925ce..984156c 100644
+--- a/crypto/wvx509.cc
++++ b/crypto/wvx509.cc
+@@ -974,7 +974,7 @@ static void add_aia(WvStringParm type, WvString identifier,
+     sk_ACCESS_DESCRIPTION_push(ainfo, acc);
+     acc->method = OBJ_txt2obj(type.cstr(), 0);
+     acc->location->type = GEN_URI;
+-    acc->location->d.ia5 = M_ASN1_IA5STRING_new();
++    acc->location->d.ia5 = ASN1_IA5STRING_new();
+     unsigned char *cident 
+ 	= reinterpret_cast<unsigned char *>(identifier.edit());
+     ASN1_STRING_set(acc->location->d.ia5, cident, identifier.len());
+@@ -1059,7 +1059,7 @@ void WvX509::set_crl_urls(WvStringList &urls)
+         GENERAL_NAMES *uris = GENERAL_NAMES_new();
+         GENERAL_NAME *uri = GENERAL_NAME_new();
+         uri->type = GEN_URI;
+-        uri->d.ia5 = M_ASN1_IA5STRING_new();
++        uri->d.ia5 = ASN1_IA5STRING_new();
+         unsigned char *cident
+ 	    = reinterpret_cast<unsigned char *>(i().edit());    
+         ASN1_STRING_set(uri->d.ia5, cident, i().len());
+@@ -1162,10 +1162,11 @@ WvString WvX509::get_extension(int nid) const
+ #else
+             X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
+ #endif
++            ASN1_OCTET_STRING *ext_data_str = X509_EXTENSION_get_data(ext);
+             if (!method)
+             {
+                 WvDynBuf buf;
+-                buf.put(ext->value->data, ext->value->length);
++                buf.put(ext_data_str->data, ext_data_str->length);
+                 retval = buf.getstr();
+             }
+             else
+@@ -1176,21 +1177,21 @@ WvString WvX509::get_extension(int nid) const
+                 // even though it's const (at least as of version 0.9.8e). 
+                 // gah.
+ #if OPENSSL_VERSION_NUMBER >= 0x0090800fL
+-                const unsigned char * ext_value_data = ext->value->data;
++                const unsigned char * ext_value_data = ext_data_str->data;
+ #else
+                 unsigned char *ext_value_data = ext->value->data;
+ #endif
+                 if (method->it)
+                 {
+                     ext_data = ASN1_item_d2i(NULL, &ext_value_data,
+-                                             ext->value->length, 
++                                             ext_data_str->length, 
+                                              ASN1_ITEM_ptr(method->it));
+                     TRACE("Applied generic conversion!\n");
+                 }
+                 else
+                 {
+                     ext_data = method->d2i(NULL, &ext_value_data,
+-                                           ext->value->length);
++                                           ext_data_str->length);
+                     TRACE("Applied method specific conversion!\n");
+                 }
+                 
+@@ -1325,13 +1326,13 @@ bool WvX509::verify(WvBuf &original, WvStringParm signature) const
+         return false;
+     
+     /* Verify the signature */
+-    EVP_MD_CTX sig_ctx;
+-    EVP_VerifyInit(&sig_ctx, EVP_sha1());
+-    EVP_VerifyUpdate(&sig_ctx, original.peek(0, original.used()),
++    EVP_MD_CTX *sig_ctx = EVP_MD_CTX_new();
++    EVP_VerifyInit(sig_ctx, EVP_sha1());
++    EVP_VerifyUpdate(sig_ctx, original.peek(0, original.used()),
+ 		     original.used());
+-    int sig_err = EVP_VerifyFinal(&sig_ctx, sig_buf, sig_size, pk);
++    int sig_err = EVP_VerifyFinal(sig_ctx, sig_buf, sig_size, pk);
+     EVP_PKEY_free(pk);
+-    EVP_MD_CTX_cleanup(&sig_ctx); // Again, not my fault... 
++    EVP_MD_CTX_free(sig_ctx); // Again, not my fault... 
+     if (sig_err != 1) 
+     {
+         debug("Verify failed!\n");
+@@ -1450,19 +1451,19 @@ void WvX509::set_ski()
+ {
+     CHECK_CERT_EXISTS_SET("ski");
+ 
+-    ASN1_OCTET_STRING *oct = M_ASN1_OCTET_STRING_new();
+-    ASN1_BIT_STRING *pk = cert->cert_info->key->public_key;
++    ASN1_OCTET_STRING *oct = ASN1_OCTET_STRING_new();
++    ASN1_BIT_STRING *pk = X509_get0_pubkey_bitstr(cert);
+     unsigned char pkey_dig[EVP_MAX_MD_SIZE];
+     unsigned int diglen;
+ 
+     EVP_Digest(pk->data, pk->length, pkey_dig, &diglen, EVP_sha1(), NULL);
+ 
+-    M_ASN1_OCTET_STRING_set(oct, pkey_dig, diglen);
++    ASN1_OCTET_STRING_set(oct, pkey_dig, diglen);
+     X509_EXTENSION *ext = X509V3_EXT_i2d(NID_subject_key_identifier, 0, 
+ 					oct);
+     X509_add_ext(cert, ext, -1);
+     X509_EXTENSION_free(ext);
+-    M_ASN1_OCTET_STRING_free(oct);
++    ASN1_OCTET_STRING_free(oct);
+ }
+ 
+ 
+diff --git a/crypto/wvx509mgr.cc b/crypto/wvx509mgr.cc
+index f249eec..156d3a4 100644
+--- a/crypto/wvx509mgr.cc
++++ b/crypto/wvx509mgr.cc
+@@ -350,6 +350,8 @@ bool WvX509Mgr::signcert(WvX509 &unsignedcert) const
+         return false;
+     }
+ 
++    uint32_t ex_flags = X509_get_extension_flags(cert);
++    uint32_t ex_kusage = X509_get_key_usage(cert);
+     if (cert == unsignedcert.cert)
+     {
+ 	debug("Self Signing!\n");
+@@ -362,8 +364,8 @@ bool WvX509Mgr::signcert(WvX509 &unsignedcert) const
+         return false;
+     }
+ #endif
+-    else if (!((cert->ex_flags & EXFLAG_KUSAGE) && 
+-               (cert->ex_kusage & KU_KEY_CERT_SIGN)))
++    else if (!((ex_flags & EXFLAG_KUSAGE) && 
++               (ex_kusage & KU_KEY_CERT_SIGN)))
+     {
+ 	debug("This Certificate is not allowed to sign certificates!\n");
+ 	return false;
+@@ -390,6 +392,8 @@ bool WvX509Mgr::signcert(WvX509 &unsignedcert) const
+ 
+ bool WvX509Mgr::signcrl(WvCRL &crl) const
+ {
++    uint32_t ex_flags = X509_get_extension_flags(cert);
++    uint32_t ex_kusage = X509_get_key_usage(cert);
+     if (!isok() || !crl.isok())
+     {
+         debug(WvLog::Warning, "Asked to sign CRL, but certificate or CRL (or "
+@@ -403,12 +407,12 @@ bool WvX509Mgr::signcrl(WvCRL &crl) const
+               "CRLs!\n");
+         return false;
+     }
+-    else if (!((cert->ex_flags & EXFLAG_KUSAGE) && 
+-	  (cert->ex_kusage & KU_CRL_SIGN)))
++    else if (!((ex_flags & EXFLAG_KUSAGE) && 
++	  (ex_kusage & KU_CRL_SIGN)))
+     {
+ 	debug("Certificate not allowed to sign CRLs! (%s %s)\n", 
+-              (cert->ex_flags & EXFLAG_KUSAGE),
+-	      (cert->ex_kusage & KU_CRL_SIGN));
++              (ex_flags & EXFLAG_KUSAGE),
++	      (ex_kusage & KU_CRL_SIGN));
+ 	return false;
+     }
+ #endif
+@@ -454,7 +458,6 @@ WvString WvX509Mgr::sign(WvBuf &data) const
+ {
+     assert(rsa);
+ 
+-    EVP_MD_CTX sig_ctx;
+     unsigned char sig_buf[4096];
+     
+     EVP_PKEY *pk = EVP_PKEY_new();
+@@ -467,20 +470,22 @@ WvString WvX509Mgr::sign(WvBuf &data) const
+ 	return WvString::null;
+     }
+     
+-    EVP_SignInit(&sig_ctx, EVP_sha1());
+-    EVP_SignUpdate(&sig_ctx, data.peek(0, data.used()), data.used());
++    EVP_MD_CTX *sig_ctx = EVP_MD_CTX_new();
++    EVP_SignInit(sig_ctx, EVP_sha1());
++    EVP_SignUpdate(sig_ctx, data.peek(0, data.used()), data.used());
+     unsigned int sig_len = sizeof(sig_buf);
+-    int sig_err = EVP_SignFinal(&sig_ctx, sig_buf, 
++    int sig_err = EVP_SignFinal(sig_ctx, sig_buf, 
+ 				&sig_len, pk);
+     if (sig_err != 1)
+     {
+ 	debug("Error while signing.\n");
+ 	EVP_PKEY_free(pk);
++	EVP_MD_CTX_free(sig_ctx);
+ 	return WvString::null;
+     }
+ 
+     EVP_PKEY_free(pk);
+-    EVP_MD_CTX_cleanup(&sig_ctx); // this isn't my fault ://
++    EVP_MD_CTX_free(sig_ctx); // this isn't my fault ://
+     WvDynBuf buf;
+     buf.put(sig_buf, sig_len);
+     debug("Signature size: %s\n", buf.used());
+diff --git a/include/wvdiffiehellman.h b/include/wvdiffiehellman.h
+index af75ffa..a2d001f 100644
+--- a/include/wvdiffiehellman.h
++++ b/include/wvdiffiehellman.h
+@@ -27,7 +27,7 @@ public:
+     bool create_secret(WvBuf &inbuf, size_t in_len, WvBuf& outbuf);
+ 
+ protected:
+-    struct dh_st *info;
++    DH *info;
+     BN_ULONG generator;
+ 
+ private:
+diff --git a/include/wvdigest.h b/include/wvdigest.h
+index fdc39bd..f2eed40 100644
+--- a/include/wvdigest.h
++++ b/include/wvdigest.h
+@@ -9,10 +9,8 @@
+ 
+ #include "wvencoder.h"
+ #include <stdint.h>
++#include <openssl/evp.h>
+ 
+-struct env_md_st;
+-struct env_md_ctx_st;
+-struct hmac_ctx_st;
+ 
+ /**
+  * Superclass for all message digests.
+@@ -45,8 +43,8 @@ public:
+ class WvEVPMDDigest : public WvDigest
+ {
+     friend class WvHMACDigest;
+-    const env_md_st *evpmd;
+-    env_md_ctx_st *evpctx;
++    const EVP_MD *evpmd;
++    EVP_MD_CTX *evpctx;
+     bool active;
+ 
+ public:
+@@ -54,13 +52,13 @@ public:
+     virtual size_t digestsize() const;
+ 
+ protected:
+-    WvEVPMDDigest(const env_md_st *_evpmd);
++    WvEVPMDDigest(const EVP_MD *_evpmd);
+     virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf,
+         bool flush); // consumes input
+     virtual bool _finish(WvBuf &outbuf); // outputs digest
+     virtual bool _reset(); // supported: resets digest value
+     
+-    const env_md_st *getevpmd()
++    const EVP_MD *getevpmd()
+         { return evpmd; }
+ 
+ private:
+@@ -104,7 +102,7 @@ class WvHMACDigest : public WvDigest
+     WvEVPMDDigest *digest;
+     unsigned char *key;
+     size_t keysize;
+-    hmac_ctx_st *hmacctx;
++    HMAC_CTX *hmacctx;
+     bool active;
+ 
+ public:
+diff --git a/include/wvtripledes.h b/include/wvtripledes.h
+index 185fe8a..a442e7a 100644
+--- a/include/wvtripledes.h
++++ b/include/wvtripledes.h
+@@ -70,11 +70,11 @@ protected:
+ 
+ private:
+     Mode mode;
+-    des_cblock key;
+-    des_key_schedule deskey1;
+-    des_key_schedule deskey2;
+-    des_key_schedule deskey3;
+-    des_cblock ivec; // initialization vector
++    DES_cblock key;
++    DES_key_schedule deskey1;
++    DES_key_schedule deskey2;
++    DES_key_schedule deskey3;
++    DES_cblock ivec; // initialization vector
+     int ivecoff; // current offset into initvec
+ };
+ 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff
index 8e4fd03..616843d 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff
@@ -1,16 +1,3 @@
-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
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch
new file mode 100644
index 0000000..1c7005c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch
@@ -0,0 +1,16 @@
+Index: wvstreams-4.6.1/crypto/wvx509.cc
+===================================================================
+--- wvstreams-4.6.1.orig/crypto/wvx509.cc
++++ wvstreams-4.6.1/crypto/wvx509.cc
+@@ -1157,7 +1157,11 @@ WvString WvX509::get_extension(int nid)
+         
+         if (ext)
+         {
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++            const X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
++#else
+             X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
++#endif
+             if (!method)
+             {
+                 WvDynBuf buf;
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
index e3d5e7d..b9f62da 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
@@ -21,6 +21,8 @@
            file://0005-check-for-libexecinfo-during-configure.patch \
            file://0001-build-fix-parallel-make.patch \
            file://0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch \
+           file://openssl-buildfix.patch \
+           file://0001-Forward-port-to-OpenSSL-1.1.x.patch \
            "
 
 SRC_URI[md5sum] = "2760dac31a43d452a19a3147bfde571c"
@@ -34,23 +36,21 @@
 
 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 = "libuniconf "
+PACKAGES_prepend = "uniconfd "
+PACKAGES_prepend = "libwvstreams-base "
+PACKAGES_prepend = "libwvstreams-extras "
 PACKAGES_prepend = "${PN}-valgrind "
 
+RPROVIDES_${PN}-dbg += "libuniconf-dbg uniconfd-dbg libwvstreams-base-dbg libwvstreams-extras-dbg"
+
 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/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
index 4920bce..9aff59c 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
@@ -11,10 +11,7 @@
 
 S = "${WORKDIR}/git"
 
-do_install () {
-        install -d ${D}/usr/include
-        install -m 0755 ${S}/zmq.hpp ${D}/usr/include/
-}
+inherit cmake
 
 PACKAGES = "${PN}-dev"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-dhcp-include-if_arp.h-from-libc-instead-of-linux-hea.patch b/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-dhcp-include-if_arp.h-from-libc-instead-of-linux-hea.patch
new file mode 100644
index 0000000..ada6540
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-dhcp-include-if_arp.h-from-libc-instead-of-linux-hea.patch
@@ -0,0 +1,39 @@
+From d8236d1d789f496a193dae5d2a15d706b81f6482 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= <martin@geanix.com>
+Date: Thu, 12 Jul 2018 10:19:50 +0200
+Subject: [PATCH] dhcp: include if_arp.h from libc instead of linux headers
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+To: ell@lists.01.org
+
+Compilation with musl libc fails due to redefinition of 'struct
+arp{req,req_old,hdr}' in linux/if_arp.h, since it is already defined and
+included in net/if_arp.h (through net/ethernet.h -> net/if_ether.h).
+
+The only symbols used from if_arp.h is ARPHRD_ETHER, so it should be
+safe to avoid the compile error by including the if_arp.h header from
+the c-library instead.
+
+Upstream-Status: Backport [https://lists.01.org/pipermail/ell/2018-July/001244.html]
+Signed-off-by: Martin Hundebøll <martin@geanix.com>
+---
+ ell/dhcp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ell/dhcp.c b/ell/dhcp.c
+index 6c90370..0d99f74 100644
+--- a/ell/dhcp.c
++++ b/ell/dhcp.c
+@@ -27,7 +27,7 @@
+ #include <netinet/ip.h>
+ #include <net/ethernet.h>
+ #include <linux/types.h>
+-#include <linux/if_arp.h>
++#include <net/if_arp.h>
+ #include <errno.h>
+ #include <time.h>
+ 
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-ell-fix-build-with-musl-libc.patch b/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-ell-fix-build-with-musl-libc.patch
deleted file mode 100644
index a172a93..0000000
--- a/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-ell-fix-build-with-musl-libc.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 4f8c68757b05d12392cd1a8aed174cb8e56f80e3 Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Thu, 5 Apr 2018 17:19:44 +0300
-Subject: [PATCH] ell: fix build with musl libc
-
-musl libc doesn't implement TEMP_FAILURE_RETRY. Use the
-TEMP_FAILURE_RETRY from glibc to fix build.
-
-Upstream-Status: Submitted [https://lists.01.org/pipermail/ell/2018-April/001209.html]
-
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- ell/dbus.h | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/ell/dbus.h b/ell/dbus.h
-index a7c08d2..3ff5e0f 100644
---- a/ell/dbus.h
-+++ b/ell/dbus.h
-@@ -28,6 +28,16 @@
- #include <stddef.h>
- #include <stdarg.h>
- 
-+/* taken from glibc unistd.h for musl support */
-+#ifndef TEMP_FAILURE_RETRY
-+#define TEMP_FAILURE_RETRY(expression)             \
-+  (__extension__                                   \
-+    ({ long int __result;                          \
-+       do __result = (long int) (expression);      \
-+       while (__result == -1L && errno == EINTR);  \
-+       __result; }))
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
--- 
-2.4.0
-
diff --git a/meta-openembedded/meta-oe/recipes-core/ell/ell_0.4.bb b/meta-openembedded/meta-oe/recipes-core/ell/ell_0.8.bb
similarity index 60%
rename from meta-openembedded/meta-oe/recipes-core/ell/ell_0.4.bb
rename to meta-openembedded/meta-oe/recipes-core/ell/ell_0.8.bb
index 1524bd6..0428cab 100644
--- a/meta-openembedded/meta-oe/recipes-core/ell/ell_0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-core/ell/ell_0.8.bb
@@ -7,13 +7,11 @@
 inherit autotools pkgconfig
 
 S = "${WORKDIR}/git"
-SRCREV = "b4aea06fabb2af1af01f861f8f394c75950b6d47"
-SRC_URI = "git://git.kernel.org/pub/scm/libs/ell/ell.git \
-           file://0001-ell-fix-build-with-musl-libc.patch \
-          "
+SRCREV = "d572281caedef357c392a7c9aa65a3b21a18cfdb"
+SRC_URI = "git://git.kernel.org/pub/scm/libs/ell/ell.git"
 
 do_configure_prepend () {
-    mkdir ${S}/build-aux
+    mkdir -p ${S}/build-aux
 }
 
 DEPENDS = "dbus"
diff --git a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/0001-Glib-Threads-Private-Fix-gobj.patch b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/0001-Glib-Threads-Private-Fix-gobj.patch
deleted file mode 100644
index 7899022..0000000
--- a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/0001-Glib-Threads-Private-Fix-gobj.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 838fe84c2ddcc9af51c34f751defbf3dd0ba8a06 Mon Sep 17 00:00:00 2001
-From: Kjell Ahlstedt <kjellahlstedt@gmail.com>
-Date: Wed, 20 Dec 2017 20:00:32 +0100
-Subject: [PATCH] Glib::Threads::Private: Fix gobj()
-
-Bug 791711
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Backport [https://github.com/GNOME/glibmm/commit/37d57ae9572b7d74aa385a30313eceae7f2d3fce]
- glib/glibmm/threads.h | 2 +-
- glib/src/threads.hg   | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/glib/glibmm/threads.h b/glib/glibmm/threads.h
-index f7e2b82a..2c0cbe8c 100644
---- a/glib/glibmm/threads.h
-+++ b/glib/glibmm/threads.h
-@@ -657,7 +657,7 @@ public:
-    */
-   inline void replace(T* data);
- 
--  GPrivate* gobj() { return gobject_; }
-+  GPrivate* gobj() { return &gobject_; }
- 
- private:
-   GPrivate gobject_;
-diff --git a/glib/src/threads.hg b/glib/src/threads.hg
-index 86d7a17b..c82a6130 100644
---- a/glib/src/threads.hg
-+++ b/glib/src/threads.hg
-@@ -628,7 +628,7 @@ public:
-    */
-   inline void replace(T* data);
- 
--  GPrivate* gobj() { return gobject_; }
-+  GPrivate* gobj() { return &gobject_; }
- 
- private:
-   GPrivate gobject_;
diff --git a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.54.1.bb b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.56.0.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.54.1.bb
rename to meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.56.0.bb
index 4706432..2f048d2 100644
--- a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.54.1.bb
+++ b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.56.0.bb
@@ -13,10 +13,9 @@
 SRC_URI = " \
     ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/${SHRT_VER}/glibmm-${PV}.tar.xz \
     file://remove-examples.patch \
-    file://0001-Glib-Threads-Private-Fix-gobj.patch \
 "
-SRC_URI[md5sum] = "dee5ebe309f5976c3dacfcf5c43a062b"
-SRC_URI[sha256sum] = "7cc28c732b04d70ed34f0c923543129083cfb90580ea4a2b4be5b38802bf6a4a"
+SRC_URI[md5sum] = "5aa7a60084fe3e01d746c96f4a115302"
+SRC_URI[sha256sum] = "6e74fcba0d245451c58fc8a196e9d103789bc510e1eee1a9b1e816c5209e79a9"
 
 do_install_append() {
     install -d ${D}${datadir}/glibmm-2.4
diff --git a/meta-openembedded/meta-oe/recipes-core/images/meta-oe-image-base.bb b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-image-base.bb
new file mode 100644
index 0000000..df92f16
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-image-base.bb
@@ -0,0 +1,7 @@
+SUMMARY = "meta-oe build test image"
+
+IMAGE_INSTALL = "packagegroup-core-boot"
+
+LICENSE = "MIT"
+
+inherit core-image
diff --git a/meta-openembedded/meta-oe/recipes-core/images/meta-oe-image.bb b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-image.bb
new file mode 100644
index 0000000..1565549
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-image.bb
@@ -0,0 +1,5 @@
+require  meta-oe-image-base.bb
+
+SUMMARY = "meta-oe build test image"
+
+IMAGE_INSTALL += "packagegroup-meta-oe"
diff --git a/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-image.bb b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-image.bb
new file mode 100644
index 0000000..0166b9c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/images/meta-oe-ptest-image.bb
@@ -0,0 +1,5 @@
+require  meta-oe-image-base.bb
+
+SUMMARY = "meta-oe ptest test image"
+
+IMAGE_INSTALL += "packagegroup-meta-oe"
diff --git a/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.11.bb b/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.11.bb
deleted file mode 100644
index 591caa7..0000000
--- a/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.11.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-inherit gnomebase
-
-SRC_URI[archive.md5sum] = "d6f2a43589480d2315672da0b5839b56"
-SRC_URI[archive.sha256sum] = "20d1e7466ca4c83c92e29f9e8dfcc8e5721fdf1337f53157bed97be3b73b32a8"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.12.bb b/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.12.bb
new file mode 100644
index 0000000..4f91f31
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.12.bb
@@ -0,0 +1,9 @@
+inherit gnomebase
+
+SRC_URI[archive.md5sum] = "be1c61587db989c7677375a729b94672"
+SRC_URI[archive.sha256sum] = "ceffdcce1e5b52742884c233ec604bf6fded12eea9da077ce7a62c02c87e7c0b"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_git.bb b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_git.bb
new file mode 100644
index 0000000..048f166
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_git.bb
@@ -0,0 +1,33 @@
+SUMMARY = "libnvdimm utility library"
+DESCRIPTION = "Utility library for managing the libnvdimm \
+(non-volatile memory device) sub-system in the Linux kernel. \
+The LIBNVDIMM subsystem provides support for three types of \
+NVDIMMs, namely,PMEM, BLK, and NVDIMM devices that can \
+simultaneously support both PMEM and BLK mode access."
+HOMEPAGE = "https://git.kernel.org/cgit/linux/kernel/git/nvdimm/nvdimm.git/tree/Documentation/nvdimm/nvdimm.txt?h=libnvdimm-for-next"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e66651809cac5da60c8b80e9e4e79e08"
+
+inherit autotools-brokensep pkgconfig module-base bash-completion systemd
+
+# v62
+SRCREV = "11f560f4048c1d38b7011a49566871a1e8a07c94"
+SRC_URI = "git://github.com/pmem/ndctl.git"
+
+DEPENDS = "virtual/kernel kmod udev json-c"
+
+PV = "v62+git${SRCPV}"
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF += "--enable-test --enable-destructive --disable-docs"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[systemd] = "--with-systemd-unit-dir=${systemd_system_unitdir}, --without-systemd-unit-dir,"
+
+do_configure_prepend() {
+    ${S}/autogen.sh
+}
+
+SYSTEMD_SERVICE_${PN} = "ndctl-monitor.service"
+
+COMPATIBLE_HOST='(x86_64).*'
diff --git a/meta-openembedded/meta-oe/recipes-core/opencl-headers/opencl-headers_git.bb b/meta-openembedded/meta-oe/recipes-core/opencl-headers/opencl-headers_git.bb
new file mode 100644
index 0000000..dec1bea
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/opencl-headers/opencl-headers_git.bb
@@ -0,0 +1,17 @@
+SUMMARY  = "OpenCL API Headers"
+DESCRIPTION = "OpenCL compute API headers from Khronos Group"
+LICENSE  = "Khronos"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dcefc90f4c3c689ec0c2489064e7273b"
+SECTION = "base"
+
+S = "${WORKDIR}/git"
+SRCREV = "40c5d226c7c0706f0176884e9b94b3886679c983"
+SRC_URI = "git://github.com/KhronosGroup/OpenCL-Headers.git"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install () {
+	install -d ${D}${includedir}/CL/
+	install -m 0644 ${S}/CL/*.h ${D}${includedir}/CL
+}
diff --git a/meta-openembedded/meta-oe/recipes-core/opencl-icd-loader/opencl-icd-loader_git.bb b/meta-openembedded/meta-oe/recipes-core/opencl-icd-loader/opencl-icd-loader_git.bb
new file mode 100644
index 0000000..7c49c8d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/opencl-icd-loader/opencl-icd-loader_git.bb
@@ -0,0 +1,45 @@
+SUMMARY  = "OpenCL ICD Loader"
+DESCRIPTION = "OpenCL compute ICD Loader from Khronos Group"
+LICENSE  = "Khronos"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ec724732ce73269486574c718ef0c79b"
+SECTION = "base"
+
+inherit pkgconfig cmake
+
+S = "${WORKDIR}/git"
+SRCREV = "b342ff7b7f70a4b3f2cfc53215af8fa20adc3d86"
+SRC_URI = "git://github.com/KhronosGroup/OpenCL-ICD-Loader.git"
+
+do_install () {
+	install -d ${D}${bindir}
+	install -m 0755 ${B}/bin/icd_loader_test ${D}${bindir}/
+	chrpath -d ${D}${bindir}/icd_loader_test
+	install -d ${D}${libdir}
+	install -m 0644 ${B}/lib/libIcdLog.so ${D}${libdir}/
+	install -m 0644 ${B}/lib/libOpenCLDriverStub.so ${D}${libdir}/
+	chrpath -d ${D}${libdir}/libOpenCLDriverStub.so
+	install -m 0644 ${B}/lib/libOpenCL.so.1.2 ${D}${libdir}/
+	cd ${D}${libdir}
+	ln -s libOpenCL.so.1.2 libOpenCL.so.1
+	ln -s libOpenCL.so.1 libOpenCL.so
+}
+
+PACKAGES = "opencl-icd-loader opencl-icd-loader-dev"
+PACKAGES += "libicdlog libicdlog-dbg"
+PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
+
+FILES_${PN} = " \
+	${bindir}/icd_loader_test \
+	${libdir}/libOpenCLDriverStub.so \
+	${libdir}/libOpenCL.so.1.2 \
+"
+FILES_${PN}-dev = " \
+	${libdir}/libOpenCL.so \
+	${libdir}/libOpenCL.so.1 \
+"
+
+FILES_libicdlog = "${libdir}/libIcdLog.so"
+FILES_libicdlog-dbg = "${libdir}/.debug/libIcdLog.so"
+
+DEPENDS = "opencl-headers"
+RDEPENDS_${PN} = "libicdlog"
diff --git a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
new file mode 100644
index 0000000..08b4bbf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
@@ -0,0 +1,253 @@
+SUMMARY = "Meta-oe ptest packagegroups"
+
+inherit packagegroup
+
+PROVIDES = "${PACKAGES}"
+PACKAGES = ' \
+    packagegroup-meta-oe \
+    packagegroup-meta-oe-benchmarks \
+    packagegroup-meta-oe-connectivity \
+    packagegroup-meta-oe-core \
+    packagegroup-meta-oe-crypto \
+    packagegroup-meta-oe-bsp \
+    packagegroup-meta-oe-dbs \
+    packagegroup-meta-oe-devtools \
+    packagegroup-meta-oe-extended \
+    packagegroup-meta-oe-kernel \
+    packagegroup-meta-oe-multimedia \
+    packagegroup-meta-oe-navigation \
+    packagegroup-meta-oe-security \
+    packagegroup-meta-oe-support \
+    packagegroup-meta-oe-test \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "packagegroup-meta-oe-gnome", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "packagegroup-meta-oe-graphics", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "ptest", "packagegroup-meta-oe-ptest", "", d)} \
+'
+
+RDEPENDS_packagegroup-meta-oe = "\
+    packagegroup-meta-oe-benchmarks \
+    packagegroup-meta-oe-connectivity \
+    packagegroup-meta-oe-core \
+    packagegroup-meta-oe-crypto \
+    packagegroup-meta-oe-bsp \
+    packagegroup-meta-oe-dbs \
+    packagegroup-meta-oe-devtools \
+    packagegroup-meta-oe-extended \
+    packagegroup-meta-oe-kernel \
+    packagegroup-meta-oe-multimedia \
+    packagegroup-meta-oe-navigation \
+    packagegroup-meta-oe-security \
+    packagegroup-meta-oe-support \
+    packagegroup-meta-oe-test \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "packagegroup-meta-oe-gnome", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "packagegroup-meta-oe-graphics", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "ptest", "packagegroup-meta-oe-ptest", "", d)} \
+"
+
+RDEPENDS_packagegroup-meta-oe-benchmarks = "\
+    analyze-suspend dhrystone iperf2 linpack phoronix-test-suite \
+    tiobench bonnie++ fio iperf2 iperf3 lmbench s-suite whetstone \
+    libc-bench memtester sysbench dbench iozone3 libhugetlbfs \
+    nbench-byte tinymembench \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11 wayland opengl", "glmark2", "", d)} \
+"
+
+RDEPENDS_packagegroup-meta-oe-connectivity ="\
+    gammu hostapd irssi krb5 libev libimobiledevice \
+    libmbim libmtp libndp libqmi libtorrent \
+    libuv libwebsockets linuxptp lirc loudmouth \
+    modemmanager mosh  \
+    paho-mqtt-c phonet-utils rabbitmq-c rfkill rtorrent \
+    ser2net smstools3 telepathy-glib telepathy-idle thrift \
+    usbmuxd wvstreams zabbix zeromq \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "obex-data-server", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "pulseadio bluez4", "libmikmod", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "bluez4", "obexftp openobex libnet wvdial", "", d)} \
+    "
+
+# dracut needs dracut
+RDEPENDS_packagegroup-meta-oe-core ="\
+    dbus-daemon-proxy libdbus-c++ eggdbus \
+    ell glibmm libsigc++-2.0 libxml++ distro-feed-configs \
+    mm-common opencl-headers opencl-icd-loader \
+    proxy-libintl usleep \
+    ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "dbus-broker ndctl", "", d)} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-crypto ="\
+    botan cryptsetup libkcapi libmcrypt \
+    libsodium pkcs11-helper \
+    "
+RDEPENDS_packagegroup-meta-oe-bsp ="\
+    acpitool cpufrequtils edac-utils efibootmgr \
+    efivar flashrom lmsensors lmsensors-config \
+    lsscsi nvme-cli pcmciautils pointercal \
+    "
+RDEPENDS_packagegroup-meta-oe-dbs ="\
+    leveldb libdbi mariadb mariadb-native \
+    mysql-python postgresql psqlodbc rocksdb soci \
+    sqlite \
+    ${@bb.utils.contains("DISTRO_FEATURES", "bluez4", "mongodb", "", d)} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-devtools ="\
+    android-tools android-tools-conf bootchart breakpad \
+    capnproto cgdb cscope ctags \
+    debootstrap dejagnu dmalloc flatbuffers \
+    giflib icon-slicer iptraf-ng jq jsoncpp jsonrpc json-spirit \
+    kconfig-frontends lemon libedit libgee libsombok3 \
+    libubox log4cplus lshw ltrace lua mcpp memstat mercurial \
+    mpich msgpack-c nlohmann-json nodejs openocd pax-utils \
+    ipc-run libdbd-mysql-perl libdbi-perl libio-pty-perl php \
+    protobuf protobuf-c python3-distutils-extra \
+    python-cpuset python-distutils-extra python-futures python-pygobject \
+    rapidjson serialcheck sip3 sip tclap uftrace uw-imap valijson \
+    xmlrpc-c yajl yasm \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "geany geany-plugins glade tk", "", d)} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-extended ="\
+    byacc cfengine cfengine-masterfiles cmpi-bindings \
+    ddrescue dialog dumb-init enscript fluentbit \
+    haveged hexedit hiredis hplip hwloc indent iotop isomd5sum \
+    jansson konkretcmpi lcdproc libblockdev libcec libconfig \
+    libdivecomputer libplist libusbmuxd \
+    liblockfile liblogging liblognorm libmodbus libmodbus \
+    libpwquality libqb libuio \
+    lockfile-progs logwatch lprng mailx md5deep \
+    mozjs mraa nana nicstat \
+    p7zip p8platform libfile-fnmatch-perl polkit \
+    polkit-group-rule-datetime polkit-group-rule-network \
+    rarpd redis rrdtool libfastjson librelp rsyslog sanlock \
+    sblim-cmpi-devel sblim-sfc-common sblim-sfcc \
+    scsirastools sgpio smartmontools snappy can-isotp \
+    can-utils libsocketcan tipcutils tiptop \
+    tmux uml-utilities upm vlock volume-key wipe zlog zram \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11 wayland opengl", "boinc-client", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", " libgxim t1lib gnuplot libwmf gtkmathview", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "bluez", "collectd", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "pam", "pam-plugin-ccreds pam-plugin-ldapdb", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "pam", "pam-ssh-agent-auth openwsman sblim-sfcb ", "", d)} \
+    ${@bb.utils.contains("BBPATH", "meta-python", "openlmi-tools", "", d)} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-gnome ="\
+    atkmm gnome-common gnome-doc-utils-stub gtkmm \
+    gtkmm3 pyxdg vte9 \
+    "
+
+RDEPENDS_packagegroup-meta-oe-graphics ="\
+    babl cairomm dietsplash directfb directfb-examples dnfdragora \
+    fbgrab fbida fontforge fvwm gegl gimp glm gphoto2 libgphoto2 \
+    gtkperf jasper leptonica libmng libsdl2-image libsdl2-mixer libsdl2-net \
+    libsdl-gfx libsdl-image libsdl-mixer libsdl-net libsdl-ttf \
+    libvncserver libyui libyui-ncurses lxdm numlockx openbox openjpeg \
+    packagegroup-fonts-truetype pangomm qrencode takao-fonts terminus-font \
+    tesseract tesseract-lang tigervnc tslib source-han-sans-cn-fonts \
+    source-han-sans-jp-fonts source-han-sans-kr-fonts source-han-sans-tw-fonts ttf-abyssinica \
+    libvdpau x11vnc xcursorgen xdotool \
+    bdftopcf iceauth sessreg setxkbmap twm xclock xfontsel xgamma xkbevd xkbprint xkbutils \
+    xlsatoms xlsclients xlsfonts xmag xmessage xrdb xrefresh xsetmode xsetroot xstdcmap \
+    xterm xwd xwud xbitmaps xorg-sgml-doctools \
+    font-adobe-100dpi font-adobe-utopia-100dpi \
+    font-bh-100dpi font-bh-lucidatypewriter-100dpi font-bitstream-100dpi font-cursor-misc \
+    font-misc-misc xorg-fonts-100dpi liblbxutil libxaw libxkbui libxpresent xserver-common \
+    ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "freeglut libsdl2-ttf", "", d)} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-kernel ="\
+    agent-proxy bpftool broadcom-bt-firmware cpupower \
+    crash ipmitool minicoredumper oprofile \
+    "
+
+RDEPENDS_packagegroup-meta-oe-multimedia ="\
+    alsa-oss audiofile cdrkit esound id3lib \
+    a2jmidid jack libass libburn libcdio libcdio-paranoia \
+    libdvdread libmms libmodplug libopus live555 \
+    mplayer-common opus-tools \
+    sound-theme-freedesktop v4l-utils yavta wavpack libvpx \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "xpext pavucontrol xsp", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "pulseadio bluez4", "libmikmod", "", d)} \
+    ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libmad faad2 mpv", "", d)} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-navigation ="\
+    geoclue geos libspatialite proj \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "orrery", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "bluz4", "gpsd gpsd-machine-conf", "", d)} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-security ="\
+    tomoyo-tools \
+    ${@bb.utils.contains("DISTRO_FEATURES", "pam", "passwdqc", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "bluz5", "nmap", "", d)} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-shells ="\
+    dash tcsh zsh \
+    "
+
+NE10 = ""
+NE10_aarch64 = "ne10"
+NE10_arm7 = "ne10"
+
+RDEPENDS_packagegroup-meta-oe-support ="\
+    anthy asio atop augeas avro-c bdwgc frame grail \
+    ccid ceres-solver ckermit cpprest ctapi-common daemonize \
+    daemontools debsums devmem2 dfu-util dfu-util-native digitemp \
+    dstat eject enca epeg espeak espeak-data fbset fbset-modes \
+    fftw fltk-native gd gflags glog gnulib gperftools \
+    gpm gradm gsl gsoap hddtemp hidapi htop hunspell hwdata iksemel \
+    libinih inotify-tools joe lcms lcov libatasmart libbytesize \
+    libcereal libcyusbserial libee libeigen libestr libftdi libgit2 \
+    libgpiod libiio libjs-jquery libjs-sizzle liblinebreak libmicrohttpd \
+    libmxml libnih liboauth libol liboop libp11 libraw1394 libsmi libsoc libssh2 \
+    libssh libtar libteam libtinyxml2 libtinyxml libusbg libusb-compat libutempter \
+    links lio-utils lockdev log4c log4cpp logwarn libdevmapper lvm2 \
+    mailcap mbuffer mg minini \
+    multipath-tools nano neon nmon numactl onig openct openldap \
+    opensc wbxml2 p910nd pcsc-lite picocom libotr pidgin \
+    pngcheck poco poppler poppler-data portaudio-v19 pps-tools \
+    pv pxaregs raptor2 rdfind read-edid rsnapshot s3c24xx-gpio s3c64xx-gpio \
+    sjf2410-linux-native satyr sdparm pty-forward-native serial-forward \
+    sg3-utils sharutils smem spitools srecord ssiapi start-stop-daemon stm32flash \
+    syslog-ng system-config-keyboard tbb thin-provisioning-tools tokyocabinet \
+    tree udisks udisks2 uhubctl unixodbc upower uriparser usb-modeswitch \
+    usb-modeswitch-data usbpath uthash utouch-evemu utouch-frame \
+    vim vim-tiny websocketpp wmiconfig xdelta3 xdg-user-dirs xmlstarlet \
+    zbar zile \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "geis toscoterm uim synergy utouch-mtview links-x11 fltk pidgin-otr", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "pulseadio bluez4", "libcanberra", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "x11 pam", "xorgxrdp xrdp", "", d)} \
+    ${@bb.utils.contains("DISTRO_FEATURES", "bluez4", "procmail", "", d)} \
+    ${NE10} \
+    "
+
+RDEPENDS_packagegroup-meta-oe-support-egl ="\
+    freerdp libnice opencv \
+    "
+
+RDEPENDS_packagegroup-meta-oe-test ="\
+    catch2 cppunit cunit cxxtest evtest fb-test \
+    fwts gtest pm-qa stress-ng testfloat \
+    "
+
+RDEPENDS_packagegroup-meta-oe-ptest = "\
+    zeromq-ptest \
+    libxml-ptest \
+    soci-ptest \
+    leveldb-ptest \
+    psqlodbc-ptest \
+    lua-ptest \
+    protobuf-ptest \
+    libdbi-ptest \
+    rsyslog-ptest \
+    oprofile-ptest \
+    libteam-ptest \
+    uthash-ptest \
+    mcelog-ptest \
+    openldap-ptest \
+    libee-ptest \
+    numactl-ptest \
+    poco-ptest \
+    "
diff --git a/meta-openembedded/meta-oe/recipes-core/plymouth/files/0002-Fix-build-with-glibc-2.28.patch b/meta-openembedded/meta-oe/recipes-core/plymouth/files/0002-Fix-build-with-glibc-2.28.patch
new file mode 100644
index 0000000..8638f75
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/plymouth/files/0002-Fix-build-with-glibc-2.28.patch
@@ -0,0 +1,34 @@
+From 0c0345303b7971d6cec478fd8b81d64bc1fbe0f6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Tue, 21 Aug 2018 23:26:45 +0200
+Subject: [PATCH] Fix build with >= glibc 2.28
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Stolen from [1]
+
+[1] https://bugs.freedesktop.org/show_bug.cgi?id=102191
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ src/libply-splash-core/ply-terminal.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/libply-splash-core/ply-terminal.c b/src/libply-splash-core/ply-terminal.c
+index a0954f2..f3b32fe 100644
+--- a/src/libply-splash-core/ply-terminal.c
++++ b/src/libply-splash-core/ply-terminal.c
+@@ -32,6 +32,7 @@
+ #include <sys/socket.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <termios.h>
+ #include <unistd.h>
+ #include <wchar.h>
+-- 
+2.14.4
+
diff --git a/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb b/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb
index 7e8d6e3..a5b16c9 100644
--- a/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb
+++ b/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb
@@ -19,6 +19,7 @@
 SRC_URI = " \
     http://www.freedesktop.org/software/plymouth/releases/${BPN}-${PV}.tar.bz2 \
     file://0001-Make-full-path-to-systemd-tty-ask-password-agent-con.patch \
+    file://0002-Fix-build-with-glibc-2.28.patch \
 "
 SRC_URI[md5sum] = "ff420994deb7ea203df678df92e7ab7d"
 SRC_URI[sha256sum] = "2f0ce82042cf9c7eadd2517a1f74c8a85fa8699781d9f294a06eade29fbed57f"
diff --git a/meta-openembedded/meta-oe/recipes-core/toybox/toybox/OE-path-changes.patch b/meta-openembedded/meta-oe/recipes-core/toybox/toybox/OE-path-changes.patch
new file mode 100644
index 0000000..e42c22e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/toybox/toybox/OE-path-changes.patch
@@ -0,0 +1,195 @@
+diff --git a/toys/net/microcom.c b/toys/net/microcom.c
+index d34e1fe..a369e6c 100644
+--- a/toys/net/microcom.c
++++ b/toys/net/microcom.c
+@@ -2,7 +2,7 @@
+  *
+  * Copyright 2017 The Android Open Source Project.
+ 
+-USE_MICROCOM(NEWTOY(microcom, "<1>1s:X", TOYFLAG_BIN))
++USE_MICROCOM(NEWTOY(microcom, "<1>1s:X", TOYFLAG_USR|TOYFLAG_BIN))
+ 
+ config MICROCOM
+   bool "microcom"
+diff --git a/toys/other/blockdev.c b/toys/other/blockdev.c
+index 38e0993..c5d9fcd 100644
+--- a/toys/other/blockdev.c
++++ b/toys/other/blockdev.c
+@@ -4,7 +4,7 @@
+  *
+  * No Standard.
+ 
+-USE_BLOCKDEV(NEWTOY(blockdev, "<1>1(setro)(setrw)(getro)(getss)(getbsz)(setbsz)#<0(getsz)(getsize)(getsize64)(flushbufs)(rereadpt)",TOYFLAG_USR|TOYFLAG_BIN))
++USE_BLOCKDEV(NEWTOY(blockdev, "<1>1(setro)(setrw)(getro)(getss)(getbsz)(setbsz)#<0(getsz)(getsize)(getsize64)(flushbufs)(rereadpt)",TOYFLAG_SBIN))
+ 
+ config BLOCKDEV
+   bool "blockdev"
+diff --git a/toys/other/chrt.c b/toys/other/chrt.c
+index a1c37a0..d6db3a5 100644
+--- a/toys/other/chrt.c
++++ b/toys/other/chrt.c
+@@ -4,7 +4,7 @@
+  *
+  * Note: -ibrfo flags sorted to match SCHED positions for highest_bit()
+ 
+-USE_CHRT(NEWTOY(chrt, "^mp#<0iRbrfo[!ibrfo]", TOYFLAG_USR|TOYFLAG_SBIN))
++USE_CHRT(NEWTOY(chrt, "^mp#<0iRbrfo[!ibrfo]", TOYFLAG_USR|TOYFLAG_BIN))
+ 
+ config CHRT
+   bool "chrt"
+diff --git a/toys/other/hwclock.c b/toys/other/hwclock.c
+index 1d313e3..412582d 100644
+--- a/toys/other/hwclock.c
++++ b/toys/other/hwclock.c
+@@ -4,7 +4,7 @@
+  *
+  * No standard, but see Documentation/rtc.txt in the linux kernel source..
+  *
+-USE_HWCLOCK(NEWTOY(hwclock, ">0(fast)f(rtc):u(utc)l(localtime)t(systz)s(hctosys)r(show)w(systohc)[-ul][!rtsw]", TOYFLAG_USR|TOYFLAG_BIN))
++USE_HWCLOCK(NEWTOY(hwclock, ">0(fast)f(rtc):u(utc)l(localtime)t(systz)s(hctosys)r(show)w(systohc)[-ul][!rtsw]", TOYFLAG_SBIN))
+ 
+ config HWCLOCK
+   bool "hwclock"
+diff --git a/toys/other/modinfo.c b/toys/other/modinfo.c
+index 1178d67..966a9de 100644
+--- a/toys/other/modinfo.c
++++ b/toys/other/modinfo.c
+@@ -4,7 +4,7 @@
+  *
+  * TODO: cleanup
+ 
+-USE_MODINFO(NEWTOY(modinfo, "<1b:k:F:0", TOYFLAG_BIN))
++USE_MODINFO(NEWTOY(modinfo, "<1b:k:F:0", TOYFLAG_SBIN))
+ 
+ config MODINFO
+   bool "modinfo"
+diff --git a/toys/other/pmap.c b/toys/other/pmap.c
+index abb0a33..2acef02 100644
+--- a/toys/other/pmap.c
++++ b/toys/other/pmap.c
+@@ -5,7 +5,7 @@
+  *
+  * No Standard.
+ 
+-USE_PMAP(NEWTOY(pmap, "<1xq", TOYFLAG_BIN))
++USE_PMAP(NEWTOY(pmap, "<1xq", TOYFLAG_USR|TOYFLAG_BIN))
+ 
+ config PMAP
+   bool "pmap"
+diff --git a/toys/other/printenv.c b/toys/other/printenv.c
+index e8bcf29..65f62ed 100644
+--- a/toys/other/printenv.c
++++ b/toys/other/printenv.c
+@@ -2,7 +2,7 @@
+  *
+  * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org>
+ 
+-USE_PRINTENV(NEWTOY(printenv, "0(null)", TOYFLAG_USR|TOYFLAG_BIN))
++USE_PRINTENV(NEWTOY(printenv, "0(null)", TOYFLAG_BIN))
+ 
+ config PRINTENV
+   bool "printenv"
+diff --git a/toys/other/taskset.c b/toys/other/taskset.c
+index 8ffdab7..89fd528 100644
+--- a/toys/other/taskset.c
++++ b/toys/other/taskset.c
+@@ -2,7 +2,7 @@
+  *
+  * Copyright 2012 Elie De Brauwer <eliedebrauwer@gmail.com>
+ 
+-USE_TASKSET(NEWTOY(taskset, "<1^pa", TOYFLAG_BIN|TOYFLAG_STAYROOT))
++USE_TASKSET(NEWTOY(taskset, "<1^pa", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_STAYROOT))
+ USE_NPROC(NEWTOY(nproc, "(all)", TOYFLAG_USR|TOYFLAG_BIN))
+ 
+ config NPROC
+diff --git a/toys/other/timeout.c b/toys/other/timeout.c
+index 9b93466..e1d0f4d 100644
+--- a/toys/other/timeout.c
++++ b/toys/other/timeout.c
+@@ -4,7 +4,7 @@
+  *
+  * No standard
+ 
+-USE_TIMEOUT(NEWTOY(timeout, "<2^vk:s: ", TOYFLAG_BIN))
++USE_TIMEOUT(NEWTOY(timeout, "<2^vk:s: ", TOYFLAG_USR|TOYFLAG_BIN))
+ 
+ config TIMEOUT
+   bool "timeout"
+diff --git a/toys/other/truncate.c b/toys/other/truncate.c
+index 142d3c7..40eb1e5 100644
+--- a/toys/other/truncate.c
++++ b/toys/other/truncate.c
+@@ -2,7 +2,7 @@
+  *
+  * Copyright 2011 Rob Landley <rob@landley.net>
+ 
+-USE_TRUNCATE(NEWTOY(truncate, "<1s:|c", TOYFLAG_BIN))
++USE_TRUNCATE(NEWTOY(truncate, "<1s:|c", TOYFLAG_USR|TOYFLAG_BIN))
+ 
+ config TRUNCATE
+   bool "truncate"
+diff --git a/toys/posix/nice.c b/toys/posix/nice.c
+index 4b587ee..9f7b119 100644
+--- a/toys/posix/nice.c
++++ b/toys/posix/nice.c
+@@ -4,7 +4,7 @@
+  *
+  * See http://opengroup.org/onlinepubs/9699919799/utilities/nice.html
+ 
+-USE_NICE(NEWTOY(nice, "^<1n#", TOYFLAG_USR|TOYFLAG_BIN))
++USE_NICE(NEWTOY(nice, "^<1n#", TOYFLAG_BIN))
+ 
+ config NICE
+   bool "nice"
+diff --git a/toys/posix/nl.c b/toys/posix/nl.c
+index 9b02bfa..41e1b89 100644
+--- a/toys/posix/nl.c
++++ b/toys/posix/nl.c
+@@ -7,7 +7,7 @@
+  * This implements a subset: only one logical page (-ip), no sections (-dfh).
+  * todo: -lv
+ 
+-USE_NL(NEWTOY(nl, "v#<1=1l#b:n:s:w#<0=6E", TOYFLAG_BIN))
++USE_NL(NEWTOY(nl, "v#<1=1l#b:n:s:w#<0=6E", TOYFLAG_USR|TOYFLAG_BIN))
+ 
+ config NL
+   bool "nl"
+diff --git a/toys/posix/paste.c b/toys/posix/paste.c
+index ea04f02..8972f71 100644
+--- a/toys/posix/paste.c
++++ b/toys/posix/paste.c
+@@ -6,7 +6,7 @@
+  *
+  * Deviations from posix: the FILE argument isn't mandatory, none == '-'
+ 
+-USE_PASTE(NEWTOY(paste, "d:s", TOYFLAG_BIN|TOYFLAG_LOCALE))
++USE_PASTE(NEWTOY(paste, "d:s", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE))
+ 
+ config PASTE
+   bool "paste"
+diff --git a/toys/posix/ps.c b/toys/posix/ps.c
+index aef2a7f..b559e09 100644
+--- a/toys/posix/ps.c
++++ b/toys/posix/ps.c
+@@ -44,7 +44,7 @@
+  * TODO: top: thread support and SMP
+  * TODO: pgrep -f only searches the amount of cmdline that fits in toybuf.
+ 
+-USE_PS(NEWTOY(ps, "k(sort)*P(ppid)*aAdeflMno*O*p(pid)*s*t*Tu*U*g*G*wZ[!ol][+Ae][!oO]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE))
++USE_PS(NEWTOY(ps, "k(sort)*P(ppid)*aAdeflMno*O*p(pid)*s*t*Tu*U*g*G*wZ[!ol][+Ae][!oO]", TOYFLAG_BIN|TOYFLAG_LOCALE))
+ // stayroot because iotop needs root to read other process' proc/$$/io
+ USE_TOP(NEWTOY(top, ">0m" "O*Hk*o*p*u*s#<1d#=3<1n#<1bq[!oO]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE))
+ USE_IOTOP(NEWTOY(iotop, ">0AaKO" "k*o*p*u*s#<1=7d#=3<1n#<1bq", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_STAYROOT|TOYFLAG_LOCALE))
+diff --git a/toys/posix/sed.c b/toys/posix/sed.c
+index cf7d15e..130ac08 100644
+--- a/toys/posix/sed.c
++++ b/toys/posix/sed.c
+@@ -10,7 +10,7 @@
+  * TODO: handle error return from emit(), error_msg/exit consistently
+  *       What's the right thing to do for -i when write fails? Skip to next?
+ 
+-USE_SED(NEWTOY(sed, "(help)(version)e*f*inEr[+Er]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE|TOYFLAG_NOHELP))
++USE_SED(NEWTOY(sed, "(help)(version)e*f*inEr[+Er]", TOYFLAG_BIN|TOYFLAG_LOCALE|TOYFLAG_NOHELP))
+ 
+ config SED
+   bool "sed"
diff --git a/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb b/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb
index 347c285..7e8e7b2 100644
--- a/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb
+++ b/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb
@@ -1,11 +1,13 @@
 SUMMARY = "Toybox combines common utilities together into a single executable."
 HOMEPAGE = "http://www.landley.net/toybox/"
-DEPENDS = "attr"
+DEPENDS = "attr virtual/crypt"
 
 LICENSE = "BSD-0-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f0b8b3dd6431bcaa245da0a08bd0d511"
 
-SRC_URI = "http://www.landley.net/toybox/downloads/${BPN}-${PV}.tar.gz"
+SRC_URI = "http://www.landley.net/toybox/downloads/${BPN}-${PV}.tar.gz \
+           file://OE-path-changes.patch \
+           "
 SRC_URI[md5sum] = "a8bb502a1be941f06dd2644fff25f547"
 SRC_URI[sha256sum] = "3ada450ac1eab1dfc352fee915ea6129b9a4349c1885f1394b61bd2d89a46c04"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb b/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb
index 9e9c7ed..370dd4a 100644
--- a/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-core/usleep/usleep_1.0.bb
@@ -22,3 +22,12 @@
     install -m 0755 ${WORKDIR}/usleep   ${D}${base_bindir}
     install -m 0644 ${WORKDIR}/usleep.1 ${D}${mandir}/man1
 }
+
+inherit update-alternatives
+
+ALTERNATIVE_${PN} = "usleep"
+ALTERNATIVE_PRIORITY = "80"
+ALTERNATIVE_LINK_NAME[usleep] = "${base_bindir}/usleep"
+
+ALTERNATIVE_${PN}-doc = "usleep.1"
+ALTERNATIVE_LINK_NAME[usleep.1] = "${mandir}/man1/usleep.1"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.7.0.bb b/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.7.0.bb
new file mode 100644
index 0000000..92853d0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.7.0.bb
@@ -0,0 +1,55 @@
+# Copyright (C) 2018 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "Crypto and TLS for C++11"
+HOMEPAGE = "https://botan.randombit.net"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://license.txt;md5=bf361fc63df3fa25652ee82c43b7601a"
+SECTION = "libs"
+
+
+#v2.7.0
+SRCREV = "5874000d42c338ec95a7ff24cdc0c64e70f967b5"
+SRC_URI = "git://github.com/randombit/botan.git"
+
+S = "${WORKDIR}/git"
+
+inherit python3native siteinfo lib_package
+
+CPU ?= "${TARGET_ARCH}"
+CPU_x86 = "x86_32"
+CPU_armv7a = "armv7"
+CPU_armv7ve = "armv7"
+
+do_configure() {
+	python3 ${S}/configure.py \
+	--prefix="${D}${prefix}" \
+	--cpu="${CPU}" \
+	--cc-bin="${CXX}" \
+	--cxxflags="${CXXFLAGS}" \
+	--ldflags="${LDFLAGS}" \
+	--with-endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
+	${@bb.utils.contains("TUNE_FEATURES","neon","","--disable-neon",d)} \
+	--with-sysroot-dir=${STAGING_DIR_TARGET} \
+	--with-build-dir="${B}" \
+	--optimize-for-size \
+	--with-stack-protector \
+	--enable-shared-library \
+	--with-python-versions=3 \
+	${EXTRA_OECONF}
+}
+
+do_compile() {
+	oe_runmake
+}
+do_install() {
+	oe_runmake install
+	sed -i -e "s|${D}||g" ${D}${libdir}/pkgconfig/botan-2.pc
+}
+
+PACKAGES += "${PN}-python3"
+
+FILES_${PN}-python3 = "${libdir}/python3"
+
+RDEPENDS_${PN}-python3 += "python3"
+
diff --git a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_1.7.4.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.0.4.bb
similarity index 72%
rename from meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_1.7.4.bb
rename to meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.0.4.bb
index c13b764..cc7bc6e 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_1.7.4.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.0.4.bb
@@ -4,16 +4,16 @@
 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/"
+HOMEPAGE = "https://gitlab.com/cryptsetup/cryptsetup"
 SECTION = "console"
 LICENSE = "GPL-2.0-with-OpenSSL-exception"
 LIC_FILES_CHKSUM = "file://COPYING;md5=32107dd283b1dfeb66c9b3e6be312326"
 
-DEPENDS = "util-linux libdevmapper popt libgcrypt"
+DEPENDS = "util-linux libdevmapper popt libgcrypt json-c"
 
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v1.7/${BP}.tar.xz"
-SRC_URI[md5sum] = "058ed35c5b776032c2a036838f9e22a7"
-SRC_URI[sha256sum] = "7ccf893ef79a38fb92d61f03c17b964982119f5319cdaa85a1335b8558cca016"
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v2.0/${BP}.tar.xz"
+SRC_URI[md5sum] = "ed42b31f67d05b05e392d1943d467b8d"
+SRC_URI[sha256sum] = "9d3a3c7033293e0c97f0ad0501fd5b4d4913ae497cbf70cca06633ccc54b5734"
 
 inherit autotools gettext pkgconfig
 
@@ -33,4 +33,6 @@
 
 EXTRA_OECONF = "--enable-static"
 
+FILES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/cryptsetup.conf', '', d)}"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/engine-pkcs11/engine-pkcs11_0.2.2.bb b/meta-openembedded/meta-oe/recipes-crypto/engine-pkcs11/engine-pkcs11_0.2.2.bb
deleted file mode 100644
index bc79f35..0000000
--- a/meta-openembedded/meta-oe/recipes-crypto/engine-pkcs11/engine-pkcs11_0.2.2.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-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;beginline=1;endline=26;md5=973a19f8a6105de047f2adfbbfc04c33"
-DEPENDS = "openssl libp11"
-
-SRC_URI = "git://github.com/OpenSC/engine_pkcs11.git"
-SRCREV = "132fcf2c8b319f9f4b2ebdc8dcb54ff496dc0519"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "\
-    --disable-static \
-    --libdir ${libdir}/engines \
-"
-
-do_install_append () {
-    rm -f ${D}${libdir}/engines/libpkcs11.la
-}
-
-FILES_${PN} += "${libdir}/engines/libpkcs11${SOLIBSDEV}"
-FILES_${PN}-dbg += "${libdir}/engines/.debug/"
-
-RDEPENDS_${PN} += "openssl libp11 opensc"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_git.bb b/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_git.bb
new file mode 100644
index 0000000..a93ddc8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_git.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Linux Kernel Crypto API User Space Interface Library"
+HOMEPAGE = "http://www.chronox.de/libkcapi.html"
+LICENSE = "BSD | GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d0421cf231423bda10cea691b613e866"
+
+DEPENDS = "libtool"
+
+S = "${WORKDIR}/git"
+# Use v1.1.3 with changes on top for building in OE
+SRCREV = "1c736c43eb71fbb5640d00efaf34a1edf1972c49"
+PV = "1.1.3+git${SRCPV}"
+SRC_URI = " \
+    git://github.com/smuellerDD/libkcapi.git \
+"
+
+inherit autotools
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[testapp] = "--enable-kcapi-test,,,"
+PACKAGECONFIG[apps] = "--enable-kcapi-speed --enable-kcapi-hasher --enable-kcapi-rngapp --enable-kcapi-encapp --enable-kcapi-dgstapp,,,"
+
+do_install_append() {
+    # bindir contains testapp and apps.  However it is always created, even
+    # when no binaries are installed (empty bin_PROGRAMS in Makefile.am),
+    rmdir --ignore-fail-on-non-empty ${D}${bindir}
+}
+
+CPPFLAGS_append_libc-musl_toolchain-clang = " -Wno-error=sign-compare"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/libmcrypt/libmcrypt_2.5.8.bb b/meta-openembedded/meta-oe/recipes-crypto/libmcrypt/libmcrypt_2.5.8.bb
index 2a133c6..be413a1 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/libmcrypt/libmcrypt_2.5.8.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/libmcrypt/libmcrypt_2.5.8.bb
@@ -9,4 +9,7 @@
 SRC_URI[md5sum] = "0821830d930a86a5c69110837c55b7da"
 SRC_URI[sha256sum] = "e4eb6c074bbab168ac47b947c195ff8cef9d51a211cdd18ca9c9ef34d27a373e"
 
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/mcrypt/files/Libmcrypt/"
+UPSTREAM_CHECK_REGEX = "Libmcrypt/(?P<pver>\d+(\.\d+)+)/"
+
 inherit autotools-brokensep gettext binconfig
diff --git a/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.11.bb b/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.25.1.bb
similarity index 74%
rename from meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.11.bb
rename to meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.25.1.bb
index db71bd0..271f2ea 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.11.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.25.1.bb
@@ -11,16 +11,15 @@
 
 LICENSE = "GPLv2 & BSD"
 LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=4948810631bcac142af53d32df5b6ee1 \
+    file://COPYING;md5=30f10d22cfb1ba98ccd714a41ad3311a \
     file://COPYING.GPL;md5=8a71d0475d08eee76d8b6d0c6dbec543 \
-    file://COPYING.BSD;md5=f79f90ea7a106796af80b5d05f1f8da1 \
+    file://COPYING.BSD;md5=66b7a37c3c10483c1fd86007726104d7 \
 "
 SRC_URI = "git://github.com/OpenSC/${BPN}.git"
-SRC_URI[md5sum] = "9f62af9f475901b89355266141306673"
-SRC_URI[sha256sum] = "494ec59c93e7c56c528f335d9353849e2e7c94a6b1b41c89604694e738113386"
 
 S = "${WORKDIR}/git"
-SRCREV = "e7adf8f35be232a4f04c53b4ac409be52792093e"
+# v1.25.1
+SRCREV = "2713cb09dcd90104cb7bceb5f14cd6f90834f7b1"
 
 DEPENDS = "zlib nettle gnutls gmp openssl nss nspr"
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch
index 5da3448..4d7ac3a 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch
@@ -18,19 +18,16 @@
  src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h b/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
-index 2b3f76db86..cc80305775 100755
---- a/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
-+++ b/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
-@@ -42,7 +42,7 @@
- #include <ctype.h>
+Index: git/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
+===================================================================
+--- git.orig/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
++++ git/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
+@@ -43,7 +43,7 @@
  
+ #if 0 // MongoDB Modification -- just `#include <stddef.h>`
  // Fix system header issue on Sun solaris and define required type by ourselves
 -#if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED) && !defined(__QNX__)
 +#if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED) && !defined(__QNX__) && !defined(__DEFINED_wchar_t)
  typedef int   wchar_t;
  #endif
- 
--- 
-2.14.1
-
+ #else
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch
new file mode 100644
index 0000000..070411a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch
@@ -0,0 +1,33 @@
+From 5994023a03634dfc0318976c293e7391fe6aa060 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 24 Aug 2018 12:56:22 -0700
+Subject: [PATCH 1/2] Support deprecated resolver functions
+
+Needed for  musl libc
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/mongo/util/dns_query_posix-impl.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/mongo/util/dns_query_posix-impl.h b/src/mongo/util/dns_query_posix-impl.h
+index d19958010c..bbca3309ed 100644
+--- a/src/mongo/util/dns_query_posix-impl.h
++++ b/src/mongo/util/dns_query_posix-impl.h
+@@ -53,6 +53,12 @@
+ 
+ #include <boost/noncopyable.hpp>
+ 
++#ifndef res_ninit
++#define res_nclose(arg)
++#define res_ninit(arg)    res_init()
++#define res_nsearch(sta, nam, clas, typ, ans, alen)  res_search(nam, clas, typ, ans, alen)
++#endif
++
+ namespace mongo {
+ namespace dns {
+ // The anonymous namespace is safe, in this header, as it is not really a header.  It is only used
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
index aa01e95..a6d721a 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
@@ -13,7 +13,7 @@
 ===================================================================
 --- git.orig/SConstruct
 +++ git/SConstruct
-@@ -548,6 +548,7 @@ def variable_arch_converter(val):
+@@ -564,6 +564,7 @@ def variable_arch_converter(val):
          'amd64':  'x86_64',
          'emt64':   'x86_64',
          'x86':    'i386',
@@ -21,7 +21,7 @@
      }
      val = val.lower()
  
-@@ -627,7 +628,8 @@ env_vars.Add(
+@@ -652,7 +653,8 @@ env_vars.Add(
  )
  
  env_vars.Add('CC',
@@ -31,7 +31,7 @@
  
  env_vars.Add('CCFLAGS',
      help='Sets flags for the C and C++ compiler',
-@@ -647,7 +649,8 @@ env_vars.Add('CPPPATH',
+@@ -672,7 +674,8 @@ env_vars.Add('CPPPATH',
      converter=variable_shlex_converter)
  
  env_vars.Add('CXX',
@@ -41,19 +41,19 @@
  
  env_vars.Add('CXXFLAGS',
      help='Sets flags for the C++ compiler',
-@@ -895,6 +898,7 @@ envDict = dict(BUILD_ROOT=buildDir,
+@@ -961,6 +964,7 @@ envDict = dict(BUILD_ROOT=buildDir,
                 )
  
  env = Environment(variables=env_vars, **envDict)
 +env.PrependENVPath('PATH', os.getenv('PATH'))
  del envDict
  
- env.AddMethod(env_os_is_wrapper, 'TargetOSIs')
+ env.AddMethod(mongo_platform.env_os_is_wrapper, 'TargetOSIs')
 Index: git/src/mongo/util/SConscript
 ===================================================================
 --- git.orig/src/mongo/util/SConscript
 +++ git/src/mongo/util/SConscript
-@@ -274,6 +274,8 @@ if env['MONGO_ALLOCATOR'] == 'tcmalloc':
+@@ -329,6 +329,8 @@ if env['MONGO_ALLOCATOR'] == 'tcmalloc':
                  'MONGO_HAVE_GPERFTOOLS_SIZE_CLASS_STATS'
              ]
          )
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch
index f8c419d..c17ebf1 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch
@@ -9,34 +9,25 @@
  src/mongo/util/processinfo_linux.cpp | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
-diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp
-index 910015215e..bf8c1ffd15 100644
---- a/src/mongo/util/processinfo_linux.cpp
-+++ b/src/mongo/util/processinfo_linux.cpp
-@@ -40,7 +40,7 @@
- #include <sys/mman.h>
- #include <sys/utsname.h>
+Index: git/src/mongo/util/processinfo_linux.cpp
+===================================================================
+--- git.orig/src/mongo/util/processinfo_linux.cpp
++++ git/src/mongo/util/processinfo_linux.cpp
+@@ -44,10 +44,10 @@
  #include <unistd.h>
--#ifdef __UCLIBC__
-+#ifndef __GLIBC__
- #include <features.h>
- #else
+ #ifdef __BIONIC__
+ #include <android/api-level.h>
+-#elif __UCLIBC__
+-#include <features.h>
+-#else
++#elif defined(__GLIBC__) && !defined(__UCLIBC__)
  #include <gnu/libc-version.h>
-@@ -451,11 +451,13 @@ double ProcessInfo::getSystemMemoryPressurePercentage() {
- }
++#else
++#include <features.h>
+ #endif
  
- void ProcessInfo::getExtraInfo(BSONObjBuilder& info) {
-+#if defined(__GLIBC__)
-     LinuxProc p(_pid);
-     if (p._maj_flt <= std::numeric_limits<long long>::max())
-         info.appendNumber("page_faults", static_cast<long long>(p._maj_flt));
-     else
-         info.appendNumber("page_faults", static_cast<double>(p._maj_flt));
-+#endif
- }
- 
- /**
-@@ -491,7 +493,7 @@ void ProcessInfo::SystemInfo::collectSystemInfo() {
+ #include <boost/filesystem.hpp>
+@@ -503,7 +503,7 @@ void ProcessInfo::SystemInfo::collectSys
      stringstream ss;
      ss << "uClibc-" << __UCLIBC_MAJOR__ << "." << __UCLIBC_MINOR__ << "." << __UCLIBC_SUBLEVEL__;
      bExtra.append("libcVersion", ss.str());
@@ -45,6 +36,3 @@
      bExtra.append("libcVersion", gnu_get_libc_version());
  #endif
      if (!verSig.empty())
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch
index 389b302..99edad3 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch
@@ -44,7 +44,7 @@
  
              if (!parseNumberFromString(stringValue, &value).isOK()) {
                  value = 0;
-@@ -426,7 +426,7 @@ Status parseProcDiskStats(const std::vec
+@@ -522,7 +522,7 @@ Status parseProcDiskStats(const std::vec
                            StringData data,
                            BSONObjBuilder* builder) {
      bool foundKeys = false;
@@ -53,7 +53,7 @@
      stats.reserve(kDiskFieldCount);
  
      using string_split_iterator = boost::split_iterator<StringData::const_iterator>;
-@@ -501,7 +501,7 @@ Status parseProcDiskStats(const std::vec
+@@ -597,7 +597,7 @@ Status parseProcDiskStats(const std::vec
  
                  StringData stringValue((*partIt).begin(), (*partIt).end());
  
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-strerror_r-only-on-glibc-systems.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-strerror_r-only-on-glibc-systems.patch
deleted file mode 100644
index 0334d99..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-strerror_r-only-on-glibc-systems.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a4dfc92ff342e59596ab64267a8d4f22f173c23b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 2 Sep 2017 12:40:41 -0700
-Subject: [PATCH 1/4] Use strerror_r only on glibc systems
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/mongo/util/log.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/mongo/util/log.cpp b/src/mongo/util/log.cpp
-index 1957eb4791..ddf3908818 100644
---- a/src/mongo/util/log.cpp
-+++ b/src/mongo/util/log.cpp
-@@ -101,7 +101,7 @@ string errnoWithDescription(int errNumber) {
-     char buf[kBuflen];
-     char* msg{nullptr};
- 
--#if defined(__GNUC__) && defined(_GNU_SOURCE)
-+#if defined(__GNUC__) && defined(_GNU_SOURCE) && defined(__GLIBC__)
-     msg = strerror_r(errNumber, buf, kBuflen);
- #elif defined(_WIN32)
- 
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch
new file mode 100644
index 0000000..085fa50
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch
@@ -0,0 +1,39 @@
+From 98543889f7ba38c02eb7cd9822f45e27d619edd6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 24 Aug 2018 13:07:01 -0700
+Subject: [PATCH 2/2] Fix default stack size to 256K
+
+On musl default stack size is ~80K which is too low
+for mongodb
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../platform/stack_locator_pthread_getattr_np.cpp      | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
+index 648d26a41c..6e398f00c9 100644
+--- a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
++++ b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
+@@ -35,6 +35,16 @@
+ #include "mongo/util/assert_util.h"
+ #include "mongo/util/scopeguard.h"
+ 
++__attribute__((constructor))
++static void set_default_stack_size(void)
++{
++    pthread_attr_t attr;
++    invariant(pthread_attr_init(&attr) == 0);
++    invariant(pthread_attr_setstacksize(&attr, 256*1024) == 0);
++    pthread_setattr_default_np(&attr);
++    invariant(pthread_attr_destroy(&attr) == 0);
++}
++
+ namespace mongo {
+ 
+ StackLocator::StackLocator() {
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-d_state.cpp-Add-missing-dependenncy-on-local_shardin.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-d_state.cpp-Add-missing-dependenncy-on-local_shardin.patch
deleted file mode 100644
index dc488ad..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-d_state.cpp-Add-missing-dependenncy-on-local_shardin.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 5759878e5d278f11a1063e8fccd1e6b7b54caadf Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 2 Aug 2017 16:25:37 -0700
-Subject: [PATCH 2/2] d_state.cpp: Add missing dependenncy on
- local_sharding_info
-
-Fixes
-| src/mongo/s/d_state.cpp:81: error: undefined reference to 'mongo::enableLocalShardingInfo(mongo::ServiceContext*, std::function<bool (mongo::OperationContext*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>)'
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/mongo/s/SConscript | 1 +
- 1 file changed, 1 insertion(+)
-
-Index: git/src/mongo/s/SConscript
-===================================================================
---- git.orig/src/mongo/s/SConscript
-+++ git/src/mongo/s/SConscript
-@@ -317,5 +317,6 @@ env.Library(
-         "$BUILD_DIR/mongo/db/s/sharding",
-         "$BUILD_DIR/mongo/executor/network_interface_factory",
-         "$BUILD_DIR/mongo/s/client/shard_local",
-+        "$BUILD_DIR/mongo/s/local_sharding_info",
-     ],
- )
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0003-Conditionalize-glibc-specific-strerror_r.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0003-Conditionalize-glibc-specific-strerror_r.patch
deleted file mode 100644
index 1591f94..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0003-Conditionalize-glibc-specific-strerror_r.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 458f80f482a201b427a1c92235804d0c3f98fd51 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 2 Sep 2017 13:01:11 -0700
-Subject: [PATCH 3/4] Conditionalize glibc specific strerror_r
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- .../asio-asio-1-11-0/asio/include/asio/impl/error_code.ipp    | 11 ++++-------
- 1 file changed, 4 insertions(+), 7 deletions(-)
-
-diff --git a/src/third_party/asio-asio-1-11-0/asio/include/asio/impl/error_code.ipp b/src/third_party/asio-asio-1-11-0/asio/include/asio/impl/error_code.ipp
-index 4e7badb14a..0eeae884e2 100644
---- a/src/third_party/asio-asio-1-11-0/asio/include/asio/impl/error_code.ipp
-+++ b/src/third_party/asio-asio-1-11-0/asio/include/asio/impl/error_code.ipp
-@@ -97,17 +97,14 @@ public:
- #if defined(__sun) || defined(__QNX__) || defined(__SYMBIAN32__)
-     using namespace std;
-     return strerror(value);
--#elif defined(__MACH__) && defined(__APPLE__) \
--  || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) \
--  || defined(_AIX) || defined(__hpux) || defined(__osf__) \
--  || defined(__ANDROID__)
-+#elif defined(__GLIBC__) && defined(_GNU_SOURCE)
-+    char buf[256] = "";
-+    return strerror_r(value, buf, sizeof(buf));
-+#else
-     char buf[256] = "";
-     using namespace std;
-     strerror_r(value, buf, sizeof(buf));
-     return buf;
--#else
--    char buf[256] = "";
--    return strerror_r(value, buf, sizeof(buf));
- #endif
- #endif // defined(ASIO_WINDOWS)
-   }
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch
index e871f2b..a2e1f79 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch
@@ -8,11 +8,11 @@
  src/third_party/wiredtiger/build_linux/wiredtiger_config.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/src/third_party/wiredtiger/build_linux/wiredtiger_config.h b/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
-index 1122e1e319..fdfd48687b 100644
---- a/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
-+++ b/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
-@@ -101,7 +101,7 @@
+Index: git/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
+===================================================================
+--- git.orig/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
++++ git/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
+@@ -104,7 +104,7 @@
  #define HAVE_STRING_H 1
  
  /* Define to 1 if you have the `strtouq' function. */
@@ -21,6 +21,3 @@
  
  /* Define to 1 if you have the `sync_file_range' function. */
  /* #undef HAVE_SYNC_FILE_RANGE */
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch
index 9046bb2..c068987 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch
@@ -7,7 +7,7 @@
 ===================================================================
 --- git.orig/SConstruct
 +++ git/SConstruct
-@@ -990,6 +990,7 @@ elif endian == "big":
+@@ -1055,6 +1055,7 @@ elif endian == "big":
  processor_macros = {
      'arm'     : { 'endian': 'little', 'defines': ('__arm__',) },
      'aarch64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')},
@@ -19,7 +19,7 @@
 ===================================================================
 --- git.orig/src/third_party/IntelRDFPMathLib20U1/SConscript
 +++ git/src/third_party/IntelRDFPMathLib20U1/SConscript
-@@ -301,7 +301,7 @@ if processor == 'i386':
+@@ -308,7 +308,7 @@ if processor == 'i386':
  elif processor == 'arm':
      cpp_defines['IA32'] = '1'
      cpp_defines['ia32'] = '1'
@@ -32,7 +32,7 @@
 ===================================================================
 --- git.orig/src/third_party/wiredtiger/SConscript
 +++ git/src/third_party/wiredtiger/SConscript
-@@ -139,7 +139,7 @@ condition_map = {
+@@ -151,7 +151,7 @@ condition_map = {
      'POSIX_HOST'   : not env.TargetOSIs('windows'),
      'WINDOWS_HOST' : env.TargetOSIs('windows'),
  
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch
index 5c5c20c..23d4923 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch
@@ -5,7 +5,7 @@
 ===================================================================
 --- git.orig/src/third_party/wiredtiger/SConscript
 +++ git/src/third_party/wiredtiger/SConscript
-@@ -169,7 +169,9 @@ if useSnappy:
+@@ -181,7 +181,9 @@ if useSnappy:
  # If not available at runtime, we fall back to software in some cases.
  #
  # On zSeries we may disable because SLES 11 kernel doe not support the instructions.
@@ -32,7 +32,7 @@
 ===================================================================
 --- git.orig/src/third_party/wiredtiger/src/checksum/zseries/crc32-s390x.c
 +++ git/src/third_party/wiredtiger/src/checksum/zseries/crc32-s390x.c
-@@ -78,6 +78,7 @@ unsigned int __wt_crc32c_le(unsigned int
+@@ -77,6 +77,7 @@ unsigned int __wt_crc32c_le(unsigned int
  		return crc;                                                 \
  	}
  
@@ -40,7 +40,7 @@
  /* Main CRC-32 functions */
  DEFINE_CRC32_VX(__wt_crc32c_le_vx, __wt_crc32c_le_vgfm_16, __wt_crc32c_le)
  
-@@ -90,6 +91,7 @@ __wt_checksum_hw(const void *chunk, size
+@@ -89,6 +90,7 @@ __wt_checksum_hw(const void *chunk, size
  {
  	return (~__wt_crc32c_le_vx(0xffffffff, chunk, len));
  }
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb
index bb3ff3b..d39ab0a 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb
@@ -3,48 +3,44 @@
 LIC_FILES_CHKSUM = "file://GNU-AGPL-3.0.txt;md5=73f1eb20517c55bf9493b7dd6e480788 \
                     file://APACHE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
-DEPENDS = "openssl libpcre libpcap zlib python boost"
+DEPENDS = "openssl libpcre libpcap zlib boost curl python \
+           python-setuptools-native python-typing-native \
+           python-pyyaml-native python-cheetah-native \
+           "
 
-inherit scons dos2unix siteinfo
+inherit scons dos2unix siteinfo pythonnative
 
-PV = "3.4.13+git${SRCPV}"
-SRCREV = "fbdef2ccc53e0fcc9afb570063633d992b2aae42"
-SRC_URI = "git://github.com/mongodb/mongo.git;branch=v3.4 \
+PV = "4.0.1+git${SRCPV}"
+#v4.0.1
+SRCREV = "54f1582fc6eb01de4d4c42f26fc133e623f065fb"
+SRC_URI = "git://github.com/mongodb/mongo.git;branch=v4.0 \
            file://0001-Tell-scons-to-use-build-settings-from-environment-va.patch \
-           file://0002-d_state.cpp-Add-missing-dependenncy-on-local_shardin.patch \
            file://0001-Use-long-long-instead-of-int64_t.patch \
            file://0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch \
-           file://0001-Use-strerror_r-only-on-glibc-systems.patch \
            file://0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch \
-           file://0003-Conditionalize-glibc-specific-strerror_r.patch \
            file://arm64-support.patch \
            file://0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch \
            file://disable-hw-crc32-on-arm64-s390x.patch \
+           file://0001-Support-deprecated-resolver-functions.patch \
            "
 SRC_URI_append_libc-musl ="\
+           file://0002-Fix-default-stack-size-to-256K.patch \
            file://0004-wiredtiger-Disable-strtouq-on-musl.patch \
            "
 S = "${WORKDIR}/git"
 
-# Wiredtiger supports only 64-bit platforms
-PACKAGECONFIG_x86-64 ??= "tcmalloc wiredtiger"
-PACKAGECONFIG_aarch64 ??= "tcmalloc wiredtiger"
+COMPATIBLE_HOST ?= '(x86_64|i.86|powerpc64|arm|aarch64).*-linux'
+
+COMPATIBLE_HOST_arm = "null"
+COMPATIBLE_HOST_libc-musl_x86 = "null"
+
 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"
 PACKAGECONFIG_remove_libc-musl = "tcmalloc"
 
-#std::current_exception is undefined for arm < v6
-COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
-COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
-COMPATIBLE_MACHINE_armv7a = "(!.*armv7a).*"
-COMPATIBLE_MACHINE_armv7ve = "(!.*armv7ve).*"
-COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"
-COMPATIBLE_MACHINE_powerpc = "(!.*ppc).*"
-
 PACKAGECONFIG[tcmalloc] = "--use-system-tcmalloc,--allocator=system,gperftools,"
-PACKAGECONFIG[wiredtiger] = "--wiredtiger=on,--wiredtiger=off,,"
 
 EXTRA_OESCONS = "--prefix=${D}${prefix} \
                  LIBPATH=${STAGING_LIBDIR} \
@@ -58,6 +54,7 @@
                  --js-engine=none \
                  --nostrip \
                  --endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
+                 --wiredtiger=${@['off','on'][d.getVar('SITEINFO_BITS') != '32']} \
                  ${PACKAGECONFIG_CONFARGS} \
                  mongod mongos"
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.59.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.62.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.59.bb
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.62.bb
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
index 99e7050..8ca5b2b 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
@@ -18,9 +18,10 @@
            file://change-cc-to-cc-version.patch \
            file://0001-disable-ucontext-on-musl.patch \
           "
+SRC_URI[md5sum] = "6375d577e9539b839f44d857e70f82b9"
+SRC_URI[sha256sum] = "56a365af71b8a9ec8bfee0801e2dec95011da8ee7507986ca329be11296411db"
 
-SRC_URI[md5sum] = "3cec4afc06b468687ef576c90148d10d"
-SRC_URI[sha256sum] = "c3269ce20b45b177239fd1e3d6d9428a94131711f12758ebf5f65222278bb110"
+UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases"
 
 S = "${WORKDIR}/mariadb-${PV}"
 
@@ -161,13 +162,15 @@
 }
 
 PACKAGES = "${PN}-dbg ${PN} \
-    libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev libmysqlclient-r-dbg \
-    libmysqlclient libmysqlclient-dev libmysqlclient-staticdev libmysqlclient-dbg \
+    libmysqlclient-r libmysqlclient-r-dev libmysqlclient-r-staticdev \
+    libmysqlclient libmysqlclient-dev libmysqlclient-staticdev \
     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"
 
+RPROVIDES_${PN}-dbg += "libmysqlclient-r-dbg libmysqlclient-dbg"
+
 FILES_${PN} = " "
 RDEPENDS_${PN} = "${PN}-client ${PN}-server"
 ALLOW_EMPTY_${PN} = "1"
@@ -200,8 +203,6 @@
     ${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.
@@ -212,7 +213,6 @@
 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.*"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.59.bb b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.62.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.59.bb
rename to meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.62.bb
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch
new file mode 100644
index 0000000..6d8c46e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch
@@ -0,0 +1,1164 @@
+From 12bfb778ce688fc662a6cb35f6298734fcf4856f Mon Sep 17 00:00:00 2001
+From: Tom Lane <tgl@sss.pgh.pa.us>
+Date: Fri, 19 Oct 2018 19:36:34 -0400
+Subject: [PATCH] Sync our copy of the timezone library with IANA release
+ tzcode2018f.
+
+About half of this is purely cosmetic changes to reduce the diff between
+our code and theirs, like inserting "const" markers where they have them.
+
+The other half is tracking actual code changes in zic.c and localtime.c.
+I don't think any of these represent near-term compatibility hazards, but
+it seems best to stay up to date.
+
+I also fixed longstanding bugs in our code for producing the
+known_abbrevs.txt list, which by chance hadn't been exposed before,
+but which resulted in some garbage output after applying the upstream
+changes in zic.c.  Notably, because upstream removed their old phony
+transitions at the Big Bang, it's now necessary to cope with TZif files
+containing no DST transition times at all.
+
+Upstream-Status: Backport
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ src/timezone/README      |   2 +-
+ src/timezone/localtime.c | 126 ++++++++++++------
+ src/timezone/pgtz.h      |  10 +-
+ src/timezone/private.h   |   3 +
+ src/timezone/strftime.c  |  10 +-
+ src/timezone/tzfile.h    |   7 +-
+ src/timezone/zic.c       | 330 ++++++++++++++++++++++++++---------------------
+ 7 files changed, 291 insertions(+), 197 deletions(-)
+
+Index: postgresql-10.5/src/timezone/README
+===================================================================
+--- postgresql-10.5.orig/src/timezone/README
++++ postgresql-10.5/src/timezone/README
+@@ -55,7 +55,7 @@ match properly on the old version.
+ Time Zone code
+ ==============
+ 
+-The code in this directory is currently synced with tzcode release 2018e.
++The code in this directory is currently synced with tzcode release 2018f.
+ There are many cosmetic (and not so cosmetic) differences from the
+ original tzcode library, but diffs in the upstream version should usually
+ be propagated to our version.  Here are some notes about that.
+Index: postgresql-10.5/src/timezone/localtime.c
+===================================================================
+--- postgresql-10.5.orig/src/timezone/localtime.c
++++ postgresql-10.5/src/timezone/localtime.c
+@@ -1,3 +1,5 @@
++/* Convert timestamp from pg_time_t to struct pg_tm.  */
++
+ /*
+  * This file is in the public domain, so clarified as of
+  * 1996-06-05 by Arthur David Olson.
+@@ -117,7 +119,7 @@ init_ttinfo(struct ttinfo *s, int32 gmto
+ }
+ 
+ static int32
+-detzcode(const char *codep)
++detzcode(const char *const codep)
+ {
+ 	int32		result;
+ 	int			i;
+@@ -143,7 +145,7 @@ detzcode(const char *codep)
+ }
+ 
+ static int64
+-detzcode64(const char *codep)
++detzcode64(const char *const codep)
+ {
+ 	uint64		result;
+ 	int			i;
+@@ -258,8 +260,13 @@ tzloadbody(char const *name, char *canon
+ 		int32		charcnt = detzcode(up->tzhead.tzh_charcnt);
+ 		char const *p = up->buf + tzheadsize;
+ 
++		/*
++		 * Although tzfile(5) currently requires typecnt to be nonzero,
++		 * support future formats that may allow zero typecnt in files that
++		 * have a TZ string and no transitions.
++		 */
+ 		if (!(0 <= leapcnt && leapcnt < TZ_MAX_LEAPS
+-			  && 0 < typecnt && typecnt < TZ_MAX_TYPES
++			  && 0 <= typecnt && typecnt < TZ_MAX_TYPES
+ 			  && 0 <= timecnt && timecnt < TZ_MAX_TIMES
+ 			  && 0 <= charcnt && charcnt < TZ_MAX_CHARS
+ 			  && (ttisstdcnt == typecnt || ttisstdcnt == 0)
+@@ -416,8 +423,7 @@ tzloadbody(char const *name, char *canon
+ 		struct state *ts = &lsp->u.st;
+ 
+ 		up->buf[nread - 1] = '\0';
+-		if (tzparse(&up->buf[1], ts, false)
+-			&& ts->typecnt == 2)
++		if (tzparse(&up->buf[1], ts, false))
+ 		{
+ 			/*
+ 			 * Attempt to reuse existing abbreviations. Without this,
+@@ -430,7 +436,7 @@ tzloadbody(char const *name, char *canon
+ 			int			gotabbr = 0;
+ 			int			charcnt = sp->charcnt;
+ 
+-			for (i = 0; i < 2; i++)
++			for (i = 0; i < ts->typecnt; i++)
+ 			{
+ 				char	   *tsabbr = ts->chars + ts->ttis[i].tt_abbrind;
+ 				int			j;
+@@ -455,7 +461,7 @@ tzloadbody(char const *name, char *canon
+ 					}
+ 				}
+ 			}
+-			if (gotabbr == 2)
++			if (gotabbr == ts->typecnt)
+ 			{
+ 				sp->charcnt = charcnt;
+ 
+@@ -470,7 +476,8 @@ tzloadbody(char const *name, char *canon
+ 					sp->timecnt--;
+ 
+ 				for (i = 0; i < ts->timecnt; i++)
+-					if (sp->ats[sp->timecnt - 1] < ts->ats[i])
++					if (sp->timecnt == 0
++						|| sp->ats[sp->timecnt - 1] < ts->ats[i])
+ 						break;
+ 				while (i < ts->timecnt
+ 					   && sp->timecnt < TZ_MAX_TIMES)
+@@ -481,11 +488,13 @@ tzloadbody(char const *name, char *canon
+ 					sp->timecnt++;
+ 					i++;
+ 				}
+-				sp->ttis[sp->typecnt++] = ts->ttis[0];
+-				sp->ttis[sp->typecnt++] = ts->ttis[1];
++				for (i = 0; i < ts->typecnt; i++)
++					sp->ttis[sp->typecnt++] = ts->ttis[i];
+ 			}
+ 		}
+ 	}
++	if (sp->typecnt == 0)
++		return EINVAL;
+ 	if (sp->timecnt > 1)
+ 	{
+ 		for (i = 1; i < sp->timecnt; ++i)
+@@ -507,6 +516,18 @@ tzloadbody(char const *name, char *canon
+ 	}
+ 
+ 	/*
++	 * Infer sp->defaulttype from the data.  Although this default type is
++	 * always zero for data from recent tzdb releases, things are trickier for
++	 * data from tzdb 2018e or earlier.
++	 *
++	 * The first set of heuristics work around bugs in 32-bit data generated
++	 * by tzdb 2013c or earlier.  The workaround is for zones like
++	 * Australia/Macquarie where timestamps before the first transition have a
++	 * time type that is not the earliest standard-time type.  See:
++	 * https://mm.icann.org/pipermail/tz/2013-May/019368.html
++	 */
++
++	/*
+ 	 * If type 0 is unused in transitions, it's the type to use for early
+ 	 * times.
+ 	 */
+@@ -529,6 +550,11 @@ tzloadbody(char const *name, char *canon
+ 	}
+ 
+ 	/*
++	 * The next heuristics are for data generated by tzdb 2018e or earlier,
++	 * for zones like EST5EDT where the first transition is to DST.
++	 */
++
++	/*
+ 	 * If no result yet, find the first standard type. If there is none, punt
+ 	 * to type zero.
+ 	 */
+@@ -542,7 +568,14 @@ tzloadbody(char const *name, char *canon
+ 				break;
+ 			}
+ 	}
++
++	/*
++	 * A simple 'sp->defaulttype = 0;' would suffice here if we didn't have to
++	 * worry about 2018e-or-earlier data.  Even simpler would be to remove the
++	 * defaulttype member and just use 0 in its place.
++	 */
+ 	sp->defaulttype = i;
++
+ 	return 0;
+ }
+ 
+@@ -601,10 +634,11 @@ static const int year_lengths[2] = {
+ };
+ 
+ /*
+- * Given a pointer into a time zone string, scan until a character that is not
+- * a valid character in a zone name is found. Return a pointer to that
+- * character.
++ * Given a pointer into a timezone string, scan until a character that is not
++ * a valid character in a time zone abbreviation is found.
++ * Return a pointer to that character.
+  */
++
+ static const char *
+ getzname(const char *strp)
+ {
+@@ -617,15 +651,17 @@ getzname(const char *strp)
+ }
+ 
+ /*
+- * Given a pointer into an extended time zone string, scan until the ending
+- * delimiter of the zone name is located. Return a pointer to the delimiter.
++ * Given a pointer into an extended timezone string, scan until the ending
++ * delimiter of the time zone abbreviation is located.
++ * Return a pointer to the delimiter.
+  *
+  * As with getzname above, the legal character set is actually quite
+  * restricted, with other characters producing undefined results.
+  * We don't do any checking here; checking is done later in common-case code.
+  */
++
+ static const char *
+-getqzname(const char *strp, int delim)
++getqzname(const char *strp, const int delim)
+ {
+ 	int			c;
+ 
+@@ -635,13 +671,14 @@ getqzname(const char *strp, int delim)
+ }
+ 
+ /*
+- * Given a pointer into a time zone string, extract a number from that string.
++ * Given a pointer into a timezone string, extract a number from that string.
+  * Check that the number is within a specified range; if it is not, return
+  * NULL.
+  * Otherwise, return a pointer to the first character not part of the number.
+  */
++
+ static const char *
+-getnum(const char *strp, int *nump, int min, int max)
++getnum(const char *strp, int *const nump, const int min, const int max)
+ {
+ 	char		c;
+ 	int			num;
+@@ -663,14 +700,15 @@ getnum(const char *strp, int *nump, int
+ }
+ 
+ /*
+- * Given a pointer into a time zone string, extract a number of seconds,
++ * Given a pointer into a timezone string, extract a number of seconds,
+  * in hh[:mm[:ss]] form, from the string.
+  * If any error occurs, return NULL.
+  * Otherwise, return a pointer to the first character not part of the number
+  * of seconds.
+  */
++
+ static const char *
+-getsecs(const char *strp, int32 *secsp)
++getsecs(const char *strp, int32 *const secsp)
+ {
+ 	int			num;
+ 
+@@ -704,13 +742,14 @@ getsecs(const char *strp, int32 *secsp)
+ }
+ 
+ /*
+- * Given a pointer into a time zone string, extract an offset, in
++ * Given a pointer into a timezone string, extract an offset, in
+  * [+-]hh[:mm[:ss]] form, from the string.
+  * If any error occurs, return NULL.
+  * Otherwise, return a pointer to the first character not part of the time.
+  */
++
+ static const char *
+-getoffset(const char *strp, int32 *offsetp)
++getoffset(const char *strp, int32 *const offsetp)
+ {
+ 	bool		neg = false;
+ 
+@@ -730,13 +769,14 @@ getoffset(const char *strp, int32 *offse
+ }
+ 
+ /*
+- * Given a pointer into a time zone string, extract a rule in the form
++ * Given a pointer into a timezone string, extract a rule in the form
+  * date[/time]. See POSIX section 8 for the format of "date" and "time".
+  * If a valid rule is not found, return NULL.
+  * Otherwise, return a pointer to the first character not part of the rule.
+  */
++
+ static const char *
+-getrule(const char *strp, struct rule *rulep)
++getrule(const char *strp, struct rule *const rulep)
+ {
+ 	if (*strp == 'J')
+ 	{
+@@ -795,9 +835,10 @@ getrule(const char *strp, struct rule *r
+  * Given a year, a rule, and the offset from UT at the time that rule takes
+  * effect, calculate the year-relative time that rule takes effect.
+  */
++
+ static int32
+-transtime(int year, const struct rule *rulep,
+-		  int32 offset)
++transtime(const int year, const struct rule *const rulep,
++		  const int32 offset)
+ {
+ 	bool		leapyear;
+ 	int32		value;
+@@ -981,7 +1022,7 @@ tzparse(const char *name, struct state *
+ 		{
+ 			dstname = name;
+ 			name = getzname(name);
+-			dstlen = name - dstname;	/* length of DST zone name */
++			dstlen = name - dstname;	/* length of DST abbr. */
+ 		}
+ 		if (!dstlen)
+ 			return false;
+@@ -1023,8 +1064,8 @@ tzparse(const char *name, struct state *
+ 			/*
+ 			 * Two transitions per year, from EPOCH_YEAR forward.
+ 			 */
+-			init_ttinfo(&sp->ttis[0], -dstoffset, true, stdlen + 1);
+-			init_ttinfo(&sp->ttis[1], -stdoffset, false, 0);
++			init_ttinfo(&sp->ttis[0], -stdoffset, false, 0);
++			init_ttinfo(&sp->ttis[1], -dstoffset, true, stdlen + 1);
+ 			sp->defaulttype = 0;
+ 			timecnt = 0;
+ 			janfirst = 0;
+@@ -1073,19 +1114,15 @@ tzparse(const char *name, struct state *
+ 					if (!increment_overflow_time
+ 						(&sp->ats[timecnt],
+ 						 janoffset + starttime))
+-						sp->types[timecnt++] = reversed;
+-					else if (janoffset)
+-						sp->defaulttype = reversed;
++						sp->types[timecnt++] = !reversed;
+ 					sp->ats[timecnt] = janfirst;
+ 					if (!increment_overflow_time
+ 						(&sp->ats[timecnt],
+ 						 janoffset + endtime))
+ 					{
+-						sp->types[timecnt++] = !reversed;
++						sp->types[timecnt++] = reversed;
+ 						yearlim = year + YEARSPERREPEAT + 1;
+ 					}
+-					else if (janoffset)
+-						sp->defaulttype = !reversed;
+ 				}
+ 				if (increment_overflow_time
+ 					(&janfirst, janoffset + yearsecs))
+@@ -1094,7 +1131,10 @@ tzparse(const char *name, struct state *
+ 			}
+ 			sp->timecnt = timecnt;
+ 			if (!timecnt)
++			{
++				sp->ttis[0] = sp->ttis[1];
+ 				sp->typecnt = 1;	/* Perpetual DST.  */
++			}
+ 			else if (YEARSPERREPEAT < year - yearbeg)
+ 				sp->goback = sp->goahead = true;
+ 		}
+@@ -1163,7 +1203,6 @@ tzparse(const char *name, struct state *
+ 					 * otherwise, add the standard time offset to the
+ 					 * transition time.
+ 					 */
+-
+ 					/*
+ 					 * Transitions from DST to DDST will effectively disappear
+ 					 * since POSIX provides for only one DST offset.
+@@ -1217,7 +1256,7 @@ tzparse(const char *name, struct state *
+ }
+ 
+ static void
+-gmtload(struct state *sp)
++gmtload(struct state *const sp)
+ {
+ 	if (tzload(gmt, NULL, sp, true) != 0)
+ 		tzparse(gmt, sp, true);
+@@ -1232,7 +1271,7 @@ gmtload(struct state *sp)
+  */
+ static struct pg_tm *
+ localsub(struct state const *sp, pg_time_t const *timep,
+-		 struct pg_tm *tmp)
++		 struct pg_tm *const tmp)
+ {
+ 	const struct ttinfo *ttisp;
+ 	int			i;
+@@ -1300,6 +1339,11 @@ localsub(struct state const *sp, pg_time
+ 	}
+ 	ttisp = &sp->ttis[i];
+ 
++	/*
++	 * To get (wrong) behavior that's compatible with System V Release 2.0
++	 * you'd replace the statement below with t += ttisp->tt_gmtoff;
++	 * timesub(&t, 0L, sp, tmp);
++	 */
+ 	result = timesub(&t, ttisp->tt_gmtoff, sp, tmp);
+ 	if (result)
+ 	{
+@@ -1322,8 +1366,10 @@ pg_localtime(const pg_time_t *timep, con
+  *
+  * Except we have a private "struct state" for GMT, so no sp is passed in.
+  */
++
+ static struct pg_tm *
+-gmtsub(pg_time_t const *timep, int32 offset, struct pg_tm *tmp)
++gmtsub(pg_time_t const *timep, int32 offset,
++	   struct pg_tm *tmp)
+ {
+ 	struct pg_tm *result;
+ 
+@@ -1337,6 +1383,7 @@ gmtsub(pg_time_t const *timep, int32 off
+ 		gmt_is_set = true;
+ 		gmtload(gmtptr);
+ 	}
++
+ 	result = timesub(timep, offset, gmtptr, tmp);
+ 
+ 	/*
+@@ -1361,6 +1408,7 @@ pg_gmtime(const pg_time_t *timep)
+  * Return the number of leap years through the end of the given year
+  * where, to make the math easy, the answer for year zero is defined as zero.
+  */
++
+ static int
+ leaps_thru_end_of_nonneg(int y)
+ {
+Index: postgresql-10.5/src/timezone/pgtz.h
+===================================================================
+--- postgresql-10.5.orig/src/timezone/pgtz.h
++++ postgresql-10.5/src/timezone/pgtz.h
+@@ -49,10 +49,16 @@ struct state
+ 	pg_time_t	ats[TZ_MAX_TIMES];
+ 	unsigned char types[TZ_MAX_TIMES];
+ 	struct ttinfo ttis[TZ_MAX_TYPES];
+-	char		chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, 3 /* sizeof gmt */ ),
++	char		chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, 4 /* sizeof gmt */ ),
+ 							  (2 * (TZ_STRLEN_MAX + 1)))];
+ 	struct lsinfo lsis[TZ_MAX_LEAPS];
+-	int			defaulttype;	/* for early times or if no transitions */
++
++	/*
++	 * The time type to use for early times or if no transitions. It is always
++	 * zero for recent tzdb releases. It might be nonzero for data from tzdb
++	 * 2018e or earlier.
++	 */
++	int			defaulttype;
+ };
+ 
+ 
+Index: postgresql-10.5/src/timezone/private.h
+===================================================================
+--- postgresql-10.5.orig/src/timezone/private.h
++++ postgresql-10.5/src/timezone/private.h
+@@ -1,4 +1,7 @@
++/* Private header for tzdb code.  */
++
+ #ifndef PRIVATE_H
++
+ #define PRIVATE_H
+ 
+ /*
+Index: postgresql-10.5/src/timezone/strftime.c
+===================================================================
+--- postgresql-10.5.orig/src/timezone/strftime.c
++++ postgresql-10.5/src/timezone/strftime.c
+@@ -1,4 +1,4 @@
+-/* Convert a broken-down timestamp to a string. */
++/* Convert a broken-down timestamp to a string.  */
+ 
+ /*
+  * Copyright 1989 The Regents of the University of California.
+@@ -115,7 +115,7 @@ static char *_add(const char *, char *,
+ static char *_conv(int, const char *, char *, const char *);
+ static char *_fmt(const char *, const struct pg_tm *, char *, const char *,
+ 	 enum warn *);
+-static char *_yconv(int, int, bool, bool, char *, const char *);
++static char *_yconv(int, int, bool, bool, char *, char const *);
+ 
+ 
+ size_t
+@@ -441,7 +441,8 @@ _fmt(const char *format, const struct pg
+ 
+ 					/*
+ 					 * C99 and later say that %Z must be replaced by the empty
+-					 * string if the time zone is not determinable.
++					 * string if the time zone abbreviation is not
++					 * determinable.
+ 					 */
+ 					continue;
+ 				case 'z':
+@@ -519,6 +520,7 @@ _add(const char *str, char *pt, const ch
+  * same output as %Y, and that %Y contains at least 4 bytes,
+  * with more only if necessary.
+  */
++
+ static char *
+ _yconv(int a, int b, bool convert_top, bool convert_yy,
+ 	   char *pt, const char *ptlim)
+@@ -526,7 +528,7 @@ _yconv(int a, int b, bool convert_top, b
+ 	int			lead;
+ 	int			trail;
+ 
+-#define DIVISOR 100
++#define DIVISOR	100
+ 	trail = a % DIVISOR + b % DIVISOR;
+ 	lead = a / DIVISOR + b / DIVISOR + trail / DIVISOR;
+ 	trail %= DIVISOR;
+Index: postgresql-10.5/src/timezone/tzfile.h
+===================================================================
+--- postgresql-10.5.orig/src/timezone/tzfile.h
++++ postgresql-10.5/src/timezone/tzfile.h
+@@ -1,4 +1,7 @@
++/* Layout and location of TZif files.  */
++
+ #ifndef TZFILE_H
++
+ #define TZFILE_H
+ 
+ /*
+@@ -21,14 +24,14 @@
+  * Information about time zone files.
+  */
+ 
+-#define TZDEFAULT	"localtime"
++#define TZDEFAULT	"/etc/localtime"
+ #define TZDEFRULES	"posixrules"
+ 
+ /*
+  * Each file begins with. . .
+  */
+ 
+-#define TZ_MAGIC	"TZif"
++#define	TZ_MAGIC	"TZif"
+ 
+ struct tzhead
+ {
+Index: postgresql-10.5/src/timezone/zic.c
+===================================================================
+--- postgresql-10.5.orig/src/timezone/zic.c
++++ postgresql-10.5/src/timezone/zic.c
+@@ -1,3 +1,5 @@
++/* Compile .zi time zone data into TZif binary files.  */
++
+ /*
+  * This file is in the public domain, so clarified as of
+  * 2006-07-17 by Arthur David Olson.
+@@ -130,8 +132,7 @@ static void adjleap(void);
+ static void associate(void);
+ static void dolink(const char *, const char *, bool);
+ static char **getfields(char *buf);
+-static zic_t gethms(const char *string, const char *errstring,
+-	   bool);
++static zic_t gethms(const char *string, const char *errstring);
+ static zic_t getstdoff(char *, bool *);
+ static void infile(const char *filename);
+ static void inleap(char **fields, int nfields);
+@@ -162,7 +163,7 @@ enum
+ PERCENT_Z_LEN_BOUND = sizeof "+995959" - 1};
+ 
+ /* If true, work around a bug in Qt 5.6.1 and earlier, which mishandles
+-   tz binary files whose POSIX-TZ-style strings contain '<'; see
++   TZif files whose POSIX-TZ-style strings contain '<'; see
+    QTBUG-53071 <https://bugreports.qt.io/browse/QTBUG-53071>.  This
+    workaround will no longer be needed when Qt 5.6.1 and earlier are
+    obsolete, say in the year 2021.  */
+@@ -211,7 +212,7 @@ static int	typecnt;
+ #define ZF_RULE		3
+ #define ZF_FORMAT	4
+ #define ZF_TILYEAR	5
+-#define ZF_TILMONTH 6
++#define ZF_TILMONTH	6
+ #define ZF_TILDAY	7
+ #define ZF_TILTIME	8
+ #define ZONE_MINFIELDS	5
+@@ -224,12 +225,12 @@ static int	typecnt;
+ #define ZFC_GMTOFF	0
+ #define ZFC_RULE	1
+ #define ZFC_FORMAT	2
+-#define ZFC_TILYEAR 3
++#define ZFC_TILYEAR	3
+ #define ZFC_TILMONTH	4
+ #define ZFC_TILDAY	5
+-#define ZFC_TILTIME 6
+-#define ZONEC_MINFIELDS 3
+-#define ZONEC_MAXFIELDS 7
++#define ZFC_TILTIME	6
++#define ZONEC_MINFIELDS	3
++#define ZONEC_MAXFIELDS	7
+ 
+ /*
+  * Which files are which on a Rule line.
+@@ -244,7 +245,7 @@ static int	typecnt;
+ #define RF_TOD		7
+ #define RF_STDOFF	8
+ #define RF_ABBRVAR	9
+-#define RULE_FIELDS 10
++#define RULE_FIELDS	10
+ 
+ /*
+  * Which fields are which on a Link line.
+@@ -252,7 +253,7 @@ static int	typecnt;
+ 
+ #define LF_FROM		1
+ #define LF_TO		2
+-#define LINK_FIELDS 3
++#define LINK_FIELDS	3
+ 
+ /*
+  * Which fields are which on a Leap line.
+@@ -264,7 +265,7 @@ static int	typecnt;
+ #define LP_TIME		4
+ #define LP_CORR		5
+ #define LP_ROLL		6
+-#define LEAP_FIELDS 7
++#define LEAP_FIELDS	7
+ 
+ /*
+  * Year synonyms.
+@@ -998,48 +999,6 @@ dolink(char const *fromfield, char const
+ static zic_t const min_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
+ static zic_t const max_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE);
+ 
+-/*
+- * Estimated time of the Big Bang, in seconds since the POSIX epoch.
+- * rounded downward to the negation of a power of two that is
+- * comfortably outside the error bounds.
+- *
+- * For the time of the Big Bang, see:
+- *
+- * Ade PAR, Aghanim N, Armitage-Caplan C et al.  Planck 2013 results.
+- * I. Overview of products and scientific results.
+- * arXiv:1303.5062 2013-03-20 20:10:01 UTC
+- * <https://arxiv.org/pdf/1303.5062v1> [PDF]
+- *
+- * Page 36, Table 9, row Age/Gyr, column Planck+WP+highL+BAO 68% limits
+- * gives the value 13.798 plus-or-minus 0.037 billion years.
+- * Multiplying this by 1000000000 and then by 31557600 (the number of
+- * seconds in an astronomical year) gives a value that is comfortably
+- * less than 2**59, so BIG_BANG is - 2**59.
+- *
+- * BIG_BANG is approximate, and may change in future versions.
+- * Please do not rely on its exact value.
+- */
+-
+-#ifndef BIG_BANG
+-#define BIG_BANG (- (((zic_t) 1) << 59))
+-#endif
+-
+-/* If true, work around GNOME bug 730332
+-   <https://bugzilla.gnome.org/show_bug.cgi?id=730332>
+-   by refusing to output time stamps before BIG_BANG.
+-   Such time stamps are physically suspect anyway.
+-
+-   The GNOME bug is scheduled to be fixed in GNOME 3.22, and if so
+-   this workaround will no longer be needed when GNOME 3.21 and
+-   earlier are obsolete, say in the year 2021.  */
+-enum
+-{
+-WORK_AROUND_GNOME_BUG_730332 = true};
+-
+-static const zic_t early_time = (WORK_AROUND_GNOME_BUG_730332
+-								 ? BIG_BANG
+-								 : MINVAL(zic_t, TIME_T_BITS_IN_FILE));
+-
+ /* Return true if NAME is a directory.  */
+ static bool
+ itsdir(char const *name)
+@@ -1281,8 +1240,9 @@ infile(const char *name)
+  * A null string maps to zero.
+  * Call error with errstring and return zero on errors.
+  */
++
+ static zic_t
+-gethms(char const *string, char const *errstring, bool signable)
++gethms(char const *string, char const *errstring)
+ {
+ 	/* PG: make hh be int not zic_t to avoid sscanf portability issues */
+ 	int			hh;
+@@ -1299,9 +1259,7 @@ gethms(char const *string, char const *e
+ 
+ 	if (string == NULL || *string == '\0')
+ 		return 0;
+-	if (!signable)
+-		sign = 1;
+-	else if (*string == '-')
++	if (*string == '-')
+ 	{
+ 		sign = -1;
+ 		++string;
+@@ -1384,7 +1342,7 @@ getstdoff(char *field, bool *isdst)
+ 				break;
+ 		}
+ 	}
+-	stdoff = gethms(field, _("invalid saved time"), true);
++	stdoff = gethms(field, _("invalid saved time"));
+ 	*isdst = dst < 0 ? stdoff != 0 : dst;
+ 	return stdoff;
+ }
+@@ -1399,10 +1357,29 @@ inrule(char **fields, int nfields)
+ 		error(_("wrong number of fields on Rule line"));
+ 		return;
+ 	}
+-	if (*fields[RF_NAME] == '\0')
++	switch (*fields[RF_NAME])
+ 	{
+-		error(_("nameless rule"));
+-		return;
++		case '\0':
++		case ' ':
++		case '\f':
++		case '\n':
++		case '\r':
++		case '\t':
++		case '\v':
++		case '+':
++		case '-':
++		case '0':
++		case '1':
++		case '2':
++		case '3':
++		case '4':
++		case '5':
++		case '6':
++		case '7':
++		case '8':
++		case '9':
++			error(_("Invalid rule name \"%s\""), fields[RF_NAME]);
++			return;
+ 	}
+ 	r.r_filename = filename;
+ 	r.r_linenum = linenum;
+@@ -1507,7 +1484,7 @@ inzsub(char **fields, int nfields, bool
+ 	}
+ 	z.z_filename = filename;
+ 	z.z_linenum = linenum;
+-	z.z_gmtoff = gethms(fields[i_gmtoff], _("invalid UT offset"), true);
++	z.z_gmtoff = gethms(fields[i_gmtoff], _("invalid UT offset"));
+ 	if ((cp = strchr(fields[i_format], '%')) != NULL)
+ 	{
+ 		if ((*++cp != 's' && *cp != 'z') || strchr(cp, '%')
+@@ -1649,7 +1626,7 @@ inleap(char **fields, int nfields)
+ 		return;
+ 	}
+ 	t = dayoff * SECSPERDAY;
+-	tod = gethms(fields[LP_TIME], _("invalid time of day"), false);
++	tod = gethms(fields[LP_TIME], _("invalid time of day"));
+ 	cp = fields[LP_CORR];
+ 	{
+ 		bool		positive;
+@@ -1757,7 +1734,7 @@ rulesub(struct rule *rp, const char *loy
+ 				break;
+ 		}
+ 	}
+-	rp->r_tod = gethms(dp, _("invalid time of day"), false);
++	rp->r_tod = gethms(dp, _("invalid time of day"));
+ 	free(dp);
+ 
+ 	/*
+@@ -1942,7 +1919,43 @@ is32(const zic_t x)
+ }
+ 
+ static void
+-writezone(const char *const name, const char *const string, char version)
++swaptypes(int i, int j)
++{
++	{
++		zic_t		t = gmtoffs[i];
++
++		gmtoffs[i] = gmtoffs[j];
++		gmtoffs[j] = t;
++	}
++	{
++		char		t = isdsts[i];
++
++		isdsts[i] = isdsts[j];
++		isdsts[j] = t;
++	}
++	{
++		unsigned char t = abbrinds[i];
++
++		abbrinds[i] = abbrinds[j];
++		abbrinds[j] = t;
++	}
++	{
++		bool		t = ttisstds[i];
++
++		ttisstds[i] = ttisstds[j];
++		ttisstds[j] = t;
++	}
++	{
++		bool		t = ttisgmts[i];
++
++		ttisgmts[i] = ttisgmts[j];
++		ttisgmts[j] = t;
++	}
++}
++
++static void
++writezone(const char *const name, const char *const string, char version,
++		  int defaulttype)
+ {
+ 	FILE	   *fp;
+ 	ptrdiff_t	i,
+@@ -1977,14 +1990,12 @@ writezone(const char *const name, const
+ 
+ 		toi = 0;
+ 		fromi = 0;
+-		while (fromi < timecnt && attypes[fromi].at < early_time)
+-			++fromi;
+ 		for (; fromi < timecnt; ++fromi)
+ 		{
+-			if (toi > 1 && ((attypes[fromi].at +
+-							 gmtoffs[attypes[toi - 1].type]) <=
+-							(attypes[toi - 1].at +
+-							 gmtoffs[attypes[toi - 2].type])))
++			if (toi != 0 && ((attypes[fromi].at +
++							  gmtoffs[attypes[toi - 1].type]) <=
++							 (attypes[toi - 1].at + gmtoffs[toi == 1 ? 0
++															: attypes[toi - 2].type])))
+ 			{
+ 				attypes[toi - 1].type =
+ 					attypes[fromi].type;
+@@ -2019,8 +2030,8 @@ writezone(const char *const name, const
+ 	}
+ 
+ 	/*
+-	 * Work around QTBUG-53071 for time stamps less than y2038_boundary - 1,
+-	 * by inserting a no-op transition at time y2038_boundary - 1. This works
++	 * Work around QTBUG-53071 for timestamps less than y2038_boundary - 1, by
++	 * inserting a no-op transition at time y2038_boundary - 1. This works
+ 	 * only for timestamps before the boundary, which should be good enough in
+ 	 * practice as QTBUG-53071 should be long-dead by 2038.
+ 	 */
+@@ -2116,7 +2127,8 @@ writezone(const char *const name, const
+ 		int			thisleapi,
+ 					thisleapcnt,
+ 					thisleaplim;
+-		int			writetype[TZ_MAX_TYPES];
++		int			old0;
++		char		omittype[TZ_MAX_TYPES];
+ 		int			typemap[TZ_MAX_TYPES];
+ 		int			thistypecnt;
+ 		char		thischars[TZ_MAX_CHARS];
+@@ -2144,28 +2156,19 @@ writezone(const char *const name, const
+ 			error(_("too many transition times"));
+ 		thistimelim = thistimei + thistimecnt;
+ 		thisleaplim = thisleapi + thisleapcnt;
+-		for (i = 0; i < typecnt; ++i)
+-			writetype[i] = thistimecnt == timecnt;
+-		if (thistimecnt == 0)
+-		{
+-			/*
+-			 * No transition times fall in the current (32- or 64-bit) window.
+-			 */
+-			if (typecnt != 0)
+-				writetype[typecnt - 1] = true;
+-		}
+-		else
+-		{
+-			for (i = thistimei - 1; i < thistimelim; ++i)
+-				if (i >= 0)
+-					writetype[types[i]] = true;
++		memset(omittype, true, typecnt);
++		omittype[defaulttype] = false;
++		for (i = thistimei; i < thistimelim; i++)
++			omittype[types[i]] = false;
++
++		/*
++		 * Reorder types to make DEFAULTTYPE type 0. Use TYPEMAP to swap OLD0
++		 * and DEFAULTTYPE so that DEFAULTTYPE appears as type 0 in the output
++		 * instead of OLD0.  TYPEMAP also omits unused types.
++		 */
++		old0 = strlen(omittype);
++		swaptypes(old0, defaulttype);
+ 
+-			/*
+-			 * For America/Godthab and Antarctica/Palmer
+-			 */
+-			if (thistimei == 0)
+-				writetype[0] = true;
+-		}
+ #ifndef LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH
+ 
+ 		/*
+@@ -2187,8 +2190,8 @@ writezone(const char *const name, const
+ 					mrudst = types[i];
+ 				else
+ 					mrustd = types[i];
+-			for (i = 0; i < typecnt; ++i)
+-				if (writetype[i])
++			for (i = old0; i < typecnt; i++)
++				if (!omittype[i])
+ 				{
+ 					if (isdsts[i])
+ 						hidst = i;
+@@ -2205,7 +2208,7 @@ writezone(const char *const name, const
+ 							   ttisstds[mrudst],
+ 							   ttisgmts[mrudst]);
+ 				isdsts[mrudst] = 1;
+-				writetype[type] = true;
++				omittype[type] = false;
+ 			}
+ 			if (histd >= 0 && mrustd >= 0 && histd != mrustd &&
+ 				gmtoffs[histd] != gmtoffs[mrustd])
+@@ -2217,22 +2220,26 @@ writezone(const char *const name, const
+ 							   ttisstds[mrustd],
+ 							   ttisgmts[mrustd]);
+ 				isdsts[mrustd] = 0;
+-				writetype[type] = true;
++				omittype[type] = false;
+ 			}
+ 		}
+ #endif							/* !defined
+ 								 * LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH */
+ 		thistypecnt = 0;
+-		for (i = 0; i < typecnt; ++i)
+-			typemap[i] = writetype[i] ? thistypecnt++ : -1;
++		for (i = old0; i < typecnt; i++)
++			if (!omittype[i])
++				typemap[i == old0 ? defaulttype
++						: i == defaulttype ? old0 : i]
++					= thistypecnt++;
++
+ 		for (i = 0; i < sizeof indmap / sizeof indmap[0]; ++i)
+ 			indmap[i] = -1;
+ 		thischarcnt = 0;
+-		for (i = 0; i < typecnt; ++i)
++		for (i = old0; i < typecnt; i++)
+ 		{
+ 			char	   *thisabbr;
+ 
+-			if (!writetype[i])
++			if (omittype[i])
+ 				continue;
+ 			if (indmap[abbrinds[i]] >= 0)
+ 				continue;
+@@ -2267,23 +2274,16 @@ writezone(const char *const name, const
+ 		DO(tzh_typecnt);
+ 		DO(tzh_charcnt);
+ #undef DO
+-		for (i = thistimei; i < thistimelim; ++i)
+-			if (pass == 1)
+ 
+-				/*
+-				 * Output an INT32_MIN "transition" if appropriate; see above.
+-				 */
+-				puttzcode(((ats[i] < PG_INT32_MIN) ?
+-						   PG_INT32_MIN : ats[i]), fp);
+-			else
++		/* PG: print current timezone abbreviations if requested */
++		if (print_abbrevs && pass == 2)
++		{
++			/* Print "type" data for periods ending after print_cutoff */
++			for (i = thistimei; i < thistimelim; ++i)
+ 			{
+-				puttzcode64(ats[i], fp);
+-
+-				/* Print current timezone abbreviations if requested */
+-				if (print_abbrevs &&
+-					(i == thistimelim - 1 || ats[i + 1] > print_cutoff))
++				if (i == thistimelim - 1 || ats[i + 1] > print_cutoff)
+ 				{
+-					unsigned char tm = typemap[types[i]];
++					unsigned char tm = types[i];
+ 					char	   *thisabbrev = &thischars[indmap[abbrinds[tm]]];
+ 
+ 					/* filter out assorted junk entries */
+@@ -2295,6 +2295,32 @@ writezone(const char *const name, const
+ 								isdsts[tm] ? "\tD" : "");
+ 				}
+ 			}
++			/* Print the default type if we have no transitions at all */
++			if (thistimei >= thistimelim)
++			{
++				unsigned char tm = defaulttype;
++				char	   *thisabbrev = &thischars[indmap[abbrinds[tm]]];
++
++				/* filter out assorted junk entries */
++				if (strcmp(thisabbrev, GRANDPARENTED) != 0 &&
++					strcmp(thisabbrev, "zzz") != 0)
++					fprintf(stdout, "%s\t" INT64_FORMAT "%s\n",
++							thisabbrev,
++							gmtoffs[tm],
++							isdsts[tm] ? "\tD" : "");
++			}
++		}
++
++		for (i = thistimei; i < thistimelim; ++i)
++			if (pass == 1)
++
++				/*
++				 * Output an INT32_MIN "transition" if appropriate; see above.
++				 */
++				puttzcode(((ats[i] < PG_INT32_MIN) ?
++						   PG_INT32_MIN : ats[i]), fp);
++			else
++				puttzcode64(ats[i], fp);
+ 		for (i = thistimei; i < thistimelim; ++i)
+ 		{
+ 			unsigned char uc;
+@@ -2302,8 +2328,8 @@ writezone(const char *const name, const
+ 			uc = typemap[types[i]];
+ 			fwrite(&uc, sizeof uc, 1, fp);
+ 		}
+-		for (i = 0; i < typecnt; ++i)
+-			if (writetype[i])
++		for (i = old0; i < typecnt; i++)
++			if (!omittype[i])
+ 			{
+ 				puttzcode(gmtoffs[i], fp);
+ 				putc(isdsts[i], fp);
+@@ -2346,12 +2372,13 @@ writezone(const char *const name, const
+ 				puttzcode64(todo, fp);
+ 			puttzcode(corr[i], fp);
+ 		}
+-		for (i = 0; i < typecnt; ++i)
+-			if (writetype[i])
++		for (i = old0; i < typecnt; i++)
++			if (!omittype[i])
+ 				putc(ttisstds[i], fp);
+-		for (i = 0; i < typecnt; ++i)
+-			if (writetype[i])
++		for (i = old0; i < typecnt; i++)
++			if (!omittype[i])
+ 				putc(ttisgmts[i], fp);
++		swaptypes(old0, defaulttype);
+ 	}
+ 	fprintf(fp, "\n%s\n", string);
+ 	close_file(fp, directory, name);
+@@ -2757,6 +2784,7 @@ outzone(const struct zone *zpfirst, ptrd
+ 	zic_t		one = 1;
+ 	zic_t		y2038_boundary = one << 31;
+ 	zic_t		max_year0;
++	int			defaulttype = -1;
+ 
+ 	max_abbr_len = 2 + max_format_len + max_abbrvar_len;
+ 	max_envvar_len = 2 * max_abbr_len + 5 * 9;
+@@ -2880,9 +2908,9 @@ outzone(const struct zone *zpfirst, ptrd
+ 		 */
+ 		stdoff = 0;
+ 		zp = &zpfirst[i];
+-		usestart = i > 0 && (zp - 1)->z_untiltime > early_time;
++		usestart = i > 0 && (zp - 1)->z_untiltime > min_time;
+ 		useuntil = i < (zonecount - 1);
+-		if (useuntil && zp->z_untiltime <= early_time)
++		if (useuntil && zp->z_untiltime <= min_time)
+ 			continue;
+ 		gmtoff = zp->z_gmtoff;
+ 		eat(zp->z_filename, zp->z_linenum);
+@@ -2901,7 +2929,7 @@ outzone(const struct zone *zpfirst, ptrd
+ 				usestart = false;
+ 			}
+ 			else
+-				addtt(early_time, type);
++				defaulttype = type;
+ 		}
+ 		else
+ 			for (year = min_year; year <= max_year; ++year)
+@@ -3032,6 +3060,8 @@ outzone(const struct zone *zpfirst, ptrd
+ 					offset = oadd(zp->z_gmtoff, rp->r_stdoff);
+ 					type = addtype(offset, ab, rp->r_isdst,
+ 								   rp->r_todisstd, rp->r_todisgmt);
++					if (defaulttype < 0 && !rp->r_isdst)
++						defaulttype = type;
+ 					if (rp->r_hiyear == ZIC_MAX
+ 						&& !(0 <= lastatmax
+ 							 && ktime < attypes[lastatmax].at))
+@@ -3050,11 +3080,15 @@ outzone(const struct zone *zpfirst, ptrd
+ 			if (*startbuf == '\0')
+ 				error(_("cannot determine time zone abbreviation to use just after until time"));
+ 			else
+-				addtt(starttime,
+-					  addtype(startoff, startbuf,
+-							  startoff != zp->z_gmtoff,
+-							  startttisstd,
+-							  startttisgmt));
++			{
++				bool		isdst = startoff != zp->z_gmtoff;
++
++				type = addtype(startoff, startbuf, isdst,
++							   startttisstd, startttisgmt);
++				if (defaulttype < 0 && !isdst)
++					defaulttype = type;
++				addtt(starttime, type);
++			}
+ 		}
+ 
+ 		/*
+@@ -3071,6 +3105,8 @@ outzone(const struct zone *zpfirst, ptrd
+ 				starttime = tadd(starttime, -gmtoff);
+ 		}
+ 	}
++	if (defaulttype < 0)
++		defaulttype = 0;
+ 	if (0 <= lastatmax)
+ 		attypes[lastatmax].dontmerge = true;
+ 	if (do_extend)
+@@ -3100,7 +3136,7 @@ outzone(const struct zone *zpfirst, ptrd
+ 			attypes[timecnt - 1].dontmerge = true;
+ 		}
+ 	}
+-	writezone(zpfirst->z_name, envvar, version);
++	writezone(zpfirst->z_name, envvar, version, defaulttype);
+ 	free(startbuf);
+ 	free(ab);
+ 	free(envvar);
+@@ -3109,21 +3145,6 @@ outzone(const struct zone *zpfirst, ptrd
+ static void
+ addtt(zic_t starttime, int type)
+ {
+-	if (starttime <= early_time
+-		|| (timecnt == 1 && attypes[0].at < early_time))
+-	{
+-		gmtoffs[0] = gmtoffs[type];
+-		isdsts[0] = isdsts[type];
+-		ttisstds[0] = ttisstds[type];
+-		ttisgmts[0] = ttisgmts[type];
+-		if (abbrinds[type] != 0)
+-			strcpy(chars, &chars[abbrinds[type]]);
+-		abbrinds[0] = 0;
+-		charcnt = strlen(chars) + 1;
+-		typecnt = 1;
+-		timecnt = 0;
+-		type = 0;
+-	}
+ 	attypes = growalloc(attypes, sizeof *attypes, timecnt, &timecnt_alloc);
+ 	attypes[timecnt].at = starttime;
+ 	attypes[timecnt].dontmerge = false;
+@@ -3361,7 +3382,7 @@ is_alpha(char a)
+ }
+ 
+ /* If A is an uppercase character in the C locale, return its lowercase
+- * counterpart.  Otherwise, return A.  */
++   counterpart.  Otherwise, return A.  */
+ static char
+ lowerit(char a)
+ {
+@@ -3628,6 +3649,18 @@ rpytime(const struct rule *rp, zic_t wan
+ 	dayoff = 0;
+ 	m = TM_JANUARY;
+ 	y = EPOCH_YEAR;
++	if (y < wantedy)
++	{
++		wantedy -= y;
++		dayoff = (wantedy / YEARSPERREPEAT) * (SECSPERREPEAT / SECSPERDAY);
++		wantedy %= YEARSPERREPEAT;
++		wantedy += y;
++	}
++	else if (wantedy < 0)
++	{
++		dayoff = (wantedy / YEARSPERREPEAT) * (SECSPERREPEAT / SECSPERDAY);
++		wantedy %= YEARSPERREPEAT;
++	}
+ 	while (wantedy != y)
+ 	{
+ 		if (wantedy > y)
+@@ -3706,7 +3739,6 @@ will not work with pre-2004 versions of
+ 	if (dayoff > max_time / SECSPERDAY)
+ 		return max_time;
+ 	t = (zic_t) dayoff * SECSPERDAY;
+-
+ 	return tadd(t, rp->r_tod);
+ }
+ 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch
new file mode 100644
index 0000000..41e763c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch
@@ -0,0 +1,6452 @@
+From 13877d30f2ec93f6043937f76af207dcc614a4e7 Mon Sep 17 00:00:00 2001
+From: Tom Lane <tgl@sss.pgh.pa.us>
+Date: Fri, 19 Oct 2018 17:01:34 -0400
+Subject: [PATCH] Update time zone data files to tzdata release 2018f.
+
+DST law changes in Chile, Fiji, and Russia (Volgograd).
+Historical corrections for China, Japan, Macau, and North Korea.
+
+Note: like the previous tzdata update, this involves a depressingly
+large amount of semantically-meaningless churn in tzdata.zi.  That
+is a consequence of upstream's data compression method assigning
+unstable abbreviations to DST rulesets.  I complained about that
+to them last time, and this version now uses an assignment method
+that pays some heed to not changing abbreviations unnecessarily.
+So hopefully, that'll be better going forward.
+
+Upstream-Status: Backport
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ src/timezone/data/tzdata.zi      | 5273 +++++++++++++++++++-------------------
+ src/timezone/known_abbrevs.txt   |    1 +
+ src/timezone/tznames/America.txt |    3 +
+ src/timezone/tznames/Asia.txt    |    4 +
+ src/timezone/tznames/Default     |    3 +
+ src/timezone/tznames/Pacific.txt |    3 +
+ 6 files changed, 2660 insertions(+), 2627 deletions(-)
+
+diff --git a/src/timezone/data/tzdata.zi b/src/timezone/data/tzdata.zi
+index c470112..6d98902 100644
+--- a/src/timezone/data/tzdata.zi
++++ b/src/timezone/data/tzdata.zi
+@@ -1,36 +1,36 @@
+-# version 2018e
++# version 2018f
+ # This zic input file is in the public domain.
+-R A 1916 o - Jun 14 23s 1 S
+-R A 1916 1919 - O Sun>=1 23s 0 -
+-R A 1917 o - Mar 24 23s 1 S
+-R A 1918 o - Mar 9 23s 1 S
+-R A 1919 o - Mar 1 23s 1 S
+-R A 1920 o - F 14 23s 1 S
+-R A 1920 o - O 23 23s 0 -
+-R A 1921 o - Mar 14 23s 1 S
+-R A 1921 o - Jun 21 23s 0 -
+-R A 1939 o - S 11 23s 1 S
+-R A 1939 o - N 19 1 0 -
+-R A 1944 1945 - Ap M>=1 2 1 S
+-R A 1944 o - O 8 2 0 -
+-R A 1945 o - S 16 1 0 -
+-R A 1971 o - Ap 25 23s 1 S
+-R A 1971 o - S 26 23s 0 -
+-R A 1977 o - May 6 0 1 S
+-R A 1977 o - O 21 0 0 -
+-R A 1978 o - Mar 24 1 1 S
+-R A 1978 o - S 22 3 0 -
+-R A 1980 o - Ap 25 0 1 S
+-R A 1980 o - O 31 2 0 -
++R d 1916 o - Jun 14 23s 1 S
++R d 1916 1919 - O Sun>=1 23s 0 -
++R d 1917 o - Mar 24 23s 1 S
++R d 1918 o - Mar 9 23s 1 S
++R d 1919 o - Mar 1 23s 1 S
++R d 1920 o - F 14 23s 1 S
++R d 1920 o - O 23 23s 0 -
++R d 1921 o - Mar 14 23s 1 S
++R d 1921 o - Jun 21 23s 0 -
++R d 1939 o - S 11 23s 1 S
++R d 1939 o - N 19 1 0 -
++R d 1944 1945 - Ap M>=1 2 1 S
++R d 1944 o - O 8 2 0 -
++R d 1945 o - S 16 1 0 -
++R d 1971 o - Ap 25 23s 1 S
++R d 1971 o - S 26 23s 0 -
++R d 1977 o - May 6 0 1 S
++R d 1977 o - O 21 0 0 -
++R d 1978 o - Mar 24 1 1 S
++R d 1978 o - S 22 3 0 -
++R d 1980 o - Ap 25 0 1 S
++R d 1980 o - O 31 2 0 -
+ Z Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:1
+ 0:9:21 - PMT 1911 Mar 11
+-0 A WE%sT 1940 F 25 2
+-1 A CE%sT 1946 O 7
++0 d WE%sT 1940 F 25 2
++1 d CE%sT 1946 O 7
+ 0 - WET 1956 Ja 29
+ 1 - CET 1963 Ap 14
+-0 A WE%sT 1977 O 21
+-1 A CE%sT 1979 O 26
+-0 A WE%sT 1981 May
++0 d WE%sT 1977 O 21
++1 d CE%sT 1979 O 26
++0 d WE%sT 1981 May
+ 1 - CET
+ Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u
+ -2 - -02 1942 S
+@@ -52,44 +52,44 @@ Li Africa/Abidjan Africa/Lome
+ Li Africa/Abidjan Africa/Nouakchott
+ Li Africa/Abidjan Africa/Ouagadougou
+ Li Africa/Abidjan Atlantic/St_Helena
+-R B 1940 o - Jul 15 0 1 S
+-R B 1940 o - O 1 0 0 -
+-R B 1941 o - Ap 15 0 1 S
+-R B 1941 o - S 16 0 0 -
+-R B 1942 1944 - Ap 1 0 1 S
+-R B 1942 o - O 27 0 0 -
+-R B 1943 1945 - N 1 0 0 -
+-R B 1945 o - Ap 16 0 1 S
+-R B 1957 o - May 10 0 1 S
+-R B 1957 1958 - O 1 0 0 -
+-R B 1958 o - May 1 0 1 S
+-R B 1959 1981 - May 1 1 1 S
+-R B 1959 1965 - S 30 3 0 -
+-R B 1966 1994 - O 1 3 0 -
+-R B 1982 o - Jul 25 1 1 S
+-R B 1983 o - Jul 12 1 1 S
+-R B 1984 1988 - May 1 1 1 S
+-R B 1989 o - May 6 1 1 S
+-R B 1990 1994 - May 1 1 1 S
+-R B 1995 2010 - Ap lastF 0s 1 S
+-R B 1995 2005 - S lastTh 24 0 -
+-R B 2006 o - S 21 24 0 -
+-R B 2007 o - S Th>=1 24 0 -
+-R B 2008 o - Au lastTh 24 0 -
+-R B 2009 o - Au 20 24 0 -
+-R B 2010 o - Au 10 24 0 -
+-R B 2010 o - S 9 24 1 S
+-R B 2010 o - S lastTh 24 0 -
+-R B 2014 o - May 15 24 1 S
+-R B 2014 o - Jun 26 24 0 -
+-R B 2014 o - Jul 31 24 1 S
+-R B 2014 o - S lastTh 24 0 -
++R K 1940 o - Jul 15 0 1 S
++R K 1940 o - O 1 0 0 -
++R K 1941 o - Ap 15 0 1 S
++R K 1941 o - S 16 0 0 -
++R K 1942 1944 - Ap 1 0 1 S
++R K 1942 o - O 27 0 0 -
++R K 1943 1945 - N 1 0 0 -
++R K 1945 o - Ap 16 0 1 S
++R K 1957 o - May 10 0 1 S
++R K 1957 1958 - O 1 0 0 -
++R K 1958 o - May 1 0 1 S
++R K 1959 1981 - May 1 1 1 S
++R K 1959 1965 - S 30 3 0 -
++R K 1966 1994 - O 1 3 0 -
++R K 1982 o - Jul 25 1 1 S
++R K 1983 o - Jul 12 1 1 S
++R K 1984 1988 - May 1 1 1 S
++R K 1989 o - May 6 1 1 S
++R K 1990 1994 - May 1 1 1 S
++R K 1995 2010 - Ap lastF 0s 1 S
++R K 1995 2005 - S lastTh 24 0 -
++R K 2006 o - S 21 24 0 -
++R K 2007 o - S Th>=1 24 0 -
++R K 2008 o - Au lastTh 24 0 -
++R K 2009 o - Au 20 24 0 -
++R K 2010 o - Au 10 24 0 -
++R K 2010 o - S 9 24 1 S
++R K 2010 o - S lastTh 24 0 -
++R K 2014 o - May 15 24 1 S
++R K 2014 o - Jun 26 24 0 -
++R K 2014 o - Jul 31 24 1 S
++R K 2014 o - S lastTh 24 0 -
+ Z Africa/Cairo 2:5:9 - LMT 1900 O
+-2 B EE%sT
+-R C 1920 1942 - S 1 0 0:20 -
+-R C 1920 1942 - D 31 0 0 -
++2 K EE%sT
++R GH 1920 1942 - S 1 0 0:20 -
++R GH 1920 1942 - D 31 0 0 -
+ Z Africa/Accra -0:0:52 - LMT 1918
+-0 C GMT/+0020
++0 GH GMT/+0020
+ Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u
+ -1 - -01 1975
+ 0 - GMT
+@@ -111,99 +111,99 @@ Z Africa/Monrovia -0:43:8 - LMT 1882
+ -0:43:8 - MMT 1919 Mar
+ -0:44:30 - MMT 1972 Ja 7
+ 0 - GMT
+-R D 1951 o - O 14 2 1 S
+-R D 1952 o - Ja 1 0 0 -
+-R D 1953 o - O 9 2 1 S
+-R D 1954 o - Ja 1 0 0 -
+-R D 1955 o - S 30 0 1 S
+-R D 1956 o - Ja 1 0 0 -
+-R D 1982 1984 - Ap 1 0 1 S
+-R D 1982 1985 - O 1 0 0 -
+-R D 1985 o - Ap 6 0 1 S
+-R D 1986 o - Ap 4 0 1 S
+-R D 1986 o - O 3 0 0 -
+-R D 1987 1989 - Ap 1 0 1 S
+-R D 1987 1989 - O 1 0 0 -
+-R D 1997 o - Ap 4 0 1 S
+-R D 1997 o - O 4 0 0 -
+-R D 2013 o - Mar lastF 1 1 S
+-R D 2013 o - O lastF 2 0 -
++R L 1951 o - O 14 2 1 S
++R L 1952 o - Ja 1 0 0 -
++R L 1953 o - O 9 2 1 S
++R L 1954 o - Ja 1 0 0 -
++R L 1955 o - S 30 0 1 S
++R L 1956 o - Ja 1 0 0 -
++R L 1982 1984 - Ap 1 0 1 S
++R L 1982 1985 - O 1 0 0 -
++R L 1985 o - Ap 6 0 1 S
++R L 1986 o - Ap 4 0 1 S
++R L 1986 o - O 3 0 0 -
++R L 1987 1989 - Ap 1 0 1 S
++R L 1987 1989 - O 1 0 0 -
++R L 1997 o - Ap 4 0 1 S
++R L 1997 o - O 4 0 0 -
++R L 2013 o - Mar lastF 1 1 S
++R L 2013 o - O lastF 2 0 -
+ Z Africa/Tripoli 0:52:44 - LMT 1920
+-1 D CE%sT 1959
++1 L CE%sT 1959
+ 2 - EET 1982
+-1 D CE%sT 1990 May 4
++1 L CE%sT 1990 May 4
+ 2 - EET 1996 S 30
+-1 D CE%sT 1997 O 4
++1 L CE%sT 1997 O 4
+ 2 - EET 2012 N 10 2
+-1 D CE%sT 2013 O 25 2
++1 L CE%sT 2013 O 25 2
+ 2 - EET
+-R E 1982 o - O 10 0 1 -
+-R E 1983 o - Mar 21 0 0 -
+-R E 2008 o - O lastSun 2 1 -
+-R E 2009 o - Mar lastSun 2 0 -
++R MU 1982 o - O 10 0 1 -
++R MU 1983 o - Mar 21 0 0 -
++R MU 2008 o - O lastSun 2 1 -
++R MU 2009 o - Mar lastSun 2 0 -
+ Z Indian/Mauritius 3:50 - LMT 1907
+-4 E +04/+05
+-R F 1939 o - S 12 0 1 S
+-R F 1939 o - N 19 0 0 -
+-R F 1940 o - F 25 0 1 S
+-R F 1945 o - N 18 0 0 -
+-R F 1950 o - Jun 11 0 1 S
+-R F 1950 o - O 29 0 0 -
+-R F 1967 o - Jun 3 12 1 S
+-R F 1967 o - O 1 0 0 -
+-R F 1974 o - Jun 24 0 1 S
+-R F 1974 o - S 1 0 0 -
+-R F 1976 1977 - May 1 0 1 S
+-R F 1976 o - Au 1 0 0 -
+-R F 1977 o - S 28 0 0 -
+-R F 1978 o - Jun 1 0 1 S
+-R F 1978 o - Au 4 0 0 -
+-R F 2008 o - Jun 1 0 1 S
+-R F 2008 o - S 1 0 0 -
+-R F 2009 o - Jun 1 0 1 S
+-R F 2009 o - Au 21 0 0 -
+-R F 2010 o - May 2 0 1 S
+-R F 2010 o - Au 8 0 0 -
+-R F 2011 o - Ap 3 0 1 S
+-R F 2011 o - Jul 31 0 0 -
+-R F 2012 2013 - Ap lastSun 2 1 S
+-R F 2012 o - Jul 20 3 0 -
+-R F 2012 o - Au 20 2 1 S
+-R F 2012 o - S 30 3 0 -
+-R F 2013 o - Jul 7 3 0 -
+-R F 2013 o - Au 10 2 1 S
+-R F 2013 ma - O lastSun 3 0 -
+-R F 2014 2021 - Mar lastSun 2 1 S
+-R F 2014 o - Jun 28 3 0 -
+-R F 2014 o - Au 2 2 1 S
+-R F 2015 o - Jun 14 3 0 -
+-R F 2015 o - Jul 19 2 1 S
+-R F 2016 o - Jun 5 3 0 -
+-R F 2016 o - Jul 10 2 1 S
+-R F 2017 o - May 21 3 0 -
+-R F 2017 o - Jul 2 2 1 S
+-R F 2018 o - May 13 3 0 -
+-R F 2018 o - Jun 17 2 1 S
+-R F 2019 o - May 5 3 0 -
+-R F 2019 o - Jun 9 2 1 S
+-R F 2020 o - Ap 19 3 0 -
+-R F 2020 o - May 24 2 1 S
+-R F 2021 o - Ap 11 3 0 -
+-R F 2021 o - May 16 2 1 S
+-R F 2022 o - May 8 2 1 S
+-R F 2023 o - Ap 23 2 1 S
+-R F 2024 o - Ap 14 2 1 S
+-R F 2025 o - Ap 6 2 1 S
+-R F 2026 ma - Mar lastSun 2 1 S
+-R F 2036 o - O 19 3 0 -
+-R F 2037 o - O 4 3 0 -
++4 MU +04/+05
++R M 1939 o - S 12 0 1 S
++R M 1939 o - N 19 0 0 -
++R M 1940 o - F 25 0 1 S
++R M 1945 o - N 18 0 0 -
++R M 1950 o - Jun 11 0 1 S
++R M 1950 o - O 29 0 0 -
++R M 1967 o - Jun 3 12 1 S
++R M 1967 o - O 1 0 0 -
++R M 1974 o - Jun 24 0 1 S
++R M 1974 o - S 1 0 0 -
++R M 1976 1977 - May 1 0 1 S
++R M 1976 o - Au 1 0 0 -
++R M 1977 o - S 28 0 0 -
++R M 1978 o - Jun 1 0 1 S
++R M 1978 o - Au 4 0 0 -
++R M 2008 o - Jun 1 0 1 S
++R M 2008 o - S 1 0 0 -
++R M 2009 o - Jun 1 0 1 S
++R M 2009 o - Au 21 0 0 -
++R M 2010 o - May 2 0 1 S
++R M 2010 o - Au 8 0 0 -
++R M 2011 o - Ap 3 0 1 S
++R M 2011 o - Jul 31 0 0 -
++R M 2012 2013 - Ap lastSun 2 1 S
++R M 2012 o - Jul 20 3 0 -
++R M 2012 o - Au 20 2 1 S
++R M 2012 o - S 30 3 0 -
++R M 2013 o - Jul 7 3 0 -
++R M 2013 o - Au 10 2 1 S
++R M 2013 ma - O lastSun 3 0 -
++R M 2014 2021 - Mar lastSun 2 1 S
++R M 2014 o - Jun 28 3 0 -
++R M 2014 o - Au 2 2 1 S
++R M 2015 o - Jun 14 3 0 -
++R M 2015 o - Jul 19 2 1 S
++R M 2016 o - Jun 5 3 0 -
++R M 2016 o - Jul 10 2 1 S
++R M 2017 o - May 21 3 0 -
++R M 2017 o - Jul 2 2 1 S
++R M 2018 o - May 13 3 0 -
++R M 2018 o - Jun 17 2 1 S
++R M 2019 o - May 5 3 0 -
++R M 2019 o - Jun 9 2 1 S
++R M 2020 o - Ap 19 3 0 -
++R M 2020 o - May 24 2 1 S
++R M 2021 o - Ap 11 3 0 -
++R M 2021 o - May 16 2 1 S
++R M 2022 o - May 8 2 1 S
++R M 2023 o - Ap 23 2 1 S
++R M 2024 o - Ap 14 2 1 S
++R M 2025 o - Ap 6 2 1 S
++R M 2026 ma - Mar lastSun 2 1 S
++R M 2036 o - O 19 3 0 -
++R M 2037 o - O 4 3 0 -
+ Z Africa/Casablanca -0:30:20 - LMT 1913 O 26
+-0 F WE%sT 1984 Mar 16
++0 M WE%sT 1984 Mar 16
+ 1 - CET 1986
+-0 F WE%sT
++0 M WE%sT
+ Z Africa/El_Aaiun -0:52:48 - LMT 1934
+ -1 - -01 1976 Ap 14
+-0 F WE%sT
++0 M WE%sT
+ Z Africa/Maputo 2:10:20 - LMT 1903 Mar
+ 2 - CAT
+ Li Africa/Maputo Africa/Blantyre
+@@ -213,15 +213,15 @@ Li Africa/Maputo Africa/Harare
+ Li Africa/Maputo Africa/Kigali
+ Li Africa/Maputo Africa/Lubumbashi
+ Li Africa/Maputo Africa/Lusaka
+-R G 1994 o - Mar 21 0 -1 WAT
+-R G 1994 2017 - S Sun>=1 2 0 CAT
+-R G 1995 2017 - Ap Sun>=1 2 -1 WAT
++R NA 1994 o - Mar 21 0 -1 WAT
++R NA 1994 2017 - S Sun>=1 2 0 CAT
++R NA 1995 2017 - Ap Sun>=1 2 -1 WAT
+ Z Africa/Windhoek 1:8:24 - LMT 1892 F 8
+ 1:30 - +0130 1903 Mar
+ 2 - SAST 1942 S 20 2
+ 2 1 SAST 1943 Mar 21 2
+ 2 - SAST 1990 Mar 21
+-2 G %s
++2 NA %s
+ Z Africa/Lagos 0:13:36 - LMT 1919 S
+ 1 - WAT
+ Li Africa/Lagos Africa/Bangui
+@@ -241,52 +241,52 @@ Z Africa/Sao_Tome 0:26:56 - LMT 1884
+ 1 - WAT
+ Z Indian/Mahe 3:41:48 - LMT 1906 Jun
+ 4 - +04
+-R H 1942 1943 - S Sun>=15 2 1 -
+-R H 1943 1944 - Mar Sun>=15 2 0 -
++R SA 1942 1943 - S Sun>=15 2 1 -
++R SA 1943 1944 - Mar Sun>=15 2 0 -
+ Z Africa/Johannesburg 1:52 - LMT 1892 F 8
+ 1:30 - SAST 1903 Mar
+-2 H SAST
++2 SA SAST
+ Li Africa/Johannesburg Africa/Maseru
+ Li Africa/Johannesburg Africa/Mbabane
+-R I 1970 o - May 1 0 1 S
+-R I 1970 1985 - O 15 0 0 -
+-R I 1971 o - Ap 30 0 1 S
+-R I 1972 1985 - Ap lastSun 0 1 S
++R SD 1970 o - May 1 0 1 S
++R SD 1970 1985 - O 15 0 0 -
++R SD 1971 o - Ap 30 0 1 S
++R SD 1972 1985 - Ap lastSun 0 1 S
+ Z Africa/Khartoum 2:10:8 - LMT 1931
+-2 I CA%sT 2000 Ja 15 12
++2 SD CA%sT 2000 Ja 15 12
+ 3 - EAT 2017 N
+ 2 - CAT
+ Z Africa/Juba 2:6:28 - LMT 1931
+-2 I CA%sT 2000 Ja 15 12
++2 SD CA%sT 2000 Ja 15 12
+ 3 - EAT
+-R J 1939 o - Ap 15 23s 1 S
+-R J 1939 o - N 18 23s 0 -
+-R J 1940 o - F 25 23s 1 S
+-R J 1941 o - O 6 0 0 -
+-R J 1942 o - Mar 9 0 1 S
+-R J 1942 o - N 2 3 0 -
+-R J 1943 o - Mar 29 2 1 S
+-R J 1943 o - Ap 17 2 0 -
+-R J 1943 o - Ap 25 2 1 S
+-R J 1943 o - O 4 2 0 -
+-R J 1944 1945 - Ap M>=1 2 1 S
+-R J 1944 o - O 8 0 0 -
+-R J 1945 o - S 16 0 0 -
+-R J 1977 o - Ap 30 0s 1 S
+-R J 1977 o - S 24 0s 0 -
+-R J 1978 o - May 1 0s 1 S
+-R J 1978 o - O 1 0s 0 -
+-R J 1988 o - Jun 1 0s 1 S
+-R J 1988 1990 - S lastSun 0s 0 -
+-R J 1989 o - Mar 26 0s 1 S
+-R J 1990 o - May 1 0s 1 S
+-R J 2005 o - May 1 0s 1 S
+-R J 2005 o - S 30 1s 0 -
+-R J 2006 2008 - Mar lastSun 2s 1 S
+-R J 2006 2008 - O lastSun 2s 0 -
++R n 1939 o - Ap 15 23s 1 S
++R n 1939 o - N 18 23s 0 -
++R n 1940 o - F 25 23s 1 S
++R n 1941 o - O 6 0 0 -
++R n 1942 o - Mar 9 0 1 S
++R n 1942 o - N 2 3 0 -
++R n 1943 o - Mar 29 2 1 S
++R n 1943 o - Ap 17 2 0 -
++R n 1943 o - Ap 25 2 1 S
++R n 1943 o - O 4 2 0 -
++R n 1944 1945 - Ap M>=1 2 1 S
++R n 1944 o - O 8 0 0 -
++R n 1945 o - S 16 0 0 -
++R n 1977 o - Ap 30 0s 1 S
++R n 1977 o - S 24 0s 0 -
++R n 1978 o - May 1 0s 1 S
++R n 1978 o - O 1 0s 0 -
++R n 1988 o - Jun 1 0s 1 S
++R n 1988 1990 - S lastSun 0s 0 -
++R n 1989 o - Mar 26 0s 1 S
++R n 1990 o - May 1 0s 1 S
++R n 2005 o - May 1 0s 1 S
++R n 2005 o - S 30 1s 0 -
++R n 2006 2008 - Mar lastSun 2s 1 S
++R n 2006 2008 - O lastSun 2s 0 -
+ Z Africa/Tunis 0:40:44 - LMT 1881 May 12
+ 0:9:21 - PMT 1911 Mar 11
+-1 J CE%sT
++1 n CE%sT
+ Z Antarctica/Casey 0 - -00 1969
+ 8 - +08 2009 O 18 2
+ 11 - +11 2010 Mar 5 2
+@@ -314,10 +314,10 @@ Z Antarctica/DumontDUrville 0 - -00 1947
+ 10 - +10
+ Z Antarctica/Syowa 0 - -00 1957 Ja 29
+ 3 - +03
+-R K 2005 ma - Mar lastSun 1u 2 +02
+-R K 2004 ma - O lastSun 1u 0 +00
++R Tr 2005 ma - Mar lastSun 1u 2 +02
++R Tr 2004 ma - O lastSun 1u 0 +00
+ Z Antarctica/Troll 0 - -00 2005 F 12
+-0 K %s
++0 Tr %s
+ Z Antarctica/Vostok 0 - -00 1957 D 16
+ 6 - +06
+ Z Antarctica/Rothera 0 - -00 1976 D
+@@ -325,33 +325,33 @@ Z Antarctica/Rothera 0 - -00 1976 D
+ Z Asia/Kabul 4:36:48 - LMT 1890
+ 4 - +04 1945
+ 4:30 - +0430
+-R L 2011 o - Mar lastSun 2s 1 -
+-R L 2011 o - O lastSun 2s 0 -
++R AM 2011 o - Mar lastSun 2s 1 -
++R AM 2011 o - O lastSun 2s 0 -
+ Z Asia/Yerevan 2:58 - LMT 1924 May 2
+ 3 - +03 1957 Mar
+-4 M +04/+05 1991 Mar 31 2s
+-3 M +03/+04 1995 S 24 2s
++4 R +04/+05 1991 Mar 31 2s
++3 R +03/+04 1995 S 24 2s
+ 4 - +04 1997
+-4 M +04/+05 2011
+-4 L +04/+05
+-R N 1997 2015 - Mar lastSun 4 1 -
+-R N 1997 2015 - O lastSun 5 0 -
++4 R +04/+05 2011
++4 AM +04/+05
++R AZ 1997 2015 - Mar lastSun 4 1 -
++R AZ 1997 2015 - O lastSun 5 0 -
+ Z Asia/Baku 3:19:24 - LMT 1924 May 2
+ 3 - +03 1957 Mar
+-4 M +04/+05 1991 Mar 31 2s
+-3 M +03/+04 1992 S lastSun 2s
++4 R +04/+05 1991 Mar 31 2s
++3 R +03/+04 1992 S lastSun 2s
+ 4 - +04 1996
+-4 O +04/+05 1997
+-4 N +04/+05
+-R P 2009 o - Jun 19 23 1 -
+-R P 2009 o - D 31 24 0 -
++4 E +04/+05 1997
++4 AZ +04/+05
++R BD 2009 o - Jun 19 23 1 -
++R BD 2009 o - D 31 24 0 -
+ Z Asia/Dhaka 6:1:40 - LMT 1890
+ 5:53:20 - HMT 1941 O
+ 6:30 - +0630 1942 May 15
+ 5:30 - +0530 1942 S
+ 6:30 - +0630 1951 S 30
+ 6 - +06 2009
+-6 P +06/+07
++6 BD +06/+07
+ Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15
+ 5:30 - +0530 1987 O
+ 6 - +06
+@@ -366,103 +366,127 @@ Z Asia/Yangon 6:24:47 - LMT 1880
+ 6:30 - +0630 1942 May
+ 9 - +09 1945 May 3
+ 6:30 - +0630
+-R Q 1940 o - Jun 3 0 1 D
+-R Q 1940 1941 - O 1 0 0 S
+-R Q 1941 o - Mar 16 0 1 D
+-R R 1986 o - May 4 0 1 D
+-R R 1986 1991 - S Sun>=11 0 0 S
+-R R 1987 1991 - Ap Sun>=10 0 1 D
++R Sh 1940 o - Jun 1 0 1 D
++R Sh 1940 o - O 12 24 0 S
++R Sh 1941 o - Mar 15 0 1 D
++R Sh 1941 o - N 1 24 0 S
++R Sh 1942 o - Ja 31 0 1 D
++R Sh 1945 o - S 1 24 0 S
++R Sh 1946 o - May 15 0 1 D
++R Sh 1946 o - S 30 24 0 S
++R Sh 1947 o - Ap 15 0 1 D
++R Sh 1947 o - O 31 24 0 S
++R Sh 1948 1949 - May 1 0 1 D
++R Sh 1948 1949 - S 30 24 0 S
++R CN 1986 o - May 4 2 1 D
++R CN 1986 1991 - S Sun>=11 2 0 S
++R CN 1987 1991 - Ap Sun>=11 2 1 D
+ Z Asia/Shanghai 8:5:43 - LMT 1901
+-8 Q C%sT 1949
+-8 R C%sT
++8 Sh C%sT 1949 May 28
++8 CN C%sT
+ Z Asia/Urumqi 5:50:20 - LMT 1928
+ 6 - +06
+-R S 1941 o - Ap 1 3:30 1 S
+-R S 1941 o - S 30 3:30 0 -
+-R S 1946 o - Ap 20 3:30 1 S
+-R S 1946 o - D 1 3:30 0 -
+-R S 1947 o - Ap 13 3:30 1 S
+-R S 1947 o - D 30 3:30 0 -
+-R S 1948 o - May 2 3:30 1 S
+-R S 1948 1951 - O lastSun 3:30 0 -
+-R S 1952 o - O 25 3:30 0 -
+-R S 1949 1953 - Ap Sun>=1 3:30 1 S
+-R S 1953 o - N 1 3:30 0 -
+-R S 1954 1964 - Mar Sun>=18 3:30 1 S
+-R S 1954 o - O 31 3:30 0 -
+-R S 1955 1964 - N Sun>=1 3:30 0 -
+-R S 1965 1976 - Ap Sun>=16 3:30 1 S
+-R S 1965 1976 - O Sun>=16 3:30 0 -
+-R S 1973 o - D 30 3:30 1 S
+-R S 1979 o - May Sun>=8 3:30 1 S
+-R S 1979 o - O Sun>=16 3:30 0 -
++R HK 1941 o - Ap 1 3:30 1 S
++R HK 1941 o - S 30 3:30 0 -
++R HK 1946 o - Ap 20 3:30 1 S
++R HK 1946 o - D 1 3:30 0 -
++R HK 1947 o - Ap 13 3:30 1 S
++R HK 1947 o - D 30 3:30 0 -
++R HK 1948 o - May 2 3:30 1 S
++R HK 1948 1951 - O lastSun 3:30 0 -
++R HK 1952 o - O 25 3:30 0 -
++R HK 1949 1953 - Ap Sun>=1 3:30 1 S
++R HK 1953 o - N 1 3:30 0 -
++R HK 1954 1964 - Mar Sun>=18 3:30 1 S
++R HK 1954 o - O 31 3:30 0 -
++R HK 1955 1964 - N Sun>=1 3:30 0 -
++R HK 1965 1976 - Ap Sun>=16 3:30 1 S
++R HK 1965 1976 - O Sun>=16 3:30 0 -
++R HK 1973 o - D 30 3:30 1 S
++R HK 1979 o - May Sun>=8 3:30 1 S
++R HK 1979 o - O Sun>=16 3:30 0 -
+ Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 30
+-8 S HK%sT 1941 D 25
++8 HK HK%sT 1941 D 25
+ 9 - JST 1945 S 15
+-8 S HK%sT
+-R T 1946 o - May 15 0 1 D
+-R T 1946 o - O 1 0 0 S
+-R T 1947 o - Ap 15 0 1 D
+-R T 1947 o - N 1 0 0 S
+-R T 1948 1951 - May 1 0 1 D
+-R T 1948 1951 - O 1 0 0 S
+-R T 1952 o - Mar 1 0 1 D
+-R T 1952 1954 - N 1 0 0 S
+-R T 1953 1959 - Ap 1 0 1 D
+-R T 1955 1961 - O 1 0 0 S
+-R T 1960 1961 - Jun 1 0 1 D
+-R T 1974 1975 - Ap 1 0 1 D
+-R T 1974 1975 - O 1 0 0 S
+-R T 1979 o - Jul 1 0 1 D
+-R T 1979 o - O 1 0 0 S
++8 HK HK%sT
++R f 1946 o - May 15 0 1 D
++R f 1946 o - O 1 0 0 S
++R f 1947 o - Ap 15 0 1 D
++R f 1947 o - N 1 0 0 S
++R f 1948 1951 - May 1 0 1 D
++R f 1948 1951 - O 1 0 0 S
++R f 1952 o - Mar 1 0 1 D
++R f 1952 1954 - N 1 0 0 S
++R f 1953 1959 - Ap 1 0 1 D
++R f 1955 1961 - O 1 0 0 S
++R f 1960 1961 - Jun 1 0 1 D
++R f 1974 1975 - Ap 1 0 1 D
++R f 1974 1975 - O 1 0 0 S
++R f 1979 o - Jul 1 0 1 D
++R f 1979 o - O 1 0 0 S
+ Z Asia/Taipei 8:6 - LMT 1896
+ 8 - CST 1937 O
+ 9 - JST 1945 S 21 1
+-8 T C%sT
+-R U 1961 1962 - Mar Sun>=16 3:30 1 D
+-R U 1961 1964 - N Sun>=1 3:30 0 S
+-R U 1963 o - Mar Sun>=16 0 1 D
+-R U 1964 o - Mar Sun>=16 3:30 1 D
+-R U 1965 o - Mar Sun>=16 0 1 D
+-R U 1965 o - O 31 0 0 S
+-R U 1966 1971 - Ap Sun>=16 3:30 1 D
+-R U 1966 1971 - O Sun>=16 3:30 0 S
+-R U 1972 1974 - Ap Sun>=15 0 1 D
+-R U 1972 1973 - O Sun>=15 0 0 S
+-R U 1974 1977 - O Sun>=15 3:30 0 S
+-R U 1975 1977 - Ap Sun>=15 3:30 1 D
+-R U 1978 1980 - Ap Sun>=15 0 1 D
+-R U 1978 1980 - O Sun>=15 0 0 S
+-Z Asia/Macau 7:34:20 - LMT 1911 D 31 16u
+-8 U C%sT
+-R V 1975 o - Ap 13 0 1 S
+-R V 1975 o - O 12 0 0 -
+-R V 1976 o - May 15 0 1 S
+-R V 1976 o - O 11 0 0 -
+-R V 1977 1980 - Ap Sun>=1 0 1 S
+-R V 1977 o - S 25 0 0 -
+-R V 1978 o - O 2 0 0 -
+-R V 1979 1997 - S lastSun 0 0 -
+-R V 1981 1998 - Mar lastSun 0 1 S
++8 f C%sT
++R _ 1942 1943 - Ap 30 23 1 -
++R _ 1942 o - N 17 23 0 -
++R _ 1943 o - S 30 23 0 S
++R _ 1946 o - Ap 30 23s 1 D
++R _ 1946 o - S 30 23s 0 S
++R _ 1947 o - Ap 19 23s 1 D
++R _ 1947 o - N 30 23s 0 S
++R _ 1948 o - May 2 23s 1 D
++R _ 1948 o - O 31 23s 0 S
++R _ 1949 1950 - Ap Sat>=1 23s 1 D
++R _ 1949 1950 - O lastSat 23s 0 S
++R _ 1951 o - Mar 31 23s 1 D
++R _ 1951 o - O 28 23s 0 S
++R _ 1952 1953 - Ap Sat>=1 23s 1 D
++R _ 1952 o - N 1 23s 0 S
++R _ 1953 1954 - O lastSat 23s 0 S
++R _ 1954 1956 - Mar Sat>=17 23s 1 D
++R _ 1955 o - N 5 23s 0 S
++R _ 1956 1964 - N Sun>=1 3:30 0 S
++R _ 1957 1964 - Mar Sun>=18 3:30 1 D
++R _ 1965 1973 - Ap Sun>=16 3:30 1 D
++R _ 1965 1966 - O Sun>=16 2:30 0 S
++R _ 1967 1976 - O Sun>=16 3:30 0 S
++R _ 1973 o - D 30 3:30 1 D
++R _ 1975 1976 - Ap Sun>=16 3:30 1 D
++R _ 1979 o - May 13 3:30 1 D
++R _ 1979 o - O Sun>=16 3:30 0 S
++Z Asia/Macau 7:34:10 - LMT 1904 O 30
++8 - CST 1941 D 21 23
++9 _ +09/+10 1945 S 30 24
++8 _ C%sT
++R CY 1975 o - Ap 13 0 1 S
++R CY 1975 o - O 12 0 0 -
++R CY 1976 o - May 15 0 1 S
++R CY 1976 o - O 11 0 0 -
++R CY 1977 1980 - Ap Sun>=1 0 1 S
++R CY 1977 o - S 25 0 0 -
++R CY 1978 o - O 2 0 0 -
++R CY 1979 1997 - S lastSun 0 0 -
++R CY 1981 1998 - Mar lastSun 0 1 S
+ Z Asia/Nicosia 2:13:28 - LMT 1921 N 14
+-2 V EE%sT 1998 S
+-2 O EE%sT
++2 CY EE%sT 1998 S
++2 E EE%sT
+ Z Asia/Famagusta 2:15:48 - LMT 1921 N 14
+-2 V EE%sT 1998 S
+-2 O EE%sT 2016 S 8
++2 CY EE%sT 1998 S
++2 E EE%sT 2016 S 8
+ 3 - +03 2017 O 29 1u
+-2 O EE%sT
++2 E EE%sT
+ Li Asia/Nicosia Europe/Nicosia
+ Z Asia/Tbilisi 2:59:11 - LMT 1880
+ 2:59:11 - TBMT 1924 May 2
+ 3 - +03 1957 Mar
+-4 M +04/+05 1991 Mar 31 2s
+-3 M +03/+04 1992
+-3 W +03/+04 1994 S lastSun
+-4 W +04/+05 1996 O lastSun
++4 R +04/+05 1991 Mar 31 2s
++3 R +03/+04 1992
++3 e +03/+04 1994 S lastSun
++4 e +04/+05 1996 O lastSun
+ 4 1 +05 1997 Mar lastSun
+-4 W +04/+05 2004 Jun 27
+-3 M +03/+04 2005 Mar lastSun 2
++4 e +04/+05 2004 Jun 27
++3 R +03/+04 2005 Mar lastSun 2
+ 4 - +04
+ Z Asia/Dili 8:22:20 - LMT 1912
+ 8 - +08 1942 F 21 23
+@@ -504,72 +528,72 @@ Z Asia/Jayapura 9:22:48 - LMT 1932 N
+ 9 - +09 1944 S
+ 9:30 - +0930 1964
+ 9 - WIT
+-R X 1978 1980 - Mar 21 0 1 -
+-R X 1978 o - O 21 0 0 -
+-R X 1979 o - S 19 0 0 -
+-R X 1980 o - S 23 0 0 -
+-R X 1991 o - May 3 0 1 -
+-R X 1992 1995 - Mar 22 0 1 -
+-R X 1991 1995 - S 22 0 0 -
+-R X 1996 o - Mar 21 0 1 -
+-R X 1996 o - S 21 0 0 -
+-R X 1997 1999 - Mar 22 0 1 -
+-R X 1997 1999 - S 22 0 0 -
+-R X 2000 o - Mar 21 0 1 -
+-R X 2000 o - S 21 0 0 -
+-R X 2001 2003 - Mar 22 0 1 -
+-R X 2001 2003 - S 22 0 0 -
+-R X 2004 o - Mar 21 0 1 -
+-R X 2004 o - S 21 0 0 -
+-R X 2005 o - Mar 22 0 1 -
+-R X 2005 o - S 22 0 0 -
+-R X 2008 o - Mar 21 0 1 -
+-R X 2008 o - S 21 0 0 -
+-R X 2009 2011 - Mar 22 0 1 -
+-R X 2009 2011 - S 22 0 0 -
+-R X 2012 o - Mar 21 0 1 -
+-R X 2012 o - S 21 0 0 -
+-R X 2013 2015 - Mar 22 0 1 -
+-R X 2013 2015 - S 22 0 0 -
+-R X 2016 o - Mar 21 0 1 -
+-R X 2016 o - S 21 0 0 -
+-R X 2017 2019 - Mar 22 0 1 -
+-R X 2017 2019 - S 22 0 0 -
+-R X 2020 o - Mar 21 0 1 -
+-R X 2020 o - S 21 0 0 -
+-R X 2021 2023 - Mar 22 0 1 -
+-R X 2021 2023 - S 22 0 0 -
+-R X 2024 o - Mar 21 0 1 -
+-R X 2024 o - S 21 0 0 -
+-R X 2025 2027 - Mar 22 0 1 -
+-R X 2025 2027 - S 22 0 0 -
+-R X 2028 2029 - Mar 21 0 1 -
+-R X 2028 2029 - S 21 0 0 -
+-R X 2030 2031 - Mar 22 0 1 -
+-R X 2030 2031 - S 22 0 0 -
+-R X 2032 2033 - Mar 21 0 1 -
+-R X 2032 2033 - S 21 0 0 -
+-R X 2034 2035 - Mar 22 0 1 -
+-R X 2034 2035 - S 22 0 0 -
+-R X 2036 ma - Mar 21 0 1 -
+-R X 2036 ma - S 21 0 0 -
++R i 1978 1980 - Mar 21 0 1 -
++R i 1978 o - O 21 0 0 -
++R i 1979 o - S 19 0 0 -
++R i 1980 o - S 23 0 0 -
++R i 1991 o - May 3 0 1 -
++R i 1992 1995 - Mar 22 0 1 -
++R i 1991 1995 - S 22 0 0 -
++R i 1996 o - Mar 21 0 1 -
++R i 1996 o - S 21 0 0 -
++R i 1997 1999 - Mar 22 0 1 -
++R i 1997 1999 - S 22 0 0 -
++R i 2000 o - Mar 21 0 1 -
++R i 2000 o - S 21 0 0 -
++R i 2001 2003 - Mar 22 0 1 -
++R i 2001 2003 - S 22 0 0 -
++R i 2004 o - Mar 21 0 1 -
++R i 2004 o - S 21 0 0 -
++R i 2005 o - Mar 22 0 1 -
++R i 2005 o - S 22 0 0 -
++R i 2008 o - Mar 21 0 1 -
++R i 2008 o - S 21 0 0 -
++R i 2009 2011 - Mar 22 0 1 -
++R i 2009 2011 - S 22 0 0 -
++R i 2012 o - Mar 21 0 1 -
++R i 2012 o - S 21 0 0 -
++R i 2013 2015 - Mar 22 0 1 -
++R i 2013 2015 - S 22 0 0 -
++R i 2016 o - Mar 21 0 1 -
++R i 2016 o - S 21 0 0 -
++R i 2017 2019 - Mar 22 0 1 -
++R i 2017 2019 - S 22 0 0 -
++R i 2020 o - Mar 21 0 1 -
++R i 2020 o - S 21 0 0 -
++R i 2021 2023 - Mar 22 0 1 -
++R i 2021 2023 - S 22 0 0 -
++R i 2024 o - Mar 21 0 1 -
++R i 2024 o - S 21 0 0 -
++R i 2025 2027 - Mar 22 0 1 -
++R i 2025 2027 - S 22 0 0 -
++R i 2028 2029 - Mar 21 0 1 -
++R i 2028 2029 - S 21 0 0 -
++R i 2030 2031 - Mar 22 0 1 -
++R i 2030 2031 - S 22 0 0 -
++R i 2032 2033 - Mar 21 0 1 -
++R i 2032 2033 - S 21 0 0 -
++R i 2034 2035 - Mar 22 0 1 -
++R i 2034 2035 - S 22 0 0 -
++R i 2036 ma - Mar 21 0 1 -
++R i 2036 ma - S 21 0 0 -
+ Z Asia/Tehran 3:25:44 - LMT 1916
+ 3:25:44 - TMT 1946
+ 3:30 - +0330 1977 N
+-4 X +04/+05 1979
+-3:30 X +0330/+0430
+-R Y 1982 o - May 1 0 1 -
+-R Y 1982 1984 - O 1 0 0 -
+-R Y 1983 o - Mar 31 0 1 -
+-R Y 1984 1985 - Ap 1 0 1 -
+-R Y 1985 1990 - S lastSun 1s 0 -
+-R Y 1986 1990 - Mar lastSun 1s 1 -
+-R Y 1991 2007 - Ap 1 3s 1 -
+-R Y 1991 2007 - O 1 3s 0 -
++4 i +04/+05 1979
++3:30 i +0330/+0430
++R IQ 1982 o - May 1 0 1 -
++R IQ 1982 1984 - O 1 0 0 -
++R IQ 1983 o - Mar 31 0 1 -
++R IQ 1984 1985 - Ap 1 0 1 -
++R IQ 1985 1990 - S lastSun 1s 0 -
++R IQ 1986 1990 - Mar lastSun 1s 1 -
++R IQ 1991 2007 - Ap 1 3s 1 -
++R IQ 1991 2007 - O 1 3s 0 -
+ Z Asia/Baghdad 2:57:40 - LMT 1890
+ 2:57:36 - BMT 1918
+ 3 - +03 1982 May
+-3 Y +03/+04
++3 IQ +03/+04
+ R Z 1940 o - Jun 1 0 1 D
+ R Z 1942 1944 - N 1 0 0 S
+ R Z 1943 o - Ap 1 2 1 D
+@@ -659,163 +683,163 @@ R Z 2013 ma - O lastSun 2 0 S
+ Z Asia/Jerusalem 2:20:54 - LMT 1880
+ 2:20:40 - JMT 1918
+ 2 Z I%sT
+-R a 1948 o - May Sat>=1 24 1 D
+-R a 1948 1951 - S Sun>=9 0 0 S
+-R a 1949 o - Ap Sat>=1 24 1 D
+-R a 1950 1951 - May Sat>=1 24 1 D
++R JP 1948 o - May Sat>=1 24 1 D
++R JP 1948 1951 - S Sat>=8 25 0 S
++R JP 1949 o - Ap Sat>=1 24 1 D
++R JP 1950 1951 - May Sat>=1 24 1 D
+ Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u
+-9 a J%sT
+-R b 1973 o - Jun 6 0 1 S
+-R b 1973 1975 - O 1 0 0 -
+-R b 1974 1977 - May 1 0 1 S
+-R b 1976 o - N 1 0 0 -
+-R b 1977 o - O 1 0 0 -
+-R b 1978 o - Ap 30 0 1 S
+-R b 1978 o - S 30 0 0 -
+-R b 1985 o - Ap 1 0 1 S
+-R b 1985 o - O 1 0 0 -
+-R b 1986 1988 - Ap F>=1 0 1 S
+-R b 1986 1990 - O F>=1 0 0 -
+-R b 1989 o - May 8 0 1 S
+-R b 1990 o - Ap 27 0 1 S
+-R b 1991 o - Ap 17 0 1 S
+-R b 1991 o - S 27 0 0 -
+-R b 1992 o - Ap 10 0 1 S
+-R b 1992 1993 - O F>=1 0 0 -
+-R b 1993 1998 - Ap F>=1 0 1 S
+-R b 1994 o - S F>=15 0 0 -
+-R b 1995 1998 - S F>=15 0s 0 -
+-R b 1999 o - Jul 1 0s 1 S
+-R b 1999 2002 - S lastF 0s 0 -
+-R b 2000 2001 - Mar lastTh 0s 1 S
+-R b 2002 2012 - Mar lastTh 24 1 S
+-R b 2003 o - O 24 0s 0 -
+-R b 2004 o - O 15 0s 0 -
+-R b 2005 o - S lastF 0s 0 -
+-R b 2006 2011 - O lastF 0s 0 -
+-R b 2013 o - D 20 0 0 -
+-R b 2014 ma - Mar lastTh 24 1 S
+-R b 2014 ma - O lastF 0s 0 -
++9 JP J%sT
++R J 1973 o - Jun 6 0 1 S
++R J 1973 1975 - O 1 0 0 -
++R J 1974 1977 - May 1 0 1 S
++R J 1976 o - N 1 0 0 -
++R J 1977 o - O 1 0 0 -
++R J 1978 o - Ap 30 0 1 S
++R J 1978 o - S 30 0 0 -
++R J 1985 o - Ap 1 0 1 S
++R J 1985 o - O 1 0 0 -
++R J 1986 1988 - Ap F>=1 0 1 S
++R J 1986 1990 - O F>=1 0 0 -
++R J 1989 o - May 8 0 1 S
++R J 1990 o - Ap 27 0 1 S
++R J 1991 o - Ap 17 0 1 S
++R J 1991 o - S 27 0 0 -
++R J 1992 o - Ap 10 0 1 S
++R J 1992 1993 - O F>=1 0 0 -
++R J 1993 1998 - Ap F>=1 0 1 S
++R J 1994 o - S F>=15 0 0 -
++R J 1995 1998 - S F>=15 0s 0 -
++R J 1999 o - Jul 1 0s 1 S
++R J 1999 2002 - S lastF 0s 0 -
++R J 2000 2001 - Mar lastTh 0s 1 S
++R J 2002 2012 - Mar lastTh 24 1 S
++R J 2003 o - O 24 0s 0 -
++R J 2004 o - O 15 0s 0 -
++R J 2005 o - S lastF 0s 0 -
++R J 2006 2011 - O lastF 0s 0 -
++R J 2013 o - D 20 0 0 -
++R J 2014 ma - Mar lastTh 24 1 S
++R J 2014 ma - O lastF 0s 0 -
+ Z Asia/Amman 2:23:44 - LMT 1931
+-2 b EE%sT
++2 J EE%sT
+ Z Asia/Almaty 5:7:48 - LMT 1924 May 2
+ 5 - +05 1930 Jun 21
+-6 M +06/+07 1991 Mar 31 2s
+-5 M +05/+06 1992 Ja 19 2s
+-6 M +06/+07 2004 O 31 2s
++6 R +06/+07 1991 Mar 31 2s
++5 R +05/+06 1992 Ja 19 2s
++6 R +06/+07 2004 O 31 2s
+ 6 - +06
+ Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
+ 4 - +04 1930 Jun 21
+ 5 - +05 1981 Ap
+ 5 1 +06 1981 O
+ 6 - +06 1982 Ap
+-5 M +05/+06 1991 Mar 31 2s
+-4 M +04/+05 1991 S 29 2s
+-5 M +05/+06 1992 Ja 19 2s
+-6 M +06/+07 1992 Mar 29 2s
+-5 M +05/+06 2004 O 31 2s
++5 R +05/+06 1991 Mar 31 2s
++4 R +04/+05 1991 S 29 2s
++5 R +05/+06 1992 Ja 19 2s
++6 R +06/+07 1992 Mar 29 2s
++5 R +05/+06 2004 O 31 2s
+ 6 - +06
+ Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2
+ 4 - +04 1930 Jun 21
+ 5 - +05 1981 Ap
+ 5 1 +06 1981 O
+ 6 - +06 1982 Ap
+-5 M +05/+06 1991 Mar 31 2s
+-4 M +04/+05 1992 Ja 19 2s
+-5 M +05/+06 2004 O 31 2s
++5 R +05/+06 1991 Mar 31 2s
++4 R +04/+05 1992 Ja 19 2s
++5 R +05/+06 2004 O 31 2s
+ 5 - +05
+ Z Asia/Aqtau 3:21:4 - LMT 1924 May 2
+ 4 - +04 1930 Jun 21
+ 5 - +05 1981 O
+ 6 - +06 1982 Ap
+-5 M +05/+06 1991 Mar 31 2s
+-4 M +04/+05 1992 Ja 19 2s
+-5 M +05/+06 1994 S 25 2s
+-4 M +04/+05 2004 O 31 2s
++5 R +05/+06 1991 Mar 31 2s
++4 R +04/+05 1992 Ja 19 2s
++5 R +05/+06 1994 S 25 2s
++4 R +04/+05 2004 O 31 2s
+ 5 - +05
+ Z Asia/Atyrau 3:27:44 - LMT 1924 May 2
+ 3 - +03 1930 Jun 21
+ 5 - +05 1981 O
+ 6 - +06 1982 Ap
+-5 M +05/+06 1991 Mar 31 2s
+-4 M +04/+05 1992 Ja 19 2s
+-5 M +05/+06 1999 Mar 28 2s
+-4 M +04/+05 2004 O 31 2s
++5 R +05/+06 1991 Mar 31 2s
++4 R +04/+05 1992 Ja 19 2s
++5 R +05/+06 1999 Mar 28 2s
++4 R +04/+05 2004 O 31 2s
+ 5 - +05
+ Z Asia/Oral 3:25:24 - LMT 1924 May 2
+ 3 - +03 1930 Jun 21
+ 5 - +05 1981 Ap
+ 5 1 +06 1981 O
+ 6 - +06 1982 Ap
+-5 M +05/+06 1989 Mar 26 2s
+-4 M +04/+05 1992 Ja 19 2s
+-5 M +05/+06 1992 Mar 29 2s
+-4 M +04/+05 2004 O 31 2s
++5 R +05/+06 1989 Mar 26 2s
++4 R +04/+05 1992 Ja 19 2s
++5 R +05/+06 1992 Mar 29 2s
++4 R +04/+05 2004 O 31 2s
+ 5 - +05
+-R c 1992 1996 - Ap Sun>=7 0s 1 -
+-R c 1992 1996 - S lastSun 0 0 -
+-R c 1997 2005 - Mar lastSun 2:30 1 -
+-R c 1997 2004 - O lastSun 2:30 0 -
++R KG 1992 1996 - Ap Sun>=7 0s 1 -
++R KG 1992 1996 - S lastSun 0 0 -
++R KG 1997 2005 - Mar lastSun 2:30 1 -
++R KG 1997 2004 - O lastSun 2:30 0 -
+ Z Asia/Bishkek 4:58:24 - LMT 1924 May 2
+ 5 - +05 1930 Jun 21
+-6 M +06/+07 1991 Mar 31 2s
+-5 M +05/+06 1991 Au 31 2
+-5 c +05/+06 2005 Au 12
++6 R +06/+07 1991 Mar 31 2s
++5 R +05/+06 1991 Au 31 2
++5 KG +05/+06 2005 Au 12
+ 6 - +06
+-R d 1948 o - Jun 1 0 1 D
+-R d 1948 o - S 13 0 0 S
+-R d 1949 o - Ap 3 0 1 D
+-R d 1949 1951 - S Sun>=8 0 0 S
+-R d 1950 o - Ap 1 0 1 D
+-R d 1951 o - May 6 0 1 D
+-R d 1955 o - May 5 0 1 D
+-R d 1955 o - S 9 0 0 S
+-R d 1956 o - May 20 0 1 D
+-R d 1956 o - S 30 0 0 S
+-R d 1957 1960 - May Sun>=1 0 1 D
+-R d 1957 1960 - S Sun>=18 0 0 S
+-R d 1987 1988 - May Sun>=8 2 1 D
+-R d 1987 1988 - O Sun>=8 3 0 S
++R KR 1948 o - Jun 1 0 1 D
++R KR 1948 o - S 13 0 0 S
++R KR 1949 o - Ap 3 0 1 D
++R KR 1949 1951 - S Sun>=8 0 0 S
++R KR 1950 o - Ap 1 0 1 D
++R KR 1951 o - May 6 0 1 D
++R KR 1955 o - May 5 0 1 D
++R KR 1955 o - S 9 0 0 S
++R KR 1956 o - May 20 0 1 D
++R KR 1956 o - S 30 0 0 S
++R KR 1957 1960 - May Sun>=1 0 1 D
++R KR 1957 1960 - S Sun>=18 0 0 S
++R KR 1987 1988 - May Sun>=8 2 1 D
++R KR 1987 1988 - O Sun>=8 3 0 S
+ Z Asia/Seoul 8:27:52 - LMT 1908 Ap
+ 8:30 - KST 1912
+ 9 - JST 1945 S 8
+ 9 - KST 1954 Mar 21
+-8:30 d K%sT 1961 Au 10
+-9 d K%sT
++8:30 KR K%sT 1961 Au 10
++9 KR K%sT
+ Z Asia/Pyongyang 8:23 - LMT 1908 Ap
+ 8:30 - KST 1912
+ 9 - JST 1945 Au 24
+ 9 - KST 2015 Au 15
+-8:30 - KST 2018 May 5
++8:30 - KST 2018 May 4 23:30
+ 9 - KST
+-R e 1920 o - Mar 28 0 1 S
+-R e 1920 o - O 25 0 0 -
+-R e 1921 o - Ap 3 0 1 S
+-R e 1921 o - O 3 0 0 -
+-R e 1922 o - Mar 26 0 1 S
+-R e 1922 o - O 8 0 0 -
+-R e 1923 o - Ap 22 0 1 S
+-R e 1923 o - S 16 0 0 -
+-R e 1957 1961 - May 1 0 1 S
+-R e 1957 1961 - O 1 0 0 -
+-R e 1972 o - Jun 22 0 1 S
+-R e 1972 1977 - O 1 0 0 -
+-R e 1973 1977 - May 1 0 1 S
+-R e 1978 o - Ap 30 0 1 S
+-R e 1978 o - S 30 0 0 -
+-R e 1984 1987 - May 1 0 1 S
+-R e 1984 1991 - O 16 0 0 -
+-R e 1988 o - Jun 1 0 1 S
+-R e 1989 o - May 10 0 1 S
+-R e 1990 1992 - May 1 0 1 S
+-R e 1992 o - O 4 0 0 -
+-R e 1993 ma - Mar lastSun 0 1 S
+-R e 1993 1998 - S lastSun 0 0 -
+-R e 1999 ma - O lastSun 0 0 -
++R l 1920 o - Mar 28 0 1 S
++R l 1920 o - O 25 0 0 -
++R l 1921 o - Ap 3 0 1 S
++R l 1921 o - O 3 0 0 -
++R l 1922 o - Mar 26 0 1 S
++R l 1922 o - O 8 0 0 -
++R l 1923 o - Ap 22 0 1 S
++R l 1923 o - S 16 0 0 -
++R l 1957 1961 - May 1 0 1 S
++R l 1957 1961 - O 1 0 0 -
++R l 1972 o - Jun 22 0 1 S
++R l 1972 1977 - O 1 0 0 -
++R l 1973 1977 - May 1 0 1 S
++R l 1978 o - Ap 30 0 1 S
++R l 1978 o - S 30 0 0 -
++R l 1984 1987 - May 1 0 1 S
++R l 1984 1991 - O 16 0 0 -
++R l 1988 o - Jun 1 0 1 S
++R l 1989 o - May 10 0 1 S
++R l 1990 1992 - May 1 0 1 S
++R l 1992 o - O 4 0 0 -
++R l 1993 ma - Mar lastSun 0 1 S
++R l 1993 1998 - S lastSun 0 0 -
++R l 1999 ma - O lastSun 0 0 -
+ Z Asia/Beirut 2:22 - LMT 1880
+-2 e EE%sT
+-R f 1935 1941 - S 14 0 0:20 -
+-R f 1935 1941 - D 14 0 0 -
++2 l EE%sT
++R NB 1935 1941 - S 14 0 0:20 -
++R NB 1935 1941 - D 14 0 0 -
+ Z Asia/Kuala_Lumpur 6:46:46 - LMT 1901
+ 6:55:25 - SMT 1905 Jun
+ 7 - +07 1933
+@@ -827,98 +851,98 @@ Z Asia/Kuala_Lumpur 6:46:46 - LMT 1901
+ 8 - +08
+ Z Asia/Kuching 7:21:20 - LMT 1926 Mar
+ 7:30 - +0730 1933
+-8 f +08/+0820 1942 F 16
++8 NB +08/+0820 1942 F 16
+ 9 - +09 1945 S 12
+ 8 - +08
+ Z Indian/Maldives 4:54 - LMT 1880
+ 4:54 - MMT 1960
+ 5 - +05
+-R g 1983 1984 - Ap 1 0 1 -
+-R g 1983 o - O 1 0 0 -
+-R g 1985 1998 - Mar lastSun 0 1 -
+-R g 1984 1998 - S lastSun 0 0 -
+-R g 2001 o - Ap lastSat 2 1 -
+-R g 2001 2006 - S lastSat 2 0 -
+-R g 2002 2006 - Mar lastSat 2 1 -
+-R g 2015 2016 - Mar lastSat 2 1 -
+-R g 2015 2016 - S lastSat 0 0 -
++R X 1983 1984 - Ap 1 0 1 -
++R X 1983 o - O 1 0 0 -
++R X 1985 1998 - Mar lastSun 0 1 -
++R X 1984 1998 - S lastSun 0 0 -
++R X 2001 o - Ap lastSat 2 1 -
++R X 2001 2006 - S lastSat 2 0 -
++R X 2002 2006 - Mar lastSat 2 1 -
++R X 2015 2016 - Mar lastSat 2 1 -
++R X 2015 2016 - S lastSat 0 0 -
+ Z Asia/Hovd 6:6:36 - LMT 1905 Au
+ 6 - +06 1978
+-7 g +07/+08
++7 X +07/+08
+ Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au
+ 7 - +07 1978
+-8 g +08/+09
++8 X +08/+09
+ Z Asia/Choibalsan 7:38 - LMT 1905 Au
+ 7 - +07 1978
+ 8 - +08 1983 Ap
+-9 g +09/+10 2008 Mar 31
+-8 g +08/+09
++9 X +09/+10 2008 Mar 31
++8 X +08/+09
+ Z Asia/Kathmandu 5:41:16 - LMT 1920
+ 5:30 - +0530 1986
+ 5:45 - +0545
+-R h 2002 o - Ap Sun>=2 0 1 S
+-R h 2002 o - O Sun>=2 0 0 -
+-R h 2008 o - Jun 1 0 1 S
+-R h 2008 2009 - N 1 0 0 -
+-R h 2009 o - Ap 15 0 1 S
++R PK 2002 o - Ap Sun>=2 0 1 S
++R PK 2002 o - O Sun>=2 0 0 -
++R PK 2008 o - Jun 1 0 1 S
++R PK 2008 2009 - N 1 0 0 -
++R PK 2009 o - Ap 15 0 1 S
+ Z Asia/Karachi 4:28:12 - LMT 1907
+ 5:30 - +0530 1942 S
+ 5:30 1 +0630 1945 O 15
+ 5:30 - +0530 1951 S 30
+ 5 - +05 1971 Mar 26
+-5 h PK%sT
+-R i 1999 2005 - Ap F>=15 0 1 S
+-R i 1999 2003 - O F>=15 0 0 -
+-R i 2004 o - O 1 1 0 -
+-R i 2005 o - O 4 2 0 -
+-R i 2006 2007 - Ap 1 0 1 S
+-R i 2006 o - S 22 0 0 -
+-R i 2007 o - S Th>=8 2 0 -
+-R i 2008 2009 - Mar lastF 0 1 S
+-R i 2008 o - S 1 0 0 -
+-R i 2009 o - S F>=1 1 0 -
+-R i 2010 o - Mar 26 0 1 S
+-R i 2010 o - Au 11 0 0 -
+-R i 2011 o - Ap 1 0:1 1 S
+-R i 2011 o - Au 1 0 0 -
+-R i 2011 o - Au 30 0 1 S
+-R i 2011 o - S 30 0 0 -
+-R i 2012 2014 - Mar lastTh 24 1 S
+-R i 2012 o - S 21 1 0 -
+-R i 2013 o - S F>=21 0 0 -
+-R i 2014 2015 - O F>=21 0 0 -
+-R i 2015 o - Mar lastF 24 1 S
+-R i 2016 ma - Mar Sat>=22 1 1 S
+-R i 2016 ma - O lastSat 1 0 -
++5 PK PK%sT
++R P 1999 2005 - Ap F>=15 0 1 S
++R P 1999 2003 - O F>=15 0 0 -
++R P 2004 o - O 1 1 0 -
++R P 2005 o - O 4 2 0 -
++R P 2006 2007 - Ap 1 0 1 S
++R P 2006 o - S 22 0 0 -
++R P 2007 o - S Th>=8 2 0 -
++R P 2008 2009 - Mar lastF 0 1 S
++R P 2008 o - S 1 0 0 -
++R P 2009 o - S F>=1 1 0 -
++R P 2010 o - Mar 26 0 1 S
++R P 2010 o - Au 11 0 0 -
++R P 2011 o - Ap 1 0:1 1 S
++R P 2011 o - Au 1 0 0 -
++R P 2011 o - Au 30 0 1 S
++R P 2011 o - S 30 0 0 -
++R P 2012 2014 - Mar lastTh 24 1 S
++R P 2012 o - S 21 1 0 -
++R P 2013 o - S F>=21 0 0 -
++R P 2014 2015 - O F>=21 0 0 -
++R P 2015 o - Mar lastF 24 1 S
++R P 2016 ma - Mar Sat>=22 1 1 S
++R P 2016 ma - O lastSat 1 0 -
+ Z Asia/Gaza 2:17:52 - LMT 1900 O
+ 2 Z EET/EEST 1948 May 15
+-2 B EE%sT 1967 Jun 5
++2 K EE%sT 1967 Jun 5
+ 2 Z I%sT 1996
+-2 b EE%sT 1999
+-2 i EE%sT 2008 Au 29
++2 J EE%sT 1999
++2 P EE%sT 2008 Au 29
+ 2 - EET 2008 S
+-2 i EE%sT 2010
++2 P EE%sT 2010
+ 2 - EET 2010 Mar 27 0:1
+-2 i EE%sT 2011 Au
++2 P EE%sT 2011 Au
+ 2 - EET 2012
+-2 i EE%sT
++2 P EE%sT
+ Z Asia/Hebron 2:20:23 - LMT 1900 O
+ 2 Z EET/EEST 1948 May 15
+-2 B EE%sT 1967 Jun 5
++2 K EE%sT 1967 Jun 5
+ 2 Z I%sT 1996
+-2 b EE%sT 1999
+-2 i EE%sT
+-R j 1936 o - N 1 0 1 -
+-R j 1937 o - F 1 0 0 -
+-R j 1954 o - Ap 12 0 1 -
+-R j 1954 o - Jul 1 0 0 -
+-R j 1978 o - Mar 22 0 1 -
+-R j 1978 o - S 21 0 0 -
++2 J EE%sT 1999
++2 P EE%sT
++R PH 1936 o - N 1 0 1 D
++R PH 1937 o - F 1 0 0 S
++R PH 1954 o - Ap 12 0 1 D
++R PH 1954 o - Jul 1 0 0 S
++R PH 1978 o - Mar 22 0 1 D
++R PH 1978 o - S 21 0 0 S
+ Z Asia/Manila -15:56 - LMT 1844 D 31
+ 8:4 - LMT 1899 May 11
+-8 j +08/+09 1942 May
+-9 - +09 1944 N
+-8 j +08/+09
++8 PH P%sT 1942 May
++9 - JST 1944 N
++8 PH P%sT
+ Z Asia/Qatar 3:26:8 - LMT 1920
+ 4 - +04 1972 Jun
+ 3 - +03
+@@ -945,52 +969,52 @@ Z Asia/Colombo 5:19:24 - LMT 1880
+ 6:30 - +0630 1996 O 26 0:30
+ 6 - +06 2006 Ap 15 0:30
+ 5:30 - +0530
+-R k 1920 1923 - Ap Sun>=15 2 1 S
+-R k 1920 1923 - O Sun>=1 2 0 -
+-R k 1962 o - Ap 29 2 1 S
+-R k 1962 o - O 1 2 0 -
+-R k 1963 1965 - May 1 2 1 S
+-R k 1963 o - S 30 2 0 -
+-R k 1964 o - O 1 2 0 -
+-R k 1965 o - S 30 2 0 -
+-R k 1966 o - Ap 24 2 1 S
+-R k 1966 1976 - O 1 2 0 -
+-R k 1967 1978 - May 1 2 1 S
+-R k 1977 1978 - S 1 2 0 -
+-R k 1983 1984 - Ap 9 2 1 S
+-R k 1983 1984 - O 1 2 0 -
+-R k 1986 o - F 16 2 1 S
+-R k 1986 o - O 9 2 0 -
+-R k 1987 o - Mar 1 2 1 S
+-R k 1987 1988 - O 31 2 0 -
+-R k 1988 o - Mar 15 2 1 S
+-R k 1989 o - Mar 31 2 1 S
+-R k 1989 o - O 1 2 0 -
+-R k 1990 o - Ap 1 2 1 S
+-R k 1990 o - S 30 2 0 -
+-R k 1991 o - Ap 1 0 1 S
+-R k 1991 1992 - O 1 0 0 -
+-R k 1992 o - Ap 8 0 1 S
+-R k 1993 o - Mar 26 0 1 S
+-R k 1993 o - S 25 0 0 -
+-R k 1994 1996 - Ap 1 0 1 S
+-R k 1994 2005 - O 1 0 0 -
+-R k 1997 1998 - Mar lastM 0 1 S
+-R k 1999 2006 - Ap 1 0 1 S
+-R k 2006 o - S 22 0 0 -
+-R k 2007 o - Mar lastF 0 1 S
+-R k 2007 o - N F>=1 0 0 -
+-R k 2008 o - Ap F>=1 0 1 S
+-R k 2008 o - N 1 0 0 -
+-R k 2009 o - Mar lastF 0 1 S
+-R k 2010 2011 - Ap F>=1 0 1 S
+-R k 2012 ma - Mar lastF 0 1 S
+-R k 2009 ma - O lastF 0 0 -
++R S 1920 1923 - Ap Sun>=15 2 1 S
++R S 1920 1923 - O Sun>=1 2 0 -
++R S 1962 o - Ap 29 2 1 S
++R S 1962 o - O 1 2 0 -
++R S 1963 1965 - May 1 2 1 S
++R S 1963 o - S 30 2 0 -
++R S 1964 o - O 1 2 0 -
++R S 1965 o - S 30 2 0 -
++R S 1966 o - Ap 24 2 1 S
++R S 1966 1976 - O 1 2 0 -
++R S 1967 1978 - May 1 2 1 S
++R S 1977 1978 - S 1 2 0 -
++R S 1983 1984 - Ap 9 2 1 S
++R S 1983 1984 - O 1 2 0 -
++R S 1986 o - F 16 2 1 S
++R S 1986 o - O 9 2 0 -
++R S 1987 o - Mar 1 2 1 S
++R S 1987 1988 - O 31 2 0 -
++R S 1988 o - Mar 15 2 1 S
++R S 1989 o - Mar 31 2 1 S
++R S 1989 o - O 1 2 0 -
++R S 1990 o - Ap 1 2 1 S
++R S 1990 o - S 30 2 0 -
++R S 1991 o - Ap 1 0 1 S
++R S 1991 1992 - O 1 0 0 -
++R S 1992 o - Ap 8 0 1 S
++R S 1993 o - Mar 26 0 1 S
++R S 1993 o - S 25 0 0 -
++R S 1994 1996 - Ap 1 0 1 S
++R S 1994 2005 - O 1 0 0 -
++R S 1997 1998 - Mar lastM 0 1 S
++R S 1999 2006 - Ap 1 0 1 S
++R S 2006 o - S 22 0 0 -
++R S 2007 o - Mar lastF 0 1 S
++R S 2007 o - N F>=1 0 0 -
++R S 2008 o - Ap F>=1 0 1 S
++R S 2008 o - N 1 0 0 -
++R S 2009 o - Mar lastF 0 1 S
++R S 2010 2011 - Ap F>=1 0 1 S
++R S 2012 ma - Mar lastF 0 1 S
++R S 2009 ma - O lastF 0 0 -
+ Z Asia/Damascus 2:25:12 - LMT 1920
+-2 k EE%sT
++2 S EE%sT
+ Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2
+ 5 - +05 1930 Jun 21
+-6 M +06/+07 1991 Mar 31 2s
++6 R +06/+07 1991 Mar 31 2s
+ 5 1 +05/+06 1991 S 9 2s
+ 5 - +05
+ Z Asia/Bangkok 6:42:4 - LMT 1880
+@@ -1000,8 +1024,8 @@ Li Asia/Bangkok Asia/Phnom_Penh
+ Li Asia/Bangkok Asia/Vientiane
+ Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2
+ 4 - +04 1930 Jun 21
+-5 M +05/+06 1991 Mar 31 2
+-4 M +04/+05 1992 Ja 19 2
++5 R +05/+06 1991 Mar 31 2
++4 R +04/+05 1992 Ja 19 2
+ 5 - +05
+ Z Asia/Dubai 3:41:12 - LMT 1920
+ 4 - +04
+@@ -1011,12 +1035,12 @@ Z Asia/Samarkand 4:27:53 - LMT 1924 May 2
+ 5 - +05 1981 Ap
+ 5 1 +06 1981 O
+ 6 - +06 1982 Ap
+-5 M +05/+06 1992
++5 R +05/+06 1992
+ 5 - +05
+ Z Asia/Tashkent 4:37:11 - LMT 1924 May 2
+ 5 - +05 1930 Jun 21
+-6 M +06/+07 1991 Mar 31 2
+-5 M +05/+06 1992
++6 R +06/+07 1991 Mar 31 2
++5 R +05/+06 1992
+ 5 - +05
+ Z Asia/Ho_Chi_Minh 7:6:40 - LMT 1906 Jul
+ 7:6:30 - PLMT 1911 May
+@@ -1028,176 +1052,176 @@ Z Asia/Ho_Chi_Minh 7:6:40 - LMT 1906 Jul
+ 7 - +07 1959 D 31 23
+ 8 - +08 1975 Jun 13
+ 7 - +07
+-R l 1917 o - Ja 1 0:1 1 D
+-R l 1917 o - Mar 25 2 0 S
+-R l 1942 o - Ja 1 2 1 D
+-R l 1942 o - Mar 29 2 0 S
+-R l 1942 o - S 27 2 1 D
+-R l 1943 1944 - Mar lastSun 2 0 S
+-R l 1943 o - O 3 2 1 D
++R AU 1917 o - Ja 1 0:1 1 D
++R AU 1917 o - Mar 25 2 0 S
++R AU 1942 o - Ja 1 2 1 D
++R AU 1942 o - Mar 29 2 0 S
++R AU 1942 o - S 27 2 1 D
++R AU 1943 1944 - Mar lastSun 2 0 S
++R AU 1943 o - O 3 2 1 D
+ Z Australia/Darwin 8:43:20 - LMT 1895 F
+ 9 - ACST 1899 May
+-9:30 l AC%sT
+-R m 1974 o - O lastSun 2s 1 D
+-R m 1975 o - Mar Sun>=1 2s 0 S
+-R m 1983 o - O lastSun 2s 1 D
+-R m 1984 o - Mar Sun>=1 2s 0 S
+-R m 1991 o - N 17 2s 1 D
+-R m 1992 o - Mar Sun>=1 2s 0 S
+-R m 2006 o - D 3 2s 1 D
+-R m 2007 2009 - Mar lastSun 2s 0 S
+-R m 2007 2008 - O lastSun 2s 1 D
++9:30 AU AC%sT
++R AW 1974 o - O lastSun 2s 1 D
++R AW 1975 o - Mar Sun>=1 2s 0 S
++R AW 1983 o - O lastSun 2s 1 D
++R AW 1984 o - Mar Sun>=1 2s 0 S
++R AW 1991 o - N 17 2s 1 D
++R AW 1992 o - Mar Sun>=1 2s 0 S
++R AW 2006 o - D 3 2s 1 D
++R AW 2007 2009 - Mar lastSun 2s 0 S
++R AW 2007 2008 - O lastSun 2s 1 D
+ Z Australia/Perth 7:43:24 - LMT 1895 D
+-8 l AW%sT 1943 Jul
+-8 m AW%sT
++8 AU AW%sT 1943 Jul
++8 AW AW%sT
+ Z Australia/Eucla 8:35:28 - LMT 1895 D
+-8:45 l +0845/+0945 1943 Jul
+-8:45 m +0845/+0945
+-R n 1971 o - O lastSun 2s 1 D
+-R n 1972 o - F lastSun 2s 0 S
+-R n 1989 1991 - O lastSun 2s 1 D
+-R n 1990 1992 - Mar Sun>=1 2s 0 S
+-R o 1992 1993 - O lastSun 2s 1 D
+-R o 1993 1994 - Mar Sun>=1 2s 0 S
++8:45 AU +0845/+0945 1943 Jul
++8:45 AW +0845/+0945
++R AQ 1971 o - O lastSun 2s 1 D
++R AQ 1972 o - F lastSun 2s 0 S
++R AQ 1989 1991 - O lastSun 2s 1 D
++R AQ 1990 1992 - Mar Sun>=1 2s 0 S
++R Ho 1992 1993 - O lastSun 2s 1 D
++R Ho 1993 1994 - Mar Sun>=1 2s 0 S
+ Z Australia/Brisbane 10:12:8 - LMT 1895
+-10 l AE%sT 1971
+-10 n AE%sT
++10 AU AE%sT 1971
++10 AQ AE%sT
+ Z Australia/Lindeman 9:55:56 - LMT 1895
+-10 l AE%sT 1971
+-10 n AE%sT 1992 Jul
+-10 o AE%sT
+-R p 1971 1985 - O lastSun 2s 1 D
+-R p 1986 o - O 19 2s 1 D
+-R p 1987 2007 - O lastSun 2s 1 D
+-R p 1972 o - F 27 2s 0 S
+-R p 1973 1985 - Mar Sun>=1 2s 0 S
+-R p 1986 1990 - Mar Sun>=15 2s 0 S
+-R p 1991 o - Mar 3 2s 0 S
+-R p 1992 o - Mar 22 2s 0 S
+-R p 1993 o - Mar 7 2s 0 S
+-R p 1994 o - Mar 20 2s 0 S
+-R p 1995 2005 - Mar lastSun 2s 0 S
+-R p 2006 o - Ap 2 2s 0 S
+-R p 2007 o - Mar lastSun 2s 0 S
+-R p 2008 ma - Ap Sun>=1 2s 0 S
+-R p 2008 ma - O Sun>=1 2s 1 D
++10 AU AE%sT 1971
++10 AQ AE%sT 1992 Jul
++10 Ho AE%sT
++R AS 1971 1985 - O lastSun 2s 1 D
++R AS 1986 o - O 19 2s 1 D
++R AS 1987 2007 - O lastSun 2s 1 D
++R AS 1972 o - F 27 2s 0 S
++R AS 1973 1985 - Mar Sun>=1 2s 0 S
++R AS 1986 1990 - Mar Sun>=15 2s 0 S
++R AS 1991 o - Mar 3 2s 0 S
++R AS 1992 o - Mar 22 2s 0 S
++R AS 1993 o - Mar 7 2s 0 S
++R AS 1994 o - Mar 20 2s 0 S
++R AS 1995 2005 - Mar lastSun 2s 0 S
++R AS 2006 o - Ap 2 2s 0 S
++R AS 2007 o - Mar lastSun 2s 0 S
++R AS 2008 ma - Ap Sun>=1 2s 0 S
++R AS 2008 ma - O Sun>=1 2s 1 D
+ Z Australia/Adelaide 9:14:20 - LMT 1895 F
+ 9 - ACST 1899 May
+-9:30 l AC%sT 1971
+-9:30 p AC%sT
+-R q 1967 o - O Sun>=1 2s 1 D
+-R q 1968 o - Mar lastSun 2s 0 S
+-R q 1968 1985 - O lastSun 2s 1 D
+-R q 1969 1971 - Mar Sun>=8 2s 0 S
+-R q 1972 o - F lastSun 2s 0 S
+-R q 1973 1981 - Mar Sun>=1 2s 0 S
+-R q 1982 1983 - Mar lastSun 2s 0 S
+-R q 1984 1986 - Mar Sun>=1 2s 0 S
+-R q 1986 o - O Sun>=15 2s 1 D
+-R q 1987 1990 - Mar Sun>=15 2s 0 S
+-R q 1987 o - O Sun>=22 2s 1 D
+-R q 1988 1990 - O lastSun 2s 1 D
+-R q 1991 1999 - O Sun>=1 2s 1 D
+-R q 1991 2005 - Mar lastSun 2s 0 S
+-R q 2000 o - Au lastSun 2s 1 D
+-R q 2001 ma - O Sun>=1 2s 1 D
+-R q 2006 o - Ap Sun>=1 2s 0 S
+-R q 2007 o - Mar lastSun 2s 0 S
+-R q 2008 ma - Ap Sun>=1 2s 0 S
++9:30 AU AC%sT 1971
++9:30 AS AC%sT
++R AT 1967 o - O Sun>=1 2s 1 D
++R AT 1968 o - Mar lastSun 2s 0 S
++R AT 1968 1985 - O lastSun 2s 1 D
++R AT 1969 1971 - Mar Sun>=8 2s 0 S
++R AT 1972 o - F lastSun 2s 0 S
++R AT 1973 1981 - Mar Sun>=1 2s 0 S
++R AT 1982 1983 - Mar lastSun 2s 0 S
++R AT 1984 1986 - Mar Sun>=1 2s 0 S
++R AT 1986 o - O Sun>=15 2s 1 D
++R AT 1987 1990 - Mar Sun>=15 2s 0 S
++R AT 1987 o - O Sun>=22 2s 1 D
++R AT 1988 1990 - O lastSun 2s 1 D
++R AT 1991 1999 - O Sun>=1 2s 1 D
++R AT 1991 2005 - Mar lastSun 2s 0 S
++R AT 2000 o - Au lastSun 2s 1 D
++R AT 2001 ma - O Sun>=1 2s 1 D
++R AT 2006 o - Ap Sun>=1 2s 0 S
++R AT 2007 o - Mar lastSun 2s 0 S
++R AT 2008 ma - Ap Sun>=1 2s 0 S
+ Z Australia/Hobart 9:49:16 - LMT 1895 S
+ 10 - AEST 1916 O 1 2
+ 10 1 AEDT 1917 F
+-10 l AE%sT 1967
+-10 q AE%sT
++10 AU AE%sT 1967
++10 AT AE%sT
+ Z Australia/Currie 9:35:28 - LMT 1895 S
+ 10 - AEST 1916 O 1 2
+ 10 1 AEDT 1917 F
+-10 l AE%sT 1971 Jul
+-10 q AE%sT
+-R r 1971 1985 - O lastSun 2s 1 D
+-R r 1972 o - F lastSun 2s 0 S
+-R r 1973 1985 - Mar Sun>=1 2s 0 S
+-R r 1986 1990 - Mar Sun>=15 2s 0 S
+-R r 1986 1987 - O Sun>=15 2s 1 D
+-R r 1988 1999 - O lastSun 2s 1 D
+-R r 1991 1994 - Mar Sun>=1 2s 0 S
+-R r 1995 2005 - Mar lastSun 2s 0 S
+-R r 2000 o - Au lastSun 2s 1 D
+-R r 2001 2007 - O lastSun 2s 1 D
+-R r 2006 o - Ap Sun>=1 2s 0 S
+-R r 2007 o - Mar lastSun 2s 0 S
+-R r 2008 ma - Ap Sun>=1 2s 0 S
+-R r 2008 ma - O Sun>=1 2s 1 D
++10 AU AE%sT 1971 Jul
++10 AT AE%sT
++R AV 1971 1985 - O lastSun 2s 1 D
++R AV 1972 o - F lastSun 2s 0 S
++R AV 1973 1985 - Mar Sun>=1 2s 0 S
++R AV 1986 1990 - Mar Sun>=15 2s 0 S
++R AV 1986 1987 - O Sun>=15 2s 1 D
++R AV 1988 1999 - O lastSun 2s 1 D
++R AV 1991 1994 - Mar Sun>=1 2s 0 S
++R AV 1995 2005 - Mar lastSun 2s 0 S
++R AV 2000 o - Au lastSun 2s 1 D
++R AV 2001 2007 - O lastSun 2s 1 D
++R AV 2006 o - Ap Sun>=1 2s 0 S
++R AV 2007 o - Mar lastSun 2s 0 S
++R AV 2008 ma - Ap Sun>=1 2s 0 S
++R AV 2008 ma - O Sun>=1 2s 1 D
+ Z Australia/Melbourne 9:39:52 - LMT 1895 F
+-10 l AE%sT 1971
+-10 r AE%sT
+-R s 1971 1985 - O lastSun 2s 1 D
+-R s 1972 o - F 27 2s 0 S
+-R s 1973 1981 - Mar Sun>=1 2s 0 S
+-R s 1982 o - Ap Sun>=1 2s 0 S
+-R s 1983 1985 - Mar Sun>=1 2s 0 S
+-R s 1986 1989 - Mar Sun>=15 2s 0 S
+-R s 1986 o - O 19 2s 1 D
+-R s 1987 1999 - O lastSun 2s 1 D
+-R s 1990 1995 - Mar Sun>=1 2s 0 S
+-R s 1996 2005 - Mar lastSun 2s 0 S
+-R s 2000 o - Au lastSun 2s 1 D
+-R s 2001 2007 - O lastSun 2s 1 D
+-R s 2006 o - Ap Sun>=1 2s 0 S
+-R s 2007 o - Mar lastSun 2s 0 S
+-R s 2008 ma - Ap Sun>=1 2s 0 S
+-R s 2008 ma - O Sun>=1 2s 1 D
++10 AU AE%sT 1971
++10 AV AE%sT
++R AN 1971 1985 - O lastSun 2s 1 D
++R AN 1972 o - F 27 2s 0 S
++R AN 1973 1981 - Mar Sun>=1 2s 0 S
++R AN 1982 o - Ap Sun>=1 2s 0 S
++R AN 1983 1985 - Mar Sun>=1 2s 0 S
++R AN 1986 1989 - Mar Sun>=15 2s 0 S
++R AN 1986 o - O 19 2s 1 D
++R AN 1987 1999 - O lastSun 2s 1 D
++R AN 1990 1995 - Mar Sun>=1 2s 0 S
++R AN 1996 2005 - Mar lastSun 2s 0 S
++R AN 2000 o - Au lastSun 2s 1 D
++R AN 2001 2007 - O lastSun 2s 1 D
++R AN 2006 o - Ap Sun>=1 2s 0 S
++R AN 2007 o - Mar lastSun 2s 0 S
++R AN 2008 ma - Ap Sun>=1 2s 0 S
++R AN 2008 ma - O Sun>=1 2s 1 D
+ Z Australia/Sydney 10:4:52 - LMT 1895 F
+-10 l AE%sT 1971
+-10 s AE%sT
++10 AU AE%sT 1971
++10 AN AE%sT
+ Z Australia/Broken_Hill 9:25:48 - LMT 1895 F
+ 10 - AEST 1896 Au 23
+ 9 - ACST 1899 May
+-9:30 l AC%sT 1971
+-9:30 s AC%sT 2000
+-9:30 p AC%sT
+-R t 1981 1984 - O lastSun 2 1 -
+-R t 1982 1985 - Mar Sun>=1 2 0 -
+-R t 1985 o - O lastSun 2 0:30 -
+-R t 1986 1989 - Mar Sun>=15 2 0 -
+-R t 1986 o - O 19 2 0:30 -
+-R t 1987 1999 - O lastSun 2 0:30 -
+-R t 1990 1995 - Mar Sun>=1 2 0 -
+-R t 1996 2005 - Mar lastSun 2 0 -
+-R t 2000 o - Au lastSun 2 0:30 -
+-R t 2001 2007 - O lastSun 2 0:30 -
+-R t 2006 o - Ap Sun>=1 2 0 -
+-R t 2007 o - Mar lastSun 2 0 -
+-R t 2008 ma - Ap Sun>=1 2 0 -
+-R t 2008 ma - O Sun>=1 2 0:30 -
++9:30 AU AC%sT 1971
++9:30 AN AC%sT 2000
++9:30 AS AC%sT
++R LH 1981 1984 - O lastSun 2 1 -
++R LH 1982 1985 - Mar Sun>=1 2 0 -
++R LH 1985 o - O lastSun 2 0:30 -
++R LH 1986 1989 - Mar Sun>=15 2 0 -
++R LH 1986 o - O 19 2 0:30 -
++R LH 1987 1999 - O lastSun 2 0:30 -
++R LH 1990 1995 - Mar Sun>=1 2 0 -
++R LH 1996 2005 - Mar lastSun 2 0 -
++R LH 2000 o - Au lastSun 2 0:30 -
++R LH 2001 2007 - O lastSun 2 0:30 -
++R LH 2006 o - Ap Sun>=1 2 0 -
++R LH 2007 o - Mar lastSun 2 0 -
++R LH 2008 ma - Ap Sun>=1 2 0 -
++R LH 2008 ma - O Sun>=1 2 0:30 -
+ Z Australia/Lord_Howe 10:36:20 - LMT 1895 F
+ 10 - AEST 1981 Mar
+-10:30 t +1030/+1130 1985 Jul
+-10:30 t +1030/+11
++10:30 LH +1030/+1130 1985 Jul
++10:30 LH +1030/+11
+ Z Antarctica/Macquarie 0 - -00 1899 N
+ 10 - AEST 1916 O 1 2
+ 10 1 AEDT 1917 F
+-10 l AE%sT 1919 Ap 1 0s
++10 AU AE%sT 1919 Ap 1 0s
+ 0 - -00 1948 Mar 25
+-10 l AE%sT 1967
+-10 q AE%sT 2010 Ap 4 3
++10 AU AE%sT 1967
++10 AT AE%sT 2010 Ap 4 3
+ 11 - +11
+ Z Indian/Christmas 7:2:52 - LMT 1895 F
+ 7 - +07
+ Z Indian/Cocos 6:27:40 - LMT 1900
+ 6:30 - +0630
+-R u 1998 1999 - N Sun>=1 2 1 -
+-R u 1999 2000 - F lastSun 3 0 -
+-R u 2009 o - N 29 2 1 -
+-R u 2010 o - Mar lastSun 3 0 -
+-R u 2010 2013 - O Sun>=21 2 1 -
+-R u 2011 o - Mar Sun>=1 3 0 -
+-R u 2012 2013 - Ja Sun>=18 3 0 -
+-R u 2014 o - Ja Sun>=18 2 0 -
+-R u 2014 ma - N Sun>=1 2 1 -
+-R u 2015 ma - Ja Sun>=14 3 0 -
++R FJ 1998 1999 - N Sun>=1 2 1 -
++R FJ 1999 2000 - F lastSun 3 0 -
++R FJ 2009 o - N 29 2 1 -
++R FJ 2010 o - Mar lastSun 3 0 -
++R FJ 2010 2013 - O Sun>=21 2 1 -
++R FJ 2011 o - Mar Sun>=1 3 0 -
++R FJ 2012 2013 - Ja Sun>=18 3 0 -
++R FJ 2014 o - Ja Sun>=18 2 0 -
++R FJ 2014 ma - N Sun>=1 2 1 -
++R FJ 2015 ma - Ja Sun>=13 3 0 -
+ Z Pacific/Fiji 11:55:44 - LMT 1915 O 26
+-12 u +12/+13
++12 FJ +12/+13
+ Z Pacific/Gambier -8:59:48 - LMT 1912 O
+ -9 - -09
+ Z Pacific/Marquesas -9:18 - LMT 1912 O
+@@ -1239,50 +1263,50 @@ Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15
+ 9 - +09 1944 Au 15
+ 11:30 - +1130 1979 May
+ 12 - +12
+-R v 1977 1978 - D Sun>=1 0 1 -
+-R v 1978 1979 - F 27 0 0 -
+-R v 1996 o - D 1 2s 1 -
+-R v 1997 o - Mar 2 2s 0 -
++R NC 1977 1978 - D Sun>=1 0 1 -
++R NC 1978 1979 - F 27 0 0 -
++R NC 1996 o - D 1 2s 1 -
++R NC 1997 o - Mar 2 2s 0 -
+ Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13
+-11 v +11/+12
+-R w 1927 o - N 6 2 1 S
+-R w 1928 o - Mar 4 2 0 M
+-R w 1928 1933 - O Sun>=8 2 0:30 S
+-R w 1929 1933 - Mar Sun>=15 2 0 M
+-R w 1934 1940 - Ap lastSun 2 0 M
+-R w 1934 1940 - S lastSun 2 0:30 S
+-R w 1946 o - Ja 1 0 0 S
+-R w 1974 o - N Sun>=1 2s 1 D
+-R x 1974 o - N Sun>=1 2:45s 1 -
+-R w 1975 o - F lastSun 2s 0 S
+-R x 1975 o - F lastSun 2:45s 0 -
+-R w 1975 1988 - O lastSun 2s 1 D
+-R x 1975 1988 - O lastSun 2:45s 1 -
+-R w 1976 1989 - Mar Sun>=1 2s 0 S
+-R x 1976 1989 - Mar Sun>=1 2:45s 0 -
+-R w 1989 o - O Sun>=8 2s 1 D
+-R x 1989 o - O Sun>=8 2:45s 1 -
+-R w 1990 2006 - O Sun>=1 2s 1 D
+-R x 1990 2006 - O Sun>=1 2:45s 1 -
+-R w 1990 2007 - Mar Sun>=15 2s 0 S
+-R x 1990 2007 - Mar Sun>=15 2:45s 0 -
+-R w 2007 ma - S lastSun 2s 1 D
+-R x 2007 ma - S lastSun 2:45s 1 -
+-R w 2008 ma - Ap Sun>=1 2s 0 S
+-R x 2008 ma - Ap Sun>=1 2:45s 0 -
++11 NC +11/+12
++R NZ 1927 o - N 6 2 1 S
++R NZ 1928 o - Mar 4 2 0 M
++R NZ 1928 1933 - O Sun>=8 2 0:30 S
++R NZ 1929 1933 - Mar Sun>=15 2 0 M
++R NZ 1934 1940 - Ap lastSun 2 0 M
++R NZ 1934 1940 - S lastSun 2 0:30 S
++R NZ 1946 o - Ja 1 0 0 S
++R NZ 1974 o - N Sun>=1 2s 1 D
++R k 1974 o - N Sun>=1 2:45s 1 -
++R NZ 1975 o - F lastSun 2s 0 S
++R k 1975 o - F lastSun 2:45s 0 -
++R NZ 1975 1988 - O lastSun 2s 1 D
++R k 1975 1988 - O lastSun 2:45s 1 -
++R NZ 1976 1989 - Mar Sun>=1 2s 0 S
++R k 1976 1989 - Mar Sun>=1 2:45s 0 -
++R NZ 1989 o - O Sun>=8 2s 1 D
++R k 1989 o - O Sun>=8 2:45s 1 -
++R NZ 1990 2006 - O Sun>=1 2s 1 D
++R k 1990 2006 - O Sun>=1 2:45s 1 -
++R NZ 1990 2007 - Mar Sun>=15 2s 0 S
++R k 1990 2007 - Mar Sun>=15 2:45s 0 -
++R NZ 2007 ma - S lastSun 2s 1 D
++R k 2007 ma - S lastSun 2:45s 1 -
++R NZ 2008 ma - Ap Sun>=1 2s 0 S
++R k 2008 ma - Ap Sun>=1 2:45s 0 -
+ Z Pacific/Auckland 11:39:4 - LMT 1868 N 2
+-11:30 w NZ%sT 1946
+-12 w NZ%sT
++11:30 NZ NZ%sT 1946
++12 NZ NZ%sT
+ Z Pacific/Chatham 12:13:48 - LMT 1868 N 2
+ 12:15 - +1215 1946
+-12:45 x +1245/+1345
++12:45 k +1245/+1345
+ Li Pacific/Auckland Antarctica/McMurdo
+-R y 1978 o - N 12 0 0:30 -
+-R y 1979 1991 - Mar Sun>=1 0 0 -
+-R y 1979 1990 - O lastSun 0 0:30 -
++R CK 1978 o - N 12 0 0:30 -
++R CK 1979 1991 - Mar Sun>=1 0 0 -
++R CK 1979 1990 - O lastSun 0 0:30 -
+ Z Pacific/Rarotonga -10:39:4 - LMT 1901
+ -10:30 - -1030 1978 N 12
+--10 y -10/-0930
++-10 CK -10/-0930
+ Z Pacific/Niue -11:19:40 - LMT 1901
+ -11:20 - -1120 1951
+ -11:30 - -1130 1978 O
+@@ -1311,570 +1335,570 @@ Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5
+ -11:22:48 - LMT 1911
+ -11 - SST
+ Li Pacific/Pago_Pago Pacific/Midway
+-R z 2010 o - S lastSun 0 1 -
+-R z 2011 o - Ap Sat>=1 4 0 -
+-R z 2011 o - S lastSat 3 1 -
+-R z 2012 ma - Ap Sun>=1 4 0 -
+-R z 2012 ma - S lastSun 3 1 -
++R WS 2010 o - S lastSun 0 1 -
++R WS 2011 o - Ap Sat>=1 4 0 -
++R WS 2011 o - S lastSat 3 1 -
++R WS 2012 ma - Ap Sun>=1 4 0 -
++R WS 2012 ma - S lastSun 3 1 -
+ Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5
+ -11:26:56 - LMT 1911
+ -11:30 - -1130 1950
+--11 z -11/-10 2011 D 29 24
+-13 z +13/+14
++-11 WS -11/-10 2011 D 29 24
++13 WS +13/+14
+ Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O
+ 11 - +11
+ Z Pacific/Fakaofo -11:24:56 - LMT 1901
+ -11 - -11 2011 D 30
+ 13 - +13
+-R ! 1999 o - O 7 2s 1 -
+-R ! 2000 o - Mar 19 2s 0 -
+-R ! 2000 2001 - N Sun>=1 2 1 -
+-R ! 2001 2002 - Ja lastSun 2 0 -
+-R ! 2016 o - N Sun>=1 2 1 -
+-R ! 2017 o - Ja Sun>=15 3 0 -
++R TO 1999 o - O 7 2s 1 -
++R TO 2000 o - Mar 19 2s 0 -
++R TO 2000 2001 - N Sun>=1 2 1 -
++R TO 2001 2002 - Ja lastSun 2 0 -
++R TO 2016 o - N Sun>=1 2 1 -
++R TO 2017 o - Ja Sun>=15 3 0 -
+ Z Pacific/Tongatapu 12:19:20 - LMT 1901
+ 12:20 - +1220 1941
+ 13 - +13 1999
+-13 ! +13/+14
++13 TO +13/+14
+ Z Pacific/Funafuti 11:56:52 - LMT 1901
+ 12 - +12
+ Z Pacific/Wake 11:6:28 - LMT 1901
+ 12 - +12
+-R $ 1983 o - S 25 0 1 -
+-R $ 1984 1991 - Mar Sun>=23 0 0 -
+-R $ 1984 o - O 23 0 1 -
+-R $ 1985 1991 - S Sun>=23 0 1 -
+-R $ 1992 1993 - Ja Sun>=23 0 0 -
+-R $ 1992 o - O Sun>=23 0 1 -
++R VU 1983 o - S 25 0 1 -
++R VU 1984 1991 - Mar Sun>=23 0 0 -
++R VU 1984 o - O 23 0 1 -
++R VU 1985 1991 - S Sun>=23 0 1 -
++R VU 1992 1993 - Ja Sun>=23 0 0 -
++R VU 1992 o - O Sun>=23 0 1 -
+ Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13
+-11 $ +11/+12
++11 VU +11/+12
+ Z Pacific/Wallis 12:15:20 - LMT 1901
+ 12 - +12
+-R % 1916 o - May 21 2s 1 BST
+-R % 1916 o - O 1 2s 0 GMT
+-R % 1917 o - Ap 8 2s 1 BST
+-R % 1917 o - S 17 2s 0 GMT
+-R % 1918 o - Mar 24 2s 1 BST
+-R % 1918 o - S 30 2s 0 GMT
+-R % 1919 o - Mar 30 2s 1 BST
+-R % 1919 o - S 29 2s 0 GMT
+-R % 1920 o - Mar 28 2s 1 BST
+-R % 1920 o - O 25 2s 0 GMT
+-R % 1921 o - Ap 3 2s 1 BST
+-R % 1921 o - O 3 2s 0 GMT
+-R % 1922 o - Mar 26 2s 1 BST
+-R % 1922 o - O 8 2s 0 GMT
+-R % 1923 o - Ap Sun>=16 2s 1 BST
+-R % 1923 1924 - S Sun>=16 2s 0 GMT
+-R % 1924 o - Ap Sun>=9 2s 1 BST
+-R % 1925 1926 - Ap Sun>=16 2s 1 BST
+-R % 1925 1938 - O Sun>=2 2s 0 GMT
+-R % 1927 o - Ap Sun>=9 2s 1 BST
+-R % 1928 1929 - Ap Sun>=16 2s 1 BST
+-R % 1930 o - Ap Sun>=9 2s 1 BST
+-R % 1931 1932 - Ap Sun>=16 2s 1 BST
+-R % 1933 o - Ap Sun>=9 2s 1 BST
+-R % 1934 o - Ap Sun>=16 2s 1 BST
+-R % 1935 o - Ap Sun>=9 2s 1 BST
+-R % 1936 1937 - Ap Sun>=16 2s 1 BST
+-R % 1938 o - Ap Sun>=9 2s 1 BST
+-R % 1939 o - Ap Sun>=16 2s 1 BST
+-R % 1939 o - N Sun>=16 2s 0 GMT
+-R % 1940 o - F Sun>=23 2s 1 BST
+-R % 1941 o - May Sun>=2 1s 2 BDST
+-R % 1941 1943 - Au Sun>=9 1s 1 BST
+-R % 1942 1944 - Ap Sun>=2 1s 2 BDST
+-R % 1944 o - S Sun>=16 1s 1 BST
+-R % 1945 o - Ap M>=2 1s 2 BDST
+-R % 1945 o - Jul Sun>=9 1s 1 BST
+-R % 1945 1946 - O Sun>=2 2s 0 GMT
+-R % 1946 o - Ap Sun>=9 2s 1 BST
+-R % 1947 o - Mar 16 2s 1 BST
+-R % 1947 o - Ap 13 1s 2 BDST
+-R % 1947 o - Au 10 1s 1 BST
+-R % 1947 o - N 2 2s 0 GMT
+-R % 1948 o - Mar 14 2s 1 BST
+-R % 1948 o - O 31 2s 0 GMT
+-R % 1949 o - Ap 3 2s 1 BST
+-R % 1949 o - O 30 2s 0 GMT
+-R % 1950 1952 - Ap Sun>=14 2s 1 BST
+-R % 1950 1952 - O Sun>=21 2s 0 GMT
+-R % 1953 o - Ap Sun>=16 2s 1 BST
+-R % 1953 1960 - O Sun>=2 2s 0 GMT
+-R % 1954 o - Ap Sun>=9 2s 1 BST
+-R % 1955 1956 - Ap Sun>=16 2s 1 BST
+-R % 1957 o - Ap Sun>=9 2s 1 BST
+-R % 1958 1959 - Ap Sun>=16 2s 1 BST
+-R % 1960 o - Ap Sun>=9 2s 1 BST
+-R % 1961 1963 - Mar lastSun 2s 1 BST
+-R % 1961 1968 - O Sun>=23 2s 0 GMT
+-R % 1964 1967 - Mar Sun>=19 2s 1 BST
+-R % 1968 o - F 18 2s 1 BST
+-R % 1972 1980 - Mar Sun>=16 2s 1 BST
+-R % 1972 1980 - O Sun>=23 2s 0 GMT
+-R % 1981 1995 - Mar lastSun 1u 1 BST
+-R % 1981 1989 - O Sun>=23 1u 0 GMT
+-R % 1990 1995 - O Sun>=22 1u 0 GMT
++R G 1916 o - May 21 2s 1 BST
++R G 1916 o - O 1 2s 0 GMT
++R G 1917 o - Ap 8 2s 1 BST
++R G 1917 o - S 17 2s 0 GMT
++R G 1918 o - Mar 24 2s 1 BST
++R G 1918 o - S 30 2s 0 GMT
++R G 1919 o - Mar 30 2s 1 BST
++R G 1919 o - S 29 2s 0 GMT
++R G 1920 o - Mar 28 2s 1 BST
++R G 1920 o - O 25 2s 0 GMT
++R G 1921 o - Ap 3 2s 1 BST
++R G 1921 o - O 3 2s 0 GMT
++R G 1922 o - Mar 26 2s 1 BST
++R G 1922 o - O 8 2s 0 GMT
++R G 1923 o - Ap Sun>=16 2s 1 BST
++R G 1923 1924 - S Sun>=16 2s 0 GMT
++R G 1924 o - Ap Sun>=9 2s 1 BST
++R G 1925 1926 - Ap Sun>=16 2s 1 BST
++R G 1925 1938 - O Sun>=2 2s 0 GMT
++R G 1927 o - Ap Sun>=9 2s 1 BST
++R G 1928 1929 - Ap Sun>=16 2s 1 BST
++R G 1930 o - Ap Sun>=9 2s 1 BST
++R G 1931 1932 - Ap Sun>=16 2s 1 BST
++R G 1933 o - Ap Sun>=9 2s 1 BST
++R G 1934 o - Ap Sun>=16 2s 1 BST
++R G 1935 o - Ap Sun>=9 2s 1 BST
++R G 1936 1937 - Ap Sun>=16 2s 1 BST
++R G 1938 o - Ap Sun>=9 2s 1 BST
++R G 1939 o - Ap Sun>=16 2s 1 BST
++R G 1939 o - N Sun>=16 2s 0 GMT
++R G 1940 o - F Sun>=23 2s 1 BST
++R G 1941 o - May Sun>=2 1s 2 BDST
++R G 1941 1943 - Au Sun>=9 1s 1 BST
++R G 1942 1944 - Ap Sun>=2 1s 2 BDST
++R G 1944 o - S Sun>=16 1s 1 BST
++R G 1945 o - Ap M>=2 1s 2 BDST
++R G 1945 o - Jul Sun>=9 1s 1 BST
++R G 1945 1946 - O Sun>=2 2s 0 GMT
++R G 1946 o - Ap Sun>=9 2s 1 BST
++R G 1947 o - Mar 16 2s 1 BST
++R G 1947 o - Ap 13 1s 2 BDST
++R G 1947 o - Au 10 1s 1 BST
++R G 1947 o - N 2 2s 0 GMT
++R G 1948 o - Mar 14 2s 1 BST
++R G 1948 o - O 31 2s 0 GMT
++R G 1949 o - Ap 3 2s 1 BST
++R G 1949 o - O 30 2s 0 GMT
++R G 1950 1952 - Ap Sun>=14 2s 1 BST
++R G 1950 1952 - O Sun>=21 2s 0 GMT
++R G 1953 o - Ap Sun>=16 2s 1 BST
++R G 1953 1960 - O Sun>=2 2s 0 GMT
++R G 1954 o - Ap Sun>=9 2s 1 BST
++R G 1955 1956 - Ap Sun>=16 2s 1 BST
++R G 1957 o - Ap Sun>=9 2s 1 BST
++R G 1958 1959 - Ap Sun>=16 2s 1 BST
++R G 1960 o - Ap Sun>=9 2s 1 BST
++R G 1961 1963 - Mar lastSun 2s 1 BST
++R G 1961 1968 - O Sun>=23 2s 0 GMT
++R G 1964 1967 - Mar Sun>=19 2s 1 BST
++R G 1968 o - F 18 2s 1 BST
++R G 1972 1980 - Mar Sun>=16 2s 1 BST
++R G 1972 1980 - O Sun>=23 2s 0 GMT
++R G 1981 1995 - Mar lastSun 1u 1 BST
++R G 1981 1989 - O Sun>=23 1u 0 GMT
++R G 1990 1995 - O Sun>=22 1u 0 GMT
+ Z Europe/London -0:1:15 - LMT 1847 D 1 0s
+-0 % %s 1968 O 27
++0 G %s 1968 O 27
+ 1 - BST 1971 O 31 2u
+-0 % %s 1996
+-0 O GMT/BST
++0 G %s 1996
++0 E GMT/BST
+ Li Europe/London Europe/Jersey
+ Li Europe/London Europe/Guernsey
+ Li Europe/London Europe/Isle_of_Man
+-R & 1971 o - O 31 2u -1 -
+-R & 1972 1980 - Mar Sun>=16 2u 0 -
+-R & 1972 1980 - O Sun>=23 2u -1 -
+-R & 1981 ma - Mar lastSun 1u 0 -
+-R & 1981 1989 - O Sun>=23 1u -1 -
+-R & 1990 1995 - O Sun>=22 1u -1 -
+-R & 1996 ma - O lastSun 1u -1 -
++R IE 1971 o - O 31 2u -1 -
++R IE 1972 1980 - Mar Sun>=16 2u 0 -
++R IE 1972 1980 - O Sun>=23 2u -1 -
++R IE 1981 ma - Mar lastSun 1u 0 -
++R IE 1981 1989 - O Sun>=23 1u -1 -
++R IE 1990 1995 - O Sun>=22 1u -1 -
++R IE 1996 ma - O lastSun 1u -1 -
+ Z Europe/Dublin -0:25 - LMT 1880 Au 2
+ -0:25:21 - DMT 1916 May 21 2s
+ -0:25:21 1 IST 1916 O 1 2s
+-0 % %s 1921 D 6
+-0 % GMT/IST 1940 F 25 2s
++0 G %s 1921 D 6
++0 G GMT/IST 1940 F 25 2s
+ 0 1 IST 1946 O 6 2s
+ 0 - GMT 1947 Mar 16 2s
+ 0 1 IST 1947 N 2 2s
+ 0 - GMT 1948 Ap 18 2s
+-0 % GMT/IST 1968 O 27
+-1 & IST/GMT
+-R O 1977 1980 - Ap Sun>=1 1u 1 S
+-R O 1977 o - S lastSun 1u 0 -
+-R O 1978 o - O 1 1u 0 -
+-R O 1979 1995 - S lastSun 1u 0 -
+-R O 1981 ma - Mar lastSun 1u 1 S
+-R O 1996 ma - O lastSun 1u 0 -
+-R ' 1977 1980 - Ap Sun>=1 1s 1 S
+-R ' 1977 o - S lastSun 1s 0 -
+-R ' 1978 o - O 1 1s 0 -
+-R ' 1979 1995 - S lastSun 1s 0 -
+-R ' 1981 ma - Mar lastSun 1s 1 S
+-R ' 1996 ma - O lastSun 1s 0 -
+-R ( 1916 o - Ap 30 23 1 S
+-R ( 1916 o - O 1 1 0 -
+-R ( 1917 1918 - Ap M>=15 2s 1 S
+-R ( 1917 1918 - S M>=15 2s 0 -
+-R ( 1940 o - Ap 1 2s 1 S
+-R ( 1942 o - N 2 2s 0 -
+-R ( 1943 o - Mar 29 2s 1 S
+-R ( 1943 o - O 4 2s 0 -
+-R ( 1944 1945 - Ap M>=1 2s 1 S
+-R ( 1944 o - O 2 2s 0 -
+-R ( 1945 o - S 16 2s 0 -
+-R ( 1977 1980 - Ap Sun>=1 2s 1 S
+-R ( 1977 o - S lastSun 2s 0 -
+-R ( 1978 o - O 1 2s 0 -
+-R ( 1979 1995 - S lastSun 2s 0 -
+-R ( 1981 ma - Mar lastSun 2s 1 S
+-R ( 1996 ma - O lastSun 2s 0 -
+-R W 1977 1980 - Ap Sun>=1 0 1 S
+-R W 1977 o - S lastSun 0 0 -
+-R W 1978 o - O 1 0 0 -
+-R W 1979 1995 - S lastSun 0 0 -
+-R W 1981 ma - Mar lastSun 0 1 S
+-R W 1996 ma - O lastSun 0 0 -
+-R M 1917 o - Jul 1 23 1 MST
+-R M 1917 o - D 28 0 0 MMT
+-R M 1918 o - May 31 22 2 MDST
+-R M 1918 o - S 16 1 1 MST
+-R M 1919 o - May 31 23 2 MDST
+-R M 1919 o - Jul 1 0u 1 MSD
+-R M 1919 o - Au 16 0 0 MSK
+-R M 1921 o - F 14 23 1 MSD
+-R M 1921 o - Mar 20 23 2 +05
+-R M 1921 o - S 1 0 1 MSD
+-R M 1921 o - O 1 0 0 -
+-R M 1981 1984 - Ap 1 0 1 S
+-R M 1981 1983 - O 1 0 0 -
+-R M 1984 1995 - S lastSun 2s 0 -
+-R M 1985 2010 - Mar lastSun 2s 1 S
+-R M 1996 2010 - O lastSun 2s 0 -
+-Z WET 0 O WE%sT
+-Z CET 1 ( CE%sT
+-Z MET 1 ( ME%sT
+-Z EET 2 O EE%sT
+-R ) 1940 o - Jun 16 0 1 S
+-R ) 1942 o - N 2 3 0 -
+-R ) 1943 o - Mar 29 2 1 S
+-R ) 1943 o - Ap 10 3 0 -
+-R ) 1974 o - May 4 0 1 S
+-R ) 1974 o - O 2 0 0 -
+-R ) 1975 o - May 1 0 1 S
+-R ) 1975 o - O 2 0 0 -
+-R ) 1976 o - May 2 0 1 S
+-R ) 1976 o - O 3 0 0 -
+-R ) 1977 o - May 8 0 1 S
+-R ) 1977 o - O 2 0 0 -
+-R ) 1978 o - May 6 0 1 S
+-R ) 1978 o - O 1 0 0 -
+-R ) 1979 o - May 5 0 1 S
+-R ) 1979 o - S 30 0 0 -
+-R ) 1980 o - May 3 0 1 S
+-R ) 1980 o - O 4 0 0 -
+-R ) 1981 o - Ap 26 0 1 S
+-R ) 1981 o - S 27 0 0 -
+-R ) 1982 o - May 2 0 1 S
+-R ) 1982 o - O 3 0 0 -
+-R ) 1983 o - Ap 18 0 1 S
+-R ) 1983 o - O 1 0 0 -
+-R ) 1984 o - Ap 1 0 1 S
++0 G GMT/IST 1968 O 27
++1 IE IST/GMT
++R E 1977 1980 - Ap Sun>=1 1u 1 S
++R E 1977 o - S lastSun 1u 0 -
++R E 1978 o - O 1 1u 0 -
++R E 1979 1995 - S lastSun 1u 0 -
++R E 1981 ma - Mar lastSun 1u 1 S
++R E 1996 ma - O lastSun 1u 0 -
++R W- 1977 1980 - Ap Sun>=1 1s 1 S
++R W- 1977 o - S lastSun 1s 0 -
++R W- 1978 o - O 1 1s 0 -
++R W- 1979 1995 - S lastSun 1s 0 -
++R W- 1981 ma - Mar lastSun 1s 1 S
++R W- 1996 ma - O lastSun 1s 0 -
++R c 1916 o - Ap 30 23 1 S
++R c 1916 o - O 1 1 0 -
++R c 1917 1918 - Ap M>=15 2s 1 S
++R c 1917 1918 - S M>=15 2s 0 -
++R c 1940 o - Ap 1 2s 1 S
++R c 1942 o - N 2 2s 0 -
++R c 1943 o - Mar 29 2s 1 S
++R c 1943 o - O 4 2s 0 -
++R c 1944 1945 - Ap M>=1 2s 1 S
++R c 1944 o - O 2 2s 0 -
++R c 1945 o - S 16 2s 0 -
++R c 1977 1980 - Ap Sun>=1 2s 1 S
++R c 1977 o - S lastSun 2s 0 -
++R c 1978 o - O 1 2s 0 -
++R c 1979 1995 - S lastSun 2s 0 -
++R c 1981 ma - Mar lastSun 2s 1 S
++R c 1996 ma - O lastSun 2s 0 -
++R e 1977 1980 - Ap Sun>=1 0 1 S
++R e 1977 o - S lastSun 0 0 -
++R e 1978 o - O 1 0 0 -
++R e 1979 1995 - S lastSun 0 0 -
++R e 1981 ma - Mar lastSun 0 1 S
++R e 1996 ma - O lastSun 0 0 -
++R R 1917 o - Jul 1 23 1 MST
++R R 1917 o - D 28 0 0 MMT
++R R 1918 o - May 31 22 2 MDST
++R R 1918 o - S 16 1 1 MST
++R R 1919 o - May 31 23 2 MDST
++R R 1919 o - Jul 1 0u 1 MSD
++R R 1919 o - Au 16 0 0 MSK
++R R 1921 o - F 14 23 1 MSD
++R R 1921 o - Mar 20 23 2 +05
++R R 1921 o - S 1 0 1 MSD
++R R 1921 o - O 1 0 0 -
++R R 1981 1984 - Ap 1 0 1 S
++R R 1981 1983 - O 1 0 0 -
++R R 1984 1995 - S lastSun 2s 0 -
++R R 1985 2010 - Mar lastSun 2s 1 S
++R R 1996 2010 - O lastSun 2s 0 -
++Z WET 0 E WE%sT
++Z CET 1 c CE%sT
++Z MET 1 c ME%sT
++Z EET 2 E EE%sT
++R q 1940 o - Jun 16 0 1 S
++R q 1942 o - N 2 3 0 -
++R q 1943 o - Mar 29 2 1 S
++R q 1943 o - Ap 10 3 0 -
++R q 1974 o - May 4 0 1 S
++R q 1974 o - O 2 0 0 -
++R q 1975 o - May 1 0 1 S
++R q 1975 o - O 2 0 0 -
++R q 1976 o - May 2 0 1 S
++R q 1976 o - O 3 0 0 -
++R q 1977 o - May 8 0 1 S
++R q 1977 o - O 2 0 0 -
++R q 1978 o - May 6 0 1 S
++R q 1978 o - O 1 0 0 -
++R q 1979 o - May 5 0 1 S
++R q 1979 o - S 30 0 0 -
++R q 1980 o - May 3 0 1 S
++R q 1980 o - O 4 0 0 -
++R q 1981 o - Ap 26 0 1 S
++R q 1981 o - S 27 0 0 -
++R q 1982 o - May 2 0 1 S
++R q 1982 o - O 3 0 0 -
++R q 1983 o - Ap 18 0 1 S
++R q 1983 o - O 1 0 0 -
++R q 1984 o - Ap 1 0 1 S
+ Z Europe/Tirane 1:19:20 - LMT 1914
+ 1 - CET 1940 Jun 16
+-1 ) CE%sT 1984 Jul
+-1 O CE%sT
++1 q CE%sT 1984 Jul
++1 E CE%sT
+ Z Europe/Andorra 0:6:4 - LMT 1901
+ 0 - WET 1946 S 30
+ 1 - CET 1985 Mar 31 2
+-1 O CE%sT
+-R * 1920 o - Ap 5 2s 1 S
+-R * 1920 o - S 13 2s 0 -
+-R * 1946 o - Ap 14 2s 1 S
+-R * 1946 1948 - O Sun>=1 2s 0 -
+-R * 1947 o - Ap 6 2s 1 S
+-R * 1948 o - Ap 18 2s 1 S
+-R * 1980 o - Ap 6 0 1 S
+-R * 1980 o - S 28 0 0 -
++1 E CE%sT
++R a 1920 o - Ap 5 2s 1 S
++R a 1920 o - S 13 2s 0 -
++R a 1946 o - Ap 14 2s 1 S
++R a 1946 1948 - O Sun>=1 2s 0 -
++R a 1947 o - Ap 6 2s 1 S
++R a 1948 o - Ap 18 2s 1 S
++R a 1980 o - Ap 6 0 1 S
++R a 1980 o - S 28 0 0 -
+ Z Europe/Vienna 1:5:21 - LMT 1893 Ap
+-1 ( CE%sT 1920
+-1 * CE%sT 1940 Ap 1 2s
+-1 ( CE%sT 1945 Ap 2 2s
++1 c CE%sT 1920
++1 a CE%sT 1940 Ap 1 2s
++1 c CE%sT 1945 Ap 2 2s
+ 1 1 CEST 1945 Ap 12 2s
+ 1 - CET 1946
+-1 * CE%sT 1981
+-1 O CE%sT
++1 a CE%sT 1981
++1 E CE%sT
+ Z Europe/Minsk 1:50:16 - LMT 1880
+ 1:50 - MMT 1924 May 2
+ 2 - EET 1930 Jun 21
+ 3 - MSK 1941 Jun 28
+-1 ( CE%sT 1944 Jul 3
+-3 M MSK/MSD 1990
++1 c CE%sT 1944 Jul 3
++3 R MSK/MSD 1990
+ 3 - MSK 1991 Mar 31 2s
+-2 M EE%sT 2011 Mar 27 2s
++2 R EE%sT 2011 Mar 27 2s
+ 3 - +03
+-R + 1918 o - Mar 9 0s 1 S
+-R + 1918 1919 - O Sat>=1 23s 0 -
+-R + 1919 o - Mar 1 23s 1 S
+-R + 1920 o - F 14 23s 1 S
+-R + 1920 o - O 23 23s 0 -
+-R + 1921 o - Mar 14 23s 1 S
+-R + 1921 o - O 25 23s 0 -
+-R + 1922 o - Mar 25 23s 1 S
+-R + 1922 1927 - O Sat>=1 23s 0 -
+-R + 1923 o - Ap 21 23s 1 S
+-R + 1924 o - Mar 29 23s 1 S
+-R + 1925 o - Ap 4 23s 1 S
+-R + 1926 o - Ap 17 23s 1 S
+-R + 1927 o - Ap 9 23s 1 S
+-R + 1928 o - Ap 14 23s 1 S
+-R + 1928 1938 - O Sun>=2 2s 0 -
+-R + 1929 o - Ap 21 2s 1 S
+-R + 1930 o - Ap 13 2s 1 S
+-R + 1931 o - Ap 19 2s 1 S
+-R + 1932 o - Ap 3 2s 1 S
+-R + 1933 o - Mar 26 2s 1 S
+-R + 1934 o - Ap 8 2s 1 S
+-R + 1935 o - Mar 31 2s 1 S
+-R + 1936 o - Ap 19 2s 1 S
+-R + 1937 o - Ap 4 2s 1 S
+-R + 1938 o - Mar 27 2s 1 S
+-R + 1939 o - Ap 16 2s 1 S
+-R + 1939 o - N 19 2s 0 -
+-R + 1940 o - F 25 2s 1 S
+-R + 1944 o - S 17 2s 0 -
+-R + 1945 o - Ap 2 2s 1 S
+-R + 1945 o - S 16 2s 0 -
+-R + 1946 o - May 19 2s 1 S
+-R + 1946 o - O 7 2s 0 -
++R b 1918 o - Mar 9 0s 1 S
++R b 1918 1919 - O Sat>=1 23s 0 -
++R b 1919 o - Mar 1 23s 1 S
++R b 1920 o - F 14 23s 1 S
++R b 1920 o - O 23 23s 0 -
++R b 1921 o - Mar 14 23s 1 S
++R b 1921 o - O 25 23s 0 -
++R b 1922 o - Mar 25 23s 1 S
++R b 1922 1927 - O Sat>=1 23s 0 -
++R b 1923 o - Ap 21 23s 1 S
++R b 1924 o - Mar 29 23s 1 S
++R b 1925 o - Ap 4 23s 1 S
++R b 1926 o - Ap 17 23s 1 S
++R b 1927 o - Ap 9 23s 1 S
++R b 1928 o - Ap 14 23s 1 S
++R b 1928 1938 - O Sun>=2 2s 0 -
++R b 1929 o - Ap 21 2s 1 S
++R b 1930 o - Ap 13 2s 1 S
++R b 1931 o - Ap 19 2s 1 S
++R b 1932 o - Ap 3 2s 1 S
++R b 1933 o - Mar 26 2s 1 S
++R b 1934 o - Ap 8 2s 1 S
++R b 1935 o - Mar 31 2s 1 S
++R b 1936 o - Ap 19 2s 1 S
++R b 1937 o - Ap 4 2s 1 S
++R b 1938 o - Mar 27 2s 1 S
++R b 1939 o - Ap 16 2s 1 S
++R b 1939 o - N 19 2s 0 -
++R b 1940 o - F 25 2s 1 S
++R b 1944 o - S 17 2s 0 -
++R b 1945 o - Ap 2 2s 1 S
++R b 1945 o - S 16 2s 0 -
++R b 1946 o - May 19 2s 1 S
++R b 1946 o - O 7 2s 0 -
+ Z Europe/Brussels 0:17:30 - LMT 1880
+ 0:17:30 - BMT 1892 May 1 12
+ 0 - WET 1914 N 8
+ 1 - CET 1916 May
+-1 ( CE%sT 1918 N 11 11u
+-0 + WE%sT 1940 May 20 2s
+-1 ( CE%sT 1944 S 3
+-1 + CE%sT 1977
+-1 O CE%sT
+-R , 1979 o - Mar 31 23 1 S
+-R , 1979 o - O 1 1 0 -
+-R , 1980 1982 - Ap Sat>=1 23 1 S
+-R , 1980 o - S 29 1 0 -
+-R , 1981 o - S 27 2 0 -
++1 c CE%sT 1918 N 11 11u
++0 b WE%sT 1940 May 20 2s
++1 c CE%sT 1944 S 3
++1 b CE%sT 1977
++1 E CE%sT
++R BG 1979 o - Mar 31 23 1 S
++R BG 1979 o - O 1 1 0 -
++R BG 1980 1982 - Ap Sat>=1 23 1 S
++R BG 1980 o - S 29 1 0 -
++R BG 1981 o - S 27 2 0 -
+ Z Europe/Sofia 1:33:16 - LMT 1880
+ 1:56:56 - IMT 1894 N 30
+ 2 - EET 1942 N 2 3
+-1 ( CE%sT 1945
++1 c CE%sT 1945
+ 1 - CET 1945 Ap 2 3
+ 2 - EET 1979 Mar 31 23
+-2 , EE%sT 1982 S 26 3
+-2 ( EE%sT 1991
+-2 W EE%sT 1997
+-2 O EE%sT
+-R . 1945 o - Ap M>=1 2s 1 S
+-R . 1945 o - O 1 2s 0 -
+-R . 1946 o - May 6 2s 1 S
+-R . 1946 1949 - O Sun>=1 2s 0 -
+-R . 1947 1948 - Ap Sun>=15 2s 1 S
+-R . 1949 o - Ap 9 2s 1 S
++2 BG EE%sT 1982 S 26 3
++2 c EE%sT 1991
++2 e EE%sT 1997
++2 E EE%sT
++R CZ 1945 o - Ap M>=1 2s 1 S
++R CZ 1945 o - O 1 2s 0 -
++R CZ 1946 o - May 6 2s 1 S
++R CZ 1946 1949 - O Sun>=1 2s 0 -
++R CZ 1947 1948 - Ap Sun>=15 2s 1 S
++R CZ 1949 o - Ap 9 2s 1 S
+ Z Europe/Prague 0:57:44 - LMT 1850
+ 0:57:44 - PMT 1891 O
+-1 ( CE%sT 1945 May 9
+-1 . CE%sT 1946 D 1 3
++1 c CE%sT 1945 May 9
++1 CZ CE%sT 1946 D 1 3
+ 1 -1 GMT 1947 F 23 2
+-1 . CE%sT 1979
+-1 O CE%sT
+-R / 1916 o - May 14 23 1 S
+-R / 1916 o - S 30 23 0 -
+-R / 1940 o - May 15 0 1 S
+-R / 1945 o - Ap 2 2s 1 S
+-R / 1945 o - Au 15 2s 0 -
+-R / 1946 o - May 1 2s 1 S
+-R / 1946 o - S 1 2s 0 -
+-R / 1947 o - May 4 2s 1 S
+-R / 1947 o - Au 10 2s 0 -
+-R / 1948 o - May 9 2s 1 S
+-R / 1948 o - Au 8 2s 0 -
++1 CZ CE%sT 1979
++1 E CE%sT
++R D 1916 o - May 14 23 1 S
++R D 1916 o - S 30 23 0 -
++R D 1940 o - May 15 0 1 S
++R D 1945 o - Ap 2 2s 1 S
++R D 1945 o - Au 15 2s 0 -
++R D 1946 o - May 1 2s 1 S
++R D 1946 o - S 1 2s 0 -
++R D 1947 o - May 4 2s 1 S
++R D 1947 o - Au 10 2s 0 -
++R D 1948 o - May 9 2s 1 S
++R D 1948 o - Au 8 2s 0 -
+ Z Europe/Copenhagen 0:50:20 - LMT 1890
+ 0:50:20 - CMT 1894
+-1 / CE%sT 1942 N 2 2s
+-1 ( CE%sT 1945 Ap 2 2
+-1 / CE%sT 1980
+-1 O CE%sT
++1 D CE%sT 1942 N 2 2s
++1 c CE%sT 1945 Ap 2 2
++1 D CE%sT 1980
++1 E CE%sT
+ Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11
+ 0 - WET 1981
+-0 O WE%sT
+-R : 1991 1992 - Mar lastSun 2 1 D
+-R : 1991 1992 - S lastSun 2 0 S
+-R : 1993 2006 - Ap Sun>=1 2 1 D
+-R : 1993 2006 - O lastSun 2 0 S
+-R : 2007 ma - Mar Sun>=8 2 1 D
+-R : 2007 ma - N Sun>=1 2 0 S
++0 E WE%sT
++R Th 1991 1992 - Mar lastSun 2 1 D
++R Th 1991 1992 - S lastSun 2 0 S
++R Th 1993 2006 - Ap Sun>=1 2 1 D
++R Th 1993 2006 - O lastSun 2 0 S
++R Th 2007 ma - Mar Sun>=8 2 1 D
++R Th 2007 ma - N Sun>=1 2 0 S
+ Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
+ -3 - -03 1980 Ap 6 2
+--3 O -03/-02 1996
++-3 E -03/-02 1996
+ 0 - GMT
+ Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28
+ -2 - -02 1980 Ap 6 2
+--2 ( -02/-01 1981 Mar 29
+--1 O -01/+00
++-2 c -02/-01 1981 Mar 29
++-1 E -01/+00
+ Z America/Godthab -3:26:56 - LMT 1916 Jul 28
+ -3 - -03 1980 Ap 6 2
+--3 O -03/-02
++-3 E -03/-02
+ Z America/Thule -4:35:8 - LMT 1916 Jul 28
+--4 : A%sT
++-4 Th A%sT
+ Z Europe/Tallinn 1:39 - LMT 1880
+ 1:39 - TMT 1918 F
+-1 ( CE%sT 1919 Jul
++1 c CE%sT 1919 Jul
+ 1:39 - TMT 1921 May
+ 2 - EET 1940 Au 6
+ 3 - MSK 1941 S 15
+-1 ( CE%sT 1944 S 22
+-3 M MSK/MSD 1989 Mar 26 2s
++1 c CE%sT 1944 S 22
++3 R MSK/MSD 1989 Mar 26 2s
+ 2 1 EEST 1989 S 24 2s
+-2 ( EE%sT 1998 S 22
+-2 O EE%sT 1999 O 31 4
++2 c EE%sT 1998 S 22
++2 E EE%sT 1999 O 31 4
+ 2 - EET 2002 F 21
+-2 O EE%sT
+-R ; 1942 o - Ap 2 24 1 S
+-R ; 1942 o - O 4 1 0 -
+-R ; 1981 1982 - Mar lastSun 2 1 S
+-R ; 1981 1982 - S lastSun 3 0 -
++2 E EE%sT
++R FI 1942 o - Ap 2 24 1 S
++R FI 1942 o - O 4 1 0 -
++R FI 1981 1982 - Mar lastSun 2 1 S
++R FI 1981 1982 - S lastSun 3 0 -
+ Z Europe/Helsinki 1:39:49 - LMT 1878 May 31
+ 1:39:49 - HMT 1921 May
+-2 ; EE%sT 1983
+-2 O EE%sT
++2 FI EE%sT 1983
++2 E EE%sT
+ Li Europe/Helsinki Europe/Mariehamn
+-R < 1916 o - Jun 14 23s 1 S
+-R < 1916 1919 - O Sun>=1 23s 0 -
+-R < 1917 o - Mar 24 23s 1 S
+-R < 1918 o - Mar 9 23s 1 S
+-R < 1919 o - Mar 1 23s 1 S
+-R < 1920 o - F 14 23s 1 S
+-R < 1920 o - O 23 23s 0 -
+-R < 1921 o - Mar 14 23s 1 S
+-R < 1921 o - O 25 23s 0 -
+-R < 1922 o - Mar 25 23s 1 S
+-R < 1922 1938 - O Sat>=1 23s 0 -
+-R < 1923 o - May 26 23s 1 S
+-R < 1924 o - Mar 29 23s 1 S
+-R < 1925 o - Ap 4 23s 1 S
+-R < 1926 o - Ap 17 23s 1 S
+-R < 1927 o - Ap 9 23s 1 S
+-R < 1928 o - Ap 14 23s 1 S
+-R < 1929 o - Ap 20 23s 1 S
+-R < 1930 o - Ap 12 23s 1 S
+-R < 1931 o - Ap 18 23s 1 S
+-R < 1932 o - Ap 2 23s 1 S
+-R < 1933 o - Mar 25 23s 1 S
+-R < 1934 o - Ap 7 23s 1 S
+-R < 1935 o - Mar 30 23s 1 S
+-R < 1936 o - Ap 18 23s 1 S
+-R < 1937 o - Ap 3 23s 1 S
+-R < 1938 o - Mar 26 23s 1 S
+-R < 1939 o - Ap 15 23s 1 S
+-R < 1939 o - N 18 23s 0 -
+-R < 1940 o - F 25 2 1 S
+-R < 1941 o - May 5 0 2 M
+-R < 1941 o - O 6 0 1 S
+-R < 1942 o - Mar 9 0 2 M
+-R < 1942 o - N 2 3 1 S
+-R < 1943 o - Mar 29 2 2 M
+-R < 1943 o - O 4 3 1 S
+-R < 1944 o - Ap 3 2 2 M
+-R < 1944 o - O 8 1 1 S
+-R < 1945 o - Ap 2 2 2 M
+-R < 1945 o - S 16 3 0 -
+-R < 1976 o - Mar 28 1 1 S
+-R < 1976 o - S 26 1 0 -
++R F 1916 o - Jun 14 23s 1 S
++R F 1916 1919 - O Sun>=1 23s 0 -
++R F 1917 o - Mar 24 23s 1 S
++R F 1918 o - Mar 9 23s 1 S
++R F 1919 o - Mar 1 23s 1 S
++R F 1920 o - F 14 23s 1 S
++R F 1920 o - O 23 23s 0 -
++R F 1921 o - Mar 14 23s 1 S
++R F 1921 o - O 25 23s 0 -
++R F 1922 o - Mar 25 23s 1 S
++R F 1922 1938 - O Sat>=1 23s 0 -
++R F 1923 o - May 26 23s 1 S
++R F 1924 o - Mar 29 23s 1 S
++R F 1925 o - Ap 4 23s 1 S
++R F 1926 o - Ap 17 23s 1 S
++R F 1927 o - Ap 9 23s 1 S
++R F 1928 o - Ap 14 23s 1 S
++R F 1929 o - Ap 20 23s 1 S
++R F 1930 o - Ap 12 23s 1 S
++R F 1931 o - Ap 18 23s 1 S
++R F 1932 o - Ap 2 23s 1 S
++R F 1933 o - Mar 25 23s 1 S
++R F 1934 o - Ap 7 23s 1 S
++R F 1935 o - Mar 30 23s 1 S
++R F 1936 o - Ap 18 23s 1 S
++R F 1937 o - Ap 3 23s 1 S
++R F 1938 o - Mar 26 23s 1 S
++R F 1939 o - Ap 15 23s 1 S
++R F 1939 o - N 18 23s 0 -
++R F 1940 o - F 25 2 1 S
++R F 1941 o - May 5 0 2 M
++R F 1941 o - O 6 0 1 S
++R F 1942 o - Mar 9 0 2 M
++R F 1942 o - N 2 3 1 S
++R F 1943 o - Mar 29 2 2 M
++R F 1943 o - O 4 3 1 S
++R F 1944 o - Ap 3 2 2 M
++R F 1944 o - O 8 1 1 S
++R F 1945 o - Ap 2 2 2 M
++R F 1945 o - S 16 3 0 -
++R F 1976 o - Mar 28 1 1 S
++R F 1976 o - S 26 1 0 -
+ Z Europe/Paris 0:9:21 - LMT 1891 Mar 15 0:1
+ 0:9:21 - PMT 1911 Mar 11 0:1
+-0 < WE%sT 1940 Jun 14 23
+-1 ( CE%sT 1944 Au 25
+-0 < WE%sT 1945 S 16 3
+-1 < CE%sT 1977
+-1 O CE%sT
+-R = 1946 o - Ap 14 2s 1 S
+-R = 1946 o - O 7 2s 0 -
+-R = 1947 1949 - O Sun>=1 2s 0 -
+-R = 1947 o - Ap 6 3s 1 S
+-R = 1947 o - May 11 2s 2 M
+-R = 1947 o - Jun 29 3 1 S
+-R = 1948 o - Ap 18 2s 1 S
+-R = 1949 o - Ap 10 2s 1 S
+-R > 1945 o - May 24 2 2 M
+-R > 1945 o - S 24 3 1 S
+-R > 1945 o - N 18 2s 0 -
++0 F WE%sT 1940 Jun 14 23
++1 c CE%sT 1944 Au 25
++0 F WE%sT 1945 S 16 3
++1 F CE%sT 1977
++1 E CE%sT
++R DE 1946 o - Ap 14 2s 1 S
++R DE 1946 o - O 7 2s 0 -
++R DE 1947 1949 - O Sun>=1 2s 0 -
++R DE 1947 o - Ap 6 3s 1 S
++R DE 1947 o - May 11 2s 2 M
++R DE 1947 o - Jun 29 3 1 S
++R DE 1948 o - Ap 18 2s 1 S
++R DE 1949 o - Ap 10 2s 1 S
++R So 1945 o - May 24 2 2 M
++R So 1945 o - S 24 3 1 S
++R So 1945 o - N 18 2s 0 -
+ Z Europe/Berlin 0:53:28 - LMT 1893 Ap
+-1 ( CE%sT 1945 May 24 2
+-1 > CE%sT 1946
+-1 = CE%sT 1980
+-1 O CE%sT
++1 c CE%sT 1945 May 24 2
++1 So CE%sT 1946
++1 DE CE%sT 1980
++1 E CE%sT
+ Li Europe/Zurich Europe/Busingen
+ Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 0s
+-0 % %s 1957 Ap 14 2
++0 G %s 1957 Ap 14 2
+ 1 - CET 1982
+-1 O CE%sT
+-R ? 1932 o - Jul 7 0 1 S
+-R ? 1932 o - S 1 0 0 -
+-R ? 1941 o - Ap 7 0 1 S
+-R ? 1942 o - N 2 3 0 -
+-R ? 1943 o - Mar 30 0 1 S
+-R ? 1943 o - O 4 0 0 -
+-R ? 1952 o - Jul 1 0 1 S
+-R ? 1952 o - N 2 0 0 -
+-R ? 1975 o - Ap 12 0s 1 S
+-R ? 1975 o - N 26 0s 0 -
+-R ? 1976 o - Ap 11 2s 1 S
+-R ? 1976 o - O 10 2s 0 -
+-R ? 1977 1978 - Ap Sun>=1 2s 1 S
+-R ? 1977 o - S 26 2s 0 -
+-R ? 1978 o - S 24 4 0 -
+-R ? 1979 o - Ap 1 9 1 S
+-R ? 1979 o - S 29 2 0 -
+-R ? 1980 o - Ap 1 0 1 S
+-R ? 1980 o - S 28 0 0 -
++1 E CE%sT
++R g 1932 o - Jul 7 0 1 S
++R g 1932 o - S 1 0 0 -
++R g 1941 o - Ap 7 0 1 S
++R g 1942 o - N 2 3 0 -
++R g 1943 o - Mar 30 0 1 S
++R g 1943 o - O 4 0 0 -
++R g 1952 o - Jul 1 0 1 S
++R g 1952 o - N 2 0 0 -
++R g 1975 o - Ap 12 0s 1 S
++R g 1975 o - N 26 0s 0 -
++R g 1976 o - Ap 11 2s 1 S
++R g 1976 o - O 10 2s 0 -
++R g 1977 1978 - Ap Sun>=1 2s 1 S
++R g 1977 o - S 26 2s 0 -
++R g 1978 o - S 24 4 0 -
++R g 1979 o - Ap 1 9 1 S
++R g 1979 o - S 29 2 0 -
++R g 1980 o - Ap 1 0 1 S
++R g 1980 o - S 28 0 0 -
+ Z Europe/Athens 1:34:52 - LMT 1895 S 14
+ 1:34:52 - AMT 1916 Jul 28 0:1
+-2 ? EE%sT 1941 Ap 30
+-1 ? CE%sT 1944 Ap 4
+-2 ? EE%sT 1981
+-2 O EE%sT
+-R @ 1918 o - Ap 1 3 1 S
+-R @ 1918 o - S 16 3 0 -
+-R @ 1919 o - Ap 15 3 1 S
+-R @ 1919 o - N 24 3 0 -
+-R @ 1945 o - May 1 23 1 S
+-R @ 1945 o - N 1 0 0 -
+-R @ 1946 o - Mar 31 2s 1 S
+-R @ 1946 1949 - O Sun>=1 2s 0 -
+-R @ 1947 1949 - Ap Sun>=4 2s 1 S
+-R @ 1950 o - Ap 17 2s 1 S
+-R @ 1950 o - O 23 2s 0 -
+-R @ 1954 1955 - May 23 0 1 S
+-R @ 1954 1955 - O 3 0 0 -
+-R @ 1956 o - Jun Sun>=1 0 1 S
+-R @ 1956 o - S lastSun 0 0 -
+-R @ 1957 o - Jun Sun>=1 1 1 S
+-R @ 1957 o - S lastSun 3 0 -
+-R @ 1980 o - Ap 6 1 1 S
++2 g EE%sT 1941 Ap 30
++1 g CE%sT 1944 Ap 4
++2 g EE%sT 1981
++2 E EE%sT
++R h 1918 o - Ap 1 3 1 S
++R h 1918 o - S 16 3 0 -
++R h 1919 o - Ap 15 3 1 S
++R h 1919 o - N 24 3 0 -
++R h 1945 o - May 1 23 1 S
++R h 1945 o - N 1 0 0 -
++R h 1946 o - Mar 31 2s 1 S
++R h 1946 1949 - O Sun>=1 2s 0 -
++R h 1947 1949 - Ap Sun>=4 2s 1 S
++R h 1950 o - Ap 17 2s 1 S
++R h 1950 o - O 23 2s 0 -
++R h 1954 1955 - May 23 0 1 S
++R h 1954 1955 - O 3 0 0 -
++R h 1956 o - Jun Sun>=1 0 1 S
++R h 1956 o - S lastSun 0 0 -
++R h 1957 o - Jun Sun>=1 1 1 S
++R h 1957 o - S lastSun 3 0 -
++R h 1980 o - Ap 6 1 1 S
+ Z Europe/Budapest 1:16:20 - LMT 1890 O
+-1 ( CE%sT 1918
+-1 @ CE%sT 1941 Ap 8
+-1 ( CE%sT 1945
+-1 @ CE%sT 1980 S 28 2s
+-1 O CE%sT
+-R [ 1917 1919 - F 19 23 1 -
+-R [ 1917 o - O 21 1 0 -
+-R [ 1918 1919 - N 16 1 0 -
+-R [ 1921 o - Mar 19 23 1 -
+-R [ 1921 o - Jun 23 1 0 -
+-R [ 1939 o - Ap 29 23 1 -
+-R [ 1939 o - O 29 2 0 -
+-R [ 1940 o - F 25 2 1 -
+-R [ 1940 1941 - N Sun>=2 1s 0 -
+-R [ 1941 1942 - Mar Sun>=2 1s 1 -
+-R [ 1943 1946 - Mar Sun>=1 1s 1 -
+-R [ 1942 1948 - O Sun>=22 1s 0 -
+-R [ 1947 1967 - Ap Sun>=1 1s 1 -
+-R [ 1949 o - O 30 1s 0 -
+-R [ 1950 1966 - O Sun>=22 1s 0 -
+-R [ 1967 o - O 29 1s 0 -
++1 c CE%sT 1918
++1 h CE%sT 1941 Ap 8
++1 c CE%sT 1945
++1 h CE%sT 1980 S 28 2s
++1 E CE%sT
++R w 1917 1919 - F 19 23 1 -
++R w 1917 o - O 21 1 0 -
++R w 1918 1919 - N 16 1 0 -
++R w 1921 o - Mar 19 23 1 -
++R w 1921 o - Jun 23 1 0 -
++R w 1939 o - Ap 29 23 1 -
++R w 1939 o - O 29 2 0 -
++R w 1940 o - F 25 2 1 -
++R w 1940 1941 - N Sun>=2 1s 0 -
++R w 1941 1942 - Mar Sun>=2 1s 1 -
++R w 1943 1946 - Mar Sun>=1 1s 1 -
++R w 1942 1948 - O Sun>=22 1s 0 -
++R w 1947 1967 - Ap Sun>=1 1s 1 -
++R w 1949 o - O 30 1s 0 -
++R w 1950 1966 - O Sun>=22 1s 0 -
++R w 1967 o - O 29 1s 0 -
+ Z Atlantic/Reykjavik -1:28 - LMT 1908
+--1 [ -01/+00 1968 Ap 7 1s
++-1 w -01/+00 1968 Ap 7 1s
+ 0 - GMT
+-R \ 1916 o - Jun 3 24 1 S
+-R \ 1916 1917 - S 30 24 0 -
+-R \ 1917 o - Mar 31 24 1 S
+-R \ 1918 o - Mar 9 24 1 S
+-R \ 1918 o - O 6 24 0 -
+-R \ 1919 o - Mar 1 24 1 S
+-R \ 1919 o - O 4 24 0 -
+-R \ 1920 o - Mar 20 24 1 S
+-R \ 1920 o - S 18 24 0 -
+-R \ 1940 o - Jun 14 24 1 S
+-R \ 1942 o - N 2 2s 0 -
+-R \ 1943 o - Mar 29 2s 1 S
+-R \ 1943 o - O 4 2s 0 -
+-R \ 1944 o - Ap 2 2s 1 S
+-R \ 1944 o - S 17 2s 0 -
+-R \ 1945 o - Ap 2 2 1 S
+-R \ 1945 o - S 15 1 0 -
+-R \ 1946 o - Mar 17 2s 1 S
+-R \ 1946 o - O 6 2s 0 -
+-R \ 1947 o - Mar 16 0s 1 S
+-R \ 1947 o - O 5 0s 0 -
+-R \ 1948 o - F 29 2s 1 S
+-R \ 1948 o - O 3 2s 0 -
+-R \ 1966 1968 - May Sun>=22 0s 1 S
+-R \ 1966 o - S 24 24 0 -
+-R \ 1967 1969 - S Sun>=22 0s 0 -
+-R \ 1969 o - Jun 1 0s 1 S
+-R \ 1970 o - May 31 0s 1 S
+-R \ 1970 o - S lastSun 0s 0 -
+-R \ 1971 1972 - May Sun>=22 0s 1 S
+-R \ 1971 o - S lastSun 0s 0 -
+-R \ 1972 o - O 1 0s 0 -
+-R \ 1973 o - Jun 3 0s 1 S
+-R \ 1973 1974 - S lastSun 0s 0 -
+-R \ 1974 o - May 26 0s 1 S
+-R \ 1975 o - Jun 1 0s 1 S
+-R \ 1975 1977 - S lastSun 0s 0 -
+-R \ 1976 o - May 30 0s 1 S
+-R \ 1977 1979 - May Sun>=22 0s 1 S
+-R \ 1978 o - O 1 0s 0 -
+-R \ 1979 o - S 30 0s 0 -
++R I 1916 o - Jun 3 24 1 S
++R I 1916 1917 - S 30 24 0 -
++R I 1917 o - Mar 31 24 1 S
++R I 1918 o - Mar 9 24 1 S
++R I 1918 o - O 6 24 0 -
++R I 1919 o - Mar 1 24 1 S
++R I 1919 o - O 4 24 0 -
++R I 1920 o - Mar 20 24 1 S
++R I 1920 o - S 18 24 0 -
++R I 1940 o - Jun 14 24 1 S
++R I 1942 o - N 2 2s 0 -
++R I 1943 o - Mar 29 2s 1 S
++R I 1943 o - O 4 2s 0 -
++R I 1944 o - Ap 2 2s 1 S
++R I 1944 o - S 17 2s 0 -
++R I 1945 o - Ap 2 2 1 S
++R I 1945 o - S 15 1 0 -
++R I 1946 o - Mar 17 2s 1 S
++R I 1946 o - O 6 2s 0 -
++R I 1947 o - Mar 16 0s 1 S
++R I 1947 o - O 5 0s 0 -
++R I 1948 o - F 29 2s 1 S
++R I 1948 o - O 3 2s 0 -
++R I 1966 1968 - May Sun>=22 0s 1 S
++R I 1966 o - S 24 24 0 -
++R I 1967 1969 - S Sun>=22 0s 0 -
++R I 1969 o - Jun 1 0s 1 S
++R I 1970 o - May 31 0s 1 S
++R I 1970 o - S lastSun 0s 0 -
++R I 1971 1972 - May Sun>=22 0s 1 S
++R I 1971 o - S lastSun 0s 0 -
++R I 1972 o - O 1 0s 0 -
++R I 1973 o - Jun 3 0s 1 S
++R I 1973 1974 - S lastSun 0s 0 -
++R I 1974 o - May 26 0s 1 S
++R I 1975 o - Jun 1 0s 1 S
++R I 1975 1977 - S lastSun 0s 0 -
++R I 1976 o - May 30 0s 1 S
++R I 1977 1979 - May Sun>=22 0s 1 S
++R I 1978 o - O 1 0s 0 -
++R I 1979 o - S 30 0s 0 -
+ Z Europe/Rome 0:49:56 - LMT 1866 S 22
+ 0:49:56 - RMT 1893 O 31 23:49:56
+-1 \ CE%sT 1943 S 10
+-1 ( CE%sT 1944 Jun 4
+-1 \ CE%sT 1980
+-1 O CE%sT
++1 I CE%sT 1943 S 10
++1 c CE%sT 1944 Jun 4
++1 I CE%sT 1980
++1 E CE%sT
+ Li Europe/Rome Europe/Vatican
+ Li Europe/Rome Europe/San_Marino
+-R ] 1989 1996 - Mar lastSun 2s 1 S
+-R ] 1989 1996 - S lastSun 2s 0 -
++R LV 1989 1996 - Mar lastSun 2s 1 S
++R LV 1989 1996 - S lastSun 2s 0 -
+ Z Europe/Riga 1:36:34 - LMT 1880
+ 1:36:34 - RMT 1918 Ap 15 2
+ 1:36:34 1 LST 1918 S 16 3
+@@ -1883,13 +1907,13 @@ Z Europe/Riga 1:36:34 - LMT 1880
+ 1:36:34 - RMT 1926 May 11
+ 2 - EET 1940 Au 5
+ 3 - MSK 1941 Jul
+-1 ( CE%sT 1944 O 13
+-3 M MSK/MSD 1989 Mar lastSun 2s
++1 c CE%sT 1944 O 13
++3 R MSK/MSD 1989 Mar lastSun 2s
+ 2 1 EEST 1989 S lastSun 2s
+-2 ] EE%sT 1997 Ja 21
+-2 O EE%sT 2000 F 29
++2 LV EE%sT 1997 Ja 21
++2 E EE%sT 2000 F 29
+ 2 - EET 2001 Ja 2
+-2 O EE%sT
++2 E EE%sT
+ Li Europe/Zurich Europe/Vaduz
+ Z Europe/Vilnius 1:41:16 - LMT 1880
+ 1:24 - WMT 1917
+@@ -1898,783 +1922,776 @@ Z Europe/Vilnius 1:41:16 - LMT 1880
+ 2 - EET 1920 O 9
+ 1 - CET 1940 Au 3
+ 3 - MSK 1941 Jun 24
+-1 ( CE%sT 1944 Au
+-3 M MSK/MSD 1989 Mar 26 2s
+-2 M EE%sT 1991 S 29 2s
+-2 ( EE%sT 1998
++1 c CE%sT 1944 Au
++3 R MSK/MSD 1989 Mar 26 2s
++2 R EE%sT 1991 S 29 2s
++2 c EE%sT 1998
+ 2 - EET 1998 Mar 29 1u
+-1 O CE%sT 1999 O 31 1u
++1 E CE%sT 1999 O 31 1u
+ 2 - EET 2003
+-2 O EE%sT
+-R ^ 1916 o - May 14 23 1 S
+-R ^ 1916 o - O 1 1 0 -
+-R ^ 1917 o - Ap 28 23 1 S
+-R ^ 1917 o - S 17 1 0 -
+-R ^ 1918 o - Ap M>=15 2s 1 S
+-R ^ 1918 o - S M>=15 2s 0 -
+-R ^ 1919 o - Mar 1 23 1 S
+-R ^ 1919 o - O 5 3 0 -
+-R ^ 1920 o - F 14 23 1 S
+-R ^ 1920 o - O 24 2 0 -
+-R ^ 1921 o - Mar 14 23 1 S
+-R ^ 1921 o - O 26 2 0 -
+-R ^ 1922 o - Mar 25 23 1 S
+-R ^ 1922 o - O Sun>=2 1 0 -
+-R ^ 1923 o - Ap 21 23 1 S
+-R ^ 1923 o - O Sun>=2 2 0 -
+-R ^ 1924 o - Mar 29 23 1 S
+-R ^ 1924 1928 - O Sun>=2 1 0 -
+-R ^ 1925 o - Ap 5 23 1 S
+-R ^ 1926 o - Ap 17 23 1 S
+-R ^ 1927 o - Ap 9 23 1 S
+-R ^ 1928 o - Ap 14 23 1 S
+-R ^ 1929 o - Ap 20 23 1 S
++2 E EE%sT
++R LX 1916 o - May 14 23 1 S
++R LX 1916 o - O 1 1 0 -
++R LX 1917 o - Ap 28 23 1 S
++R LX 1917 o - S 17 1 0 -
++R LX 1918 o - Ap M>=15 2s 1 S
++R LX 1918 o - S M>=15 2s 0 -
++R LX 1919 o - Mar 1 23 1 S
++R LX 1919 o - O 5 3 0 -
++R LX 1920 o - F 14 23 1 S
++R LX 1920 o - O 24 2 0 -
++R LX 1921 o - Mar 14 23 1 S
++R LX 1921 o - O 26 2 0 -
++R LX 1922 o - Mar 25 23 1 S
++R LX 1922 o - O Sun>=2 1 0 -
++R LX 1923 o - Ap 21 23 1 S
++R LX 1923 o - O Sun>=2 2 0 -
++R LX 1924 o - Mar 29 23 1 S
++R LX 1924 1928 - O Sun>=2 1 0 -
++R LX 1925 o - Ap 5 23 1 S
++R LX 1926 o - Ap 17 23 1 S
++R LX 1927 o - Ap 9 23 1 S
++R LX 1928 o - Ap 14 23 1 S
++R LX 1929 o - Ap 20 23 1 S
+ Z Europe/Luxembourg 0:24:36 - LMT 1904 Jun
+-1 ^ CE%sT 1918 N 25
+-0 ^ WE%sT 1929 O 6 2s
+-0 + WE%sT 1940 May 14 3
+-1 ( WE%sT 1944 S 18 3
+-1 + CE%sT 1977
+-1 O CE%sT
+-R _ 1973 o - Mar 31 0s 1 S
+-R _ 1973 o - S 29 0s 0 -
+-R _ 1974 o - Ap 21 0s 1 S
+-R _ 1974 o - S 16 0s 0 -
+-R _ 1975 1979 - Ap Sun>=15 2 1 S
+-R _ 1975 1980 - S Sun>=15 2 0 -
+-R _ 1980 o - Mar 31 2 1 S
++1 LX CE%sT 1918 N 25
++0 LX WE%sT 1929 O 6 2s
++0 b WE%sT 1940 May 14 3
++1 c WE%sT 1944 S 18 3
++1 b CE%sT 1977
++1 E CE%sT
++R MT 1973 o - Mar 31 0s 1 S
++R MT 1973 o - S 29 0s 0 -
++R MT 1974 o - Ap 21 0s 1 S
++R MT 1974 o - S 16 0s 0 -
++R MT 1975 1979 - Ap Sun>=15 2 1 S
++R MT 1975 1980 - S Sun>=15 2 0 -
++R MT 1980 o - Mar 31 2 1 S
+ Z Europe/Malta 0:58:4 - LMT 1893 N 2 0s
+-1 \ CE%sT 1973 Mar 31
+-1 _ CE%sT 1981
+-1 O CE%sT
+-R ` 1997 ma - Mar lastSun 2 1 S
+-R ` 1997 ma - O lastSun 3 0 -
++1 I CE%sT 1973 Mar 31
++1 MT CE%sT 1981
++1 E CE%sT
++R MD 1997 ma - Mar lastSun 2 1 S
++R MD 1997 ma - O lastSun 3 0 -
+ Z Europe/Chisinau 1:55:20 - LMT 1880
+ 1:55 - CMT 1918 F 15
+ 1:44:24 - BMT 1931 Jul 24
+-2 { EE%sT 1940 Au 15
++2 z EE%sT 1940 Au 15
+ 2 1 EEST 1941 Jul 17
+-1 ( CE%sT 1944 Au 24
+-3 M MSK/MSD 1990 May 6 2
+-2 M EE%sT 1992
+-2 W EE%sT 1997
+-2 ` EE%sT
++1 c CE%sT 1944 Au 24
++3 R MSK/MSD 1990 May 6 2
++2 R EE%sT 1992
++2 e EE%sT 1997
++2 MD EE%sT
+ Z Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+ 0:9:21 - PMT 1911 Mar 11
+-0 < WE%sT 1945 S 16 3
+-1 < CE%sT 1977
+-1 O CE%sT
+-R | 1916 o - May 1 0 1 NST
+-R | 1916 o - O 1 0 0 AMT
+-R | 1917 o - Ap 16 2s 1 NST
+-R | 1917 o - S 17 2s 0 AMT
+-R | 1918 1921 - Ap M>=1 2s 1 NST
+-R | 1918 1921 - S lastM 2s 0 AMT
+-R | 1922 o - Mar lastSun 2s 1 NST
+-R | 1922 1936 - O Sun>=2 2s 0 AMT
+-R | 1923 o - Jun F>=1 2s 1 NST
+-R | 1924 o - Mar lastSun 2s 1 NST
+-R | 1925 o - Jun F>=1 2s 1 NST
+-R | 1926 1931 - May 15 2s 1 NST
+-R | 1932 o - May 22 2s 1 NST
+-R | 1933 1936 - May 15 2s 1 NST
+-R | 1937 o - May 22 2s 1 NST
+-R | 1937 o - Jul 1 0 1 S
+-R | 1937 1939 - O Sun>=2 2s 0 -
+-R | 1938 1939 - May 15 2s 1 S
+-R | 1945 o - Ap 2 2s 1 S
+-R | 1945 o - S 16 2s 0 -
++0 F WE%sT 1945 S 16 3
++1 F CE%sT 1977
++1 E CE%sT
++R N 1916 o - May 1 0 1 NST
++R N 1916 o - O 1 0 0 AMT
++R N 1917 o - Ap 16 2s 1 NST
++R N 1917 o - S 17 2s 0 AMT
++R N 1918 1921 - Ap M>=1 2s 1 NST
++R N 1918 1921 - S lastM 2s 0 AMT
++R N 1922 o - Mar lastSun 2s 1 NST
++R N 1922 1936 - O Sun>=2 2s 0 AMT
++R N 1923 o - Jun F>=1 2s 1 NST
++R N 1924 o - Mar lastSun 2s 1 NST
++R N 1925 o - Jun F>=1 2s 1 NST
++R N 1926 1931 - May 15 2s 1 NST
++R N 1932 o - May 22 2s 1 NST
++R N 1933 1936 - May 15 2s 1 NST
++R N 1937 o - May 22 2s 1 NST
++R N 1937 o - Jul 1 0 1 S
++R N 1937 1939 - O Sun>=2 2s 0 -
++R N 1938 1939 - May 15 2s 1 S
++R N 1945 o - Ap 2 2s 1 S
++R N 1945 o - S 16 2s 0 -
+ Z Europe/Amsterdam 0:19:32 - LMT 1835
+-0:19:32 | %s 1937 Jul
+-0:20 | +0020/+0120 1940 May 16
+-1 ( CE%sT 1945 Ap 2 2
+-1 | CE%sT 1977
+-1 O CE%sT
+-R } 1916 o - May 22 1 1 S
+-R } 1916 o - S 30 0 0 -
+-R } 1945 o - Ap 2 2s 1 S
+-R } 1945 o - O 1 2s 0 -
+-R } 1959 1964 - Mar Sun>=15 2s 1 S
+-R } 1959 1965 - S Sun>=15 2s 0 -
+-R } 1965 o - Ap 25 2s 1 S
++0:19:32 N %s 1937 Jul
++0:20 N +0020/+0120 1940 May 16
++1 c CE%sT 1945 Ap 2 2
++1 N CE%sT 1977
++1 E CE%sT
++R NO 1916 o - May 22 1 1 S
++R NO 1916 o - S 30 0 0 -
++R NO 1945 o - Ap 2 2s 1 S
++R NO 1945 o - O 1 2s 0 -
++R NO 1959 1964 - Mar Sun>=15 2s 1 S
++R NO 1959 1965 - S Sun>=15 2s 0 -
++R NO 1965 o - Ap 25 2s 1 S
+ Z Europe/Oslo 0:43 - LMT 1895
+-1 } CE%sT 1940 Au 10 23
+-1 ( CE%sT 1945 Ap 2 2
+-1 } CE%sT 1980
+-1 O CE%sT
++1 NO CE%sT 1940 Au 10 23
++1 c CE%sT 1945 Ap 2 2
++1 NO CE%sT 1980
++1 E CE%sT
+ Li Europe/Oslo Arctic/Longyearbyen
+-R ~ 1918 1919 - S 16 2s 0 -
+-R ~ 1919 o - Ap 15 2s 1 S
+-R ~ 1944 o - Ap 3 2s 1 S
+-R ~ 1944 o - O 4 2 0 -
+-R ~ 1945 o - Ap 29 0 1 S
+-R ~ 1945 o - N 1 0 0 -
+-R ~ 1946 o - Ap 14 0s 1 S
+-R ~ 1946 o - O 7 2s 0 -
+-R ~ 1947 o - May 4 2s 1 S
+-R ~ 1947 1949 - O Sun>=1 2s 0 -
+-R ~ 1948 o - Ap 18 2s 1 S
+-R ~ 1949 o - Ap 10 2s 1 S
+-R ~ 1957 o - Jun 2 1s 1 S
+-R ~ 1957 1958 - S lastSun 1s 0 -
+-R ~ 1958 o - Mar 30 1s 1 S
+-R ~ 1959 o - May 31 1s 1 S
+-R ~ 1959 1961 - O Sun>=1 1s 0 -
+-R ~ 1960 o - Ap 3 1s 1 S
+-R ~ 1961 1964 - May lastSun 1s 1 S
+-R ~ 1962 1964 - S lastSun 1s 0 -
++R O 1918 1919 - S 16 2s 0 -
++R O 1919 o - Ap 15 2s 1 S
++R O 1944 o - Ap 3 2s 1 S
++R O 1944 o - O 4 2 0 -
++R O 1945 o - Ap 29 0 1 S
++R O 1945 o - N 1 0 0 -
++R O 1946 o - Ap 14 0s 1 S
++R O 1946 o - O 7 2s 0 -
++R O 1947 o - May 4 2s 1 S
++R O 1947 1949 - O Sun>=1 2s 0 -
++R O 1948 o - Ap 18 2s 1 S
++R O 1949 o - Ap 10 2s 1 S
++R O 1957 o - Jun 2 1s 1 S
++R O 1957 1958 - S lastSun 1s 0 -
++R O 1958 o - Mar 30 1s 1 S
++R O 1959 o - May 31 1s 1 S
++R O 1959 1961 - O Sun>=1 1s 0 -
++R O 1960 o - Ap 3 1s 1 S
++R O 1961 1964 - May lastSun 1s 1 S
++R O 1962 1964 - S lastSun 1s 0 -
+ Z Europe/Warsaw 1:24 - LMT 1880
+ 1:24 - WMT 1915 Au 5
+-1 ( CE%sT 1918 S 16 3
+-2 ~ EE%sT 1922 Jun
+-1 ~ CE%sT 1940 Jun 23 2
+-1 ( CE%sT 1944 O
+-1 ~ CE%sT 1977
+-1 ' CE%sT 1988
+-1 O CE%sT
+-R AA 1916 o - Jun 17 23 1 S
+-R AA 1916 o - N 1 1 0 -
+-R AA 1917 o - F 28 23s 1 S
+-R AA 1917 1921 - O 14 23s 0 -
+-R AA 1918 o - Mar 1 23s 1 S
+-R AA 1919 o - F 28 23s 1 S
+-R AA 1920 o - F 29 23s 1 S
+-R AA 1921 o - F 28 23s 1 S
+-R AA 1924 o - Ap 16 23s 1 S
+-R AA 1924 o - O 14 23s 0 -
+-R AA 1926 o - Ap 17 23s 1 S
+-R AA 1926 1929 - O Sat>=1 23s 0 -
+-R AA 1927 o - Ap 9 23s 1 S
+-R AA 1928 o - Ap 14 23s 1 S
+-R AA 1929 o - Ap 20 23s 1 S
+-R AA 1931 o - Ap 18 23s 1 S
+-R AA 1931 1932 - O Sat>=1 23s 0 -
+-R AA 1932 o - Ap 2 23s 1 S
+-R AA 1934 o - Ap 7 23s 1 S
+-R AA 1934 1938 - O Sat>=1 23s 0 -
+-R AA 1935 o - Mar 30 23s 1 S
+-R AA 1936 o - Ap 18 23s 1 S
+-R AA 1937 o - Ap 3 23s 1 S
+-R AA 1938 o - Mar 26 23s 1 S
+-R AA 1939 o - Ap 15 23s 1 S
+-R AA 1939 o - N 18 23s 0 -
+-R AA 1940 o - F 24 23s 1 S
+-R AA 1940 1941 - O 5 23s 0 -
+-R AA 1941 o - Ap 5 23s 1 S
+-R AA 1942 1945 - Mar Sat>=8 23s 1 S
+-R AA 1942 o - Ap 25 22s 2 M
+-R AA 1942 o - Au 15 22s 1 S
+-R AA 1942 1945 - O Sat>=24 23s 0 -
+-R AA 1943 o - Ap 17 22s 2 M
+-R AA 1943 1945 - Au Sat>=25 22s 1 S
+-R AA 1944 1945 - Ap Sat>=21 22s 2 M
+-R AA 1946 o - Ap Sat>=1 23s 1 S
+-R AA 1946 o - O Sat>=1 23s 0 -
+-R AA 1947 1949 - Ap Sun>=1 2s 1 S
+-R AA 1947 1949 - O Sun>=1 2s 0 -
+-R AA 1951 1965 - Ap Sun>=1 2s 1 S
+-R AA 1951 1965 - O Sun>=1 2s 0 -
+-R AA 1977 o - Mar 27 0s 1 S
+-R AA 1977 o - S 25 0s 0 -
+-R AA 1978 1979 - Ap Sun>=1 0s 1 S
+-R AA 1978 o - O 1 0s 0 -
+-R AA 1979 1982 - S lastSun 1s 0 -
+-R AA 1980 o - Mar lastSun 0s 1 S
+-R AA 1981 1982 - Mar lastSun 1s 1 S
+-R AA 1983 o - Mar lastSun 2s 1 S
++1 c CE%sT 1918 S 16 3
++2 O EE%sT 1922 Jun
++1 O CE%sT 1940 Jun 23 2
++1 c CE%sT 1944 O
++1 O CE%sT 1977
++1 W- CE%sT 1988
++1 E CE%sT
++R p 1916 o - Jun 17 23 1 S
++R p 1916 o - N 1 1 0 -
++R p 1917 o - F 28 23s 1 S
++R p 1917 1921 - O 14 23s 0 -
++R p 1918 o - Mar 1 23s 1 S
++R p 1919 o - F 28 23s 1 S
++R p 1920 o - F 29 23s 1 S
++R p 1921 o - F 28 23s 1 S
++R p 1924 o - Ap 16 23s 1 S
++R p 1924 o - O 14 23s 0 -
++R p 1926 o - Ap 17 23s 1 S
++R p 1926 1929 - O Sat>=1 23s 0 -
++R p 1927 o - Ap 9 23s 1 S
++R p 1928 o - Ap 14 23s 1 S
++R p 1929 o - Ap 20 23s 1 S
++R p 1931 o - Ap 18 23s 1 S
++R p 1931 1932 - O Sat>=1 23s 0 -
++R p 1932 o - Ap 2 23s 1 S
++R p 1934 o - Ap 7 23s 1 S
++R p 1934 1938 - O Sat>=1 23s 0 -
++R p 1935 o - Mar 30 23s 1 S
++R p 1936 o - Ap 18 23s 1 S
++R p 1937 o - Ap 3 23s 1 S
++R p 1938 o - Mar 26 23s 1 S
++R p 1939 o - Ap 15 23s 1 S
++R p 1939 o - N 18 23s 0 -
++R p 1940 o - F 24 23s 1 S
++R p 1940 1941 - O 5 23s 0 -
++R p 1941 o - Ap 5 23s 1 S
++R p 1942 1945 - Mar Sat>=8 23s 1 S
++R p 1942 o - Ap 25 22s 2 M
++R p 1942 o - Au 15 22s 1 S
++R p 1942 1945 - O Sat>=24 23s 0 -
++R p 1943 o - Ap 17 22s 2 M
++R p 1943 1945 - Au Sat>=25 22s 1 S
++R p 1944 1945 - Ap Sat>=21 22s 2 M
++R p 1946 o - Ap Sat>=1 23s 1 S
++R p 1946 o - O Sat>=1 23s 0 -
++R p 1947 1949 - Ap Sun>=1 2s 1 S
++R p 1947 1949 - O Sun>=1 2s 0 -
++R p 1951 1965 - Ap Sun>=1 2s 1 S
++R p 1951 1965 - O Sun>=1 2s 0 -
++R p 1977 o - Mar 27 0s 1 S
++R p 1977 o - S 25 0s 0 -
++R p 1978 1979 - Ap Sun>=1 0s 1 S
++R p 1978 o - O 1 0s 0 -
++R p 1979 1982 - S lastSun 1s 0 -
++R p 1980 o - Mar lastSun 0s 1 S
++R p 1981 1982 - Mar lastSun 1s 1 S
++R p 1983 o - Mar lastSun 2s 1 S
+ Z Europe/Lisbon -0:36:45 - LMT 1884
+ -0:36:45 - LMT 1912 Ja 1 0u
+-0 AA WE%sT 1966 Ap 3 2
++0 p WE%sT 1966 Ap 3 2
+ 1 - CET 1976 S 26 1
+-0 AA WE%sT 1983 S 25 1s
+-0 ' WE%sT 1992 S 27 1s
+-1 O CE%sT 1996 Mar 31 1u
+-0 O WE%sT
++0 p WE%sT 1983 S 25 1s
++0 W- WE%sT 1992 S 27 1s
++1 E CE%sT 1996 Mar 31 1u
++0 E WE%sT
+ Z Atlantic/Azores -1:42:40 - LMT 1884
+ -1:54:32 - HMT 1912 Ja 1 2u
+--2 AA -02/-01 1942 Ap 25 22s
+--2 AA +00 1942 Au 15 22s
+--2 AA -02/-01 1943 Ap 17 22s
+--2 AA +00 1943 Au 28 22s
+--2 AA -02/-01 1944 Ap 22 22s
+--2 AA +00 1944 Au 26 22s
+--2 AA -02/-01 1945 Ap 21 22s
+--2 AA +00 1945 Au 25 22s
+--2 AA -02/-01 1966 Ap 3 2
+--1 AA -01/+00 1983 S 25 1s
+--1 ' -01/+00 1992 S 27 1s
+-0 O WE%sT 1993 Mar 28 1u
+--1 O -01/+00
++-2 p -02/-01 1942 Ap 25 22s
++-2 p +00 1942 Au 15 22s
++-2 p -02/-01 1943 Ap 17 22s
++-2 p +00 1943 Au 28 22s
++-2 p -02/-01 1944 Ap 22 22s
++-2 p +00 1944 Au 26 22s
++-2 p -02/-01 1945 Ap 21 22s
++-2 p +00 1945 Au 25 22s
++-2 p -02/-01 1966 Ap 3 2
++-1 p -01/+00 1983 S 25 1s
++-1 W- -01/+00 1992 S 27 1s
++0 E WE%sT 1993 Mar 28 1u
++-1 E -01/+00
+ Z Atlantic/Madeira -1:7:36 - LMT 1884
+ -1:7:36 - FMT 1912 Ja 1 1u
+--1 AA -01/+00 1942 Ap 25 22s
+--1 AA +01 1942 Au 15 22s
+--1 AA -01/+00 1943 Ap 17 22s
+--1 AA +01 1943 Au 28 22s
+--1 AA -01/+00 1944 Ap 22 22s
+--1 AA +01 1944 Au 26 22s
+--1 AA -01/+00 1945 Ap 21 22s
+--1 AA +01 1945 Au 25 22s
+--1 AA -01/+00 1966 Ap 3 2
+-0 AA WE%sT 1983 S 25 1s
+-0 O WE%sT
+-R { 1932 o - May 21 0s 1 S
+-R { 1932 1939 - O Sun>=1 0s 0 -
+-R { 1933 1939 - Ap Sun>=2 0s 1 S
+-R { 1979 o - May 27 0 1 S
+-R { 1979 o - S lastSun 0 0 -
+-R { 1980 o - Ap 5 23 1 S
+-R { 1980 o - S lastSun 1 0 -
+-R { 1991 1993 - Mar lastSun 0s 1 S
+-R { 1991 1993 - S lastSun 0s 0 -
++-1 p -01/+00 1942 Ap 25 22s
++-1 p +01 1942 Au 15 22s
++-1 p -01/+00 1943 Ap 17 22s
++-1 p +01 1943 Au 28 22s
++-1 p -01/+00 1944 Ap 22 22s
++-1 p +01 1944 Au 26 22s
++-1 p -01/+00 1945 Ap 21 22s
++-1 p +01 1945 Au 25 22s
++-1 p -01/+00 1966 Ap 3 2
++0 p WE%sT 1983 S 25 1s
++0 E WE%sT
++R z 1932 o - May 21 0s 1 S
++R z 1932 1939 - O Sun>=1 0s 0 -
++R z 1933 1939 - Ap Sun>=2 0s 1 S
++R z 1979 o - May 27 0 1 S
++R z 1979 o - S lastSun 0 0 -
++R z 1980 o - Ap 5 23 1 S
++R z 1980 o - S lastSun 1 0 -
++R z 1991 1993 - Mar lastSun 0s 1 S
++R z 1991 1993 - S lastSun 0s 0 -
+ Z Europe/Bucharest 1:44:24 - LMT 1891 O
+ 1:44:24 - BMT 1931 Jul 24
+-2 { EE%sT 1981 Mar 29 2s
+-2 ( EE%sT 1991
+-2 { EE%sT 1994
+-2 W EE%sT 1997
+-2 O EE%sT
++2 z EE%sT 1981 Mar 29 2s
++2 c EE%sT 1991
++2 z EE%sT 1994
++2 e EE%sT 1997
++2 E EE%sT
+ Z Europe/Kaliningrad 1:22 - LMT 1893 Ap
+-1 ( CE%sT 1945
+-2 ~ CE%sT 1946
+-3 M MSK/MSD 1989 Mar 26 2s
+-2 M EE%sT 2011 Mar 27 2s
++1 c CE%sT 1945
++2 O CE%sT 1946
++3 R MSK/MSD 1989 Mar 26 2s
++2 R EE%sT 2011 Mar 27 2s
+ 3 - +03 2014 O 26 2s
+ 2 - EET
+ Z Europe/Moscow 2:30:17 - LMT 1880
+ 2:30:17 - MMT 1916 Jul 3
+-2:31:19 M %s 1919 Jul 1 0u
+-3 M %s 1921 O
+-3 M MSK/MSD 1922 O
++2:31:19 R %s 1919 Jul 1 0u
++3 R %s 1921 O
++3 R MSK/MSD 1922 O
+ 2 - EET 1930 Jun 21
+-3 M MSK/MSD 1991 Mar 31 2s
+-2 M EE%sT 1992 Ja 19 2s
+-3 M MSK/MSD 2011 Mar 27 2s
++3 R MSK/MSD 1991 Mar 31 2s
++2 R EE%sT 1992 Ja 19 2s
++3 R MSK/MSD 2011 Mar 27 2s
+ 4 - MSK 2014 O 26 2s
+ 3 - MSK
+ Z Europe/Simferopol 2:16:24 - LMT 1880
+ 2:16 - SMT 1924 May 2
+ 2 - EET 1930 Jun 21
+ 3 - MSK 1941 N
+-1 ( CE%sT 1944 Ap 13
+-3 M MSK/MSD 1990
++1 c CE%sT 1944 Ap 13
++3 R MSK/MSD 1990
+ 3 - MSK 1990 Jul 1 2
+ 2 - EET 1992
+-2 W EE%sT 1994 May
+-3 W MSK/MSD 1996 Mar 31 0s
++2 e EE%sT 1994 May
++3 e MSK/MSD 1996 Mar 31 0s
+ 3 1 MSD 1996 O 27 3s
+-3 M MSK/MSD 1997
++3 R MSK/MSD 1997
+ 3 - MSK 1997 Mar lastSun 1u
+-2 O EE%sT 2014 Mar 30 2
++2 E EE%sT 2014 Mar 30 2
+ 4 - MSK 2014 O 26 2s
+ 3 - MSK
+ Z Europe/Astrakhan 3:12:12 - LMT 1924 May
+ 3 - +03 1930 Jun 21
+-4 M +04/+05 1989 Mar 26 2s
+-3 M +03/+04 1991 Mar 31 2s
++4 R +04/+05 1989 Mar 26 2s
++3 R +03/+04 1991 Mar 31 2s
+ 4 - +04 1992 Mar 29 2s
+-3 M +03/+04 2011 Mar 27 2s
++3 R +03/+04 2011 Mar 27 2s
+ 4 - +04 2014 O 26 2s
+ 3 - +03 2016 Mar 27 2s
+ 4 - +04
+ Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3
+ 3 - +03 1930 Jun 21
+ 4 - +04 1961 N 11
+-4 M +04/+05 1988 Mar 27 2s
+-3 M +03/+04 1991 Mar 31 2s
++4 R +04/+05 1988 Mar 27 2s
++3 R +03/+04 1991 Mar 31 2s
+ 4 - +04 1992 Mar 29 2s
+-3 M +03/+04 2011 Mar 27 2s
++3 R +03/+04 2011 Mar 27 2s
+ 4 - +04 2014 O 26 2s
+-3 - +03
++3 - +03 2018 O 28 2s
++4 - +04
+ Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u
+ 3 - +03 1930 Jun 21
+-4 M +04/+05 1988 Mar 27 2s
+-3 M +03/+04 1991 Mar 31 2s
++4 R +04/+05 1988 Mar 27 2s
++3 R +03/+04 1991 Mar 31 2s
+ 4 - +04 1992 Mar 29 2s
+-3 M +03/+04 2011 Mar 27 2s
++3 R +03/+04 2011 Mar 27 2s
+ 4 - +04 2014 O 26 2s
+ 3 - +03 2016 D 4 2s
+ 4 - +04
+ Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u
+ 3 - +03 1930 Jun 21
+-4 M +04/+05 1989 Mar 26 2s
+-3 M +03/+04 1991 Mar 31 2s
++4 R +04/+05 1989 Mar 26 2s
++3 R +03/+04 1991 Mar 31 2s
+ 4 - +04 1992 Mar 29 2s
+-3 M +03/+04 2011 Mar 27 2s
++3 R +03/+04 2011 Mar 27 2s
+ 4 - +04 2014 O 26 2s
+ 3 - +03
+ Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u
+ 3 - +03 1930 Jun 21
+ 4 - +04 1935 Ja 27
+-4 M +04/+05 1989 Mar 26 2s
+-3 M +03/+04 1991 Mar 31 2s
+-2 M +02/+03 1991 S 29 2s
++4 R +04/+05 1989 Mar 26 2s
++3 R +03/+04 1991 Mar 31 2s
++2 R +02/+03 1991 S 29 2s
+ 3 - +03 1991 O 20 3
+-4 M +04/+05 2010 Mar 28 2s
+-3 M +03/+04 2011 Mar 27 2s
++4 R +04/+05 2010 Mar 28 2s
++3 R +03/+04 2011 Mar 27 2s
+ 4 - +04
+ Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u
+ 3 - +03 1930 Jun 21
+-4 M +04/+05 1989 Mar 26 2s
+-3 M +03/+04 1991 Mar 31 2s
+-2 M +02/+03 1992 Ja 19 2s
+-3 M +03/+04 2011 Mar 27 2s
++4 R +04/+05 1989 Mar 26 2s
++3 R +03/+04 1991 Mar 31 2s
++2 R +02/+03 1992 Ja 19 2s
++3 R +03/+04 2011 Mar 27 2s
+ 4 - +04 2014 O 26 2s
+ 3 - +03 2016 Mar 27 2s
+ 4 - +04
+ Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3
+ 3:45:5 - PMT 1919 Jul 15 4
+ 4 - +04 1930 Jun 21
+-5 M +05/+06 1991 Mar 31 2s
+-4 M +04/+05 1992 Ja 19 2s
+-5 M +05/+06 2011 Mar 27 2s
++5 R +05/+06 1991 Mar 31 2s
++4 R +04/+05 1992 Ja 19 2s
++5 R +05/+06 2011 Mar 27 2s
+ 6 - +06 2014 O 26 2s
+ 5 - +05
+ Z Asia/Omsk 4:53:30 - LMT 1919 N 14
+ 5 - +05 1930 Jun 21
+-6 M +06/+07 1991 Mar 31 2s
+-5 M +05/+06 1992 Ja 19 2s
+-6 M +06/+07 2011 Mar 27 2s
++6 R +06/+07 1991 Mar 31 2s
++5 R +05/+06 1992 Ja 19 2s
++6 R +06/+07 2011 Mar 27 2s
+ 7 - +07 2014 O 26 2s
+ 6 - +06
+ Z Asia/Barnaul 5:35 - LMT 1919 D 10
+ 6 - +06 1930 Jun 21
+-7 M +07/+08 1991 Mar 31 2s
+-6 M +06/+07 1992 Ja 19 2s
+-7 M +07/+08 1995 May 28
+-6 M +06/+07 2011 Mar 27 2s
++7 R +07/+08 1991 Mar 31 2s
++6 R +06/+07 1992 Ja 19 2s
++7 R +07/+08 1995 May 28
++6 R +06/+07 2011 Mar 27 2s
+ 7 - +07 2014 O 26 2s
+ 6 - +06 2016 Mar 27 2s
+ 7 - +07
+ Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6
+ 6 - +06 1930 Jun 21
+-7 M +07/+08 1991 Mar 31 2s
+-6 M +06/+07 1992 Ja 19 2s
+-7 M +07/+08 1993 May 23
+-6 M +06/+07 2011 Mar 27 2s
++7 R +07/+08 1991 Mar 31 2s
++6 R +06/+07 1992 Ja 19 2s
++7 R +07/+08 1993 May 23
++6 R +06/+07 2011 Mar 27 2s
+ 7 - +07 2014 O 26 2s
+ 6 - +06 2016 Jul 24 2s
+ 7 - +07
+ Z Asia/Tomsk 5:39:51 - LMT 1919 D 22
+ 6 - +06 1930 Jun 21
+-7 M +07/+08 1991 Mar 31 2s
+-6 M +06/+07 1992 Ja 19 2s
+-7 M +07/+08 2002 May 1 3
+-6 M +06/+07 2011 Mar 27 2s
++7 R +07/+08 1991 Mar 31 2s
++6 R +06/+07 1992 Ja 19 2s
++7 R +07/+08 2002 May 1 3
++6 R +06/+07 2011 Mar 27 2s
+ 7 - +07 2014 O 26 2s
+ 6 - +06 2016 May 29 2s
+ 7 - +07
+ Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May
+ 6 - +06 1930 Jun 21
+-7 M +07/+08 1991 Mar 31 2s
+-6 M +06/+07 1992 Ja 19 2s
+-7 M +07/+08 2010 Mar 28 2s
+-6 M +06/+07 2011 Mar 27 2s
++7 R +07/+08 1991 Mar 31 2s
++6 R +06/+07 1992 Ja 19 2s
++7 R +07/+08 2010 Mar 28 2s
++6 R +06/+07 2011 Mar 27 2s
+ 7 - +07
+ Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6
+ 6 - +06 1930 Jun 21
+-7 M +07/+08 1991 Mar 31 2s
+-6 M +06/+07 1992 Ja 19 2s
+-7 M +07/+08 2011 Mar 27 2s
++7 R +07/+08 1991 Mar 31 2s
++6 R +06/+07 1992 Ja 19 2s
++7 R +07/+08 2011 Mar 27 2s
+ 8 - +08 2014 O 26 2s
+ 7 - +07
+ Z Asia/Irkutsk 6:57:5 - LMT 1880
+ 6:57:5 - IMT 1920 Ja 25
+ 7 - +07 1930 Jun 21
+-8 M +08/+09 1991 Mar 31 2s
+-7 M +07/+08 1992 Ja 19 2s
+-8 M +08/+09 2011 Mar 27 2s
++8 R +08/+09 1991 Mar 31 2s
++7 R +07/+08 1992 Ja 19 2s
++8 R +08/+09 2011 Mar 27 2s
+ 9 - +09 2014 O 26 2s
+ 8 - +08
+ Z Asia/Chita 7:33:52 - LMT 1919 D 15
+ 8 - +08 1930 Jun 21
+-9 M +09/+10 1991 Mar 31 2s
+-8 M +08/+09 1992 Ja 19 2s
+-9 M +09/+10 2011 Mar 27 2s
++9 R +09/+10 1991 Mar 31 2s
++8 R +08/+09 1992 Ja 19 2s
++9 R +09/+10 2011 Mar 27 2s
+ 10 - +10 2014 O 26 2s
+ 8 - +08 2016 Mar 27 2
+ 9 - +09
+ Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15
+ 8 - +08 1930 Jun 21
+-9 M +09/+10 1991 Mar 31 2s
+-8 M +08/+09 1992 Ja 19 2s
+-9 M +09/+10 2011 Mar 27 2s
++9 R +09/+10 1991 Mar 31 2s
++8 R +08/+09 1992 Ja 19 2s
++9 R +09/+10 2011 Mar 27 2s
+ 10 - +10 2014 O 26 2s
+ 9 - +09
+ Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15
+ 9 - +09 1930 Jun 21
+-10 M +10/+11 1991 Mar 31 2s
+-9 M +09/+10 1992 Ja 19 2s
+-10 M +10/+11 2011 Mar 27 2s
++10 R +10/+11 1991 Mar 31 2s
++9 R +09/+10 1992 Ja 19 2s
++10 R +10/+11 2011 Mar 27 2s
+ 11 - +11 2014 O 26 2s
+ 10 - +10
+ Z Asia/Khandyga 9:2:13 - LMT 1919 D 15
+ 8 - +08 1930 Jun 21
+-9 M +09/+10 1991 Mar 31 2s
+-8 M +08/+09 1992 Ja 19 2s
+-9 M +09/+10 2004
+-10 M +10/+11 2011 Mar 27 2s
++9 R +09/+10 1991 Mar 31 2s
++8 R +08/+09 1992 Ja 19 2s
++9 R +09/+10 2004
++10 R +10/+11 2011 Mar 27 2s
+ 11 - +11 2011 S 13 0s
+ 10 - +10 2014 O 26 2s
+ 9 - +09
+ Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23
+ 9 - +09 1945 Au 25
+-11 M +11/+12 1991 Mar 31 2s
+-10 M +10/+11 1992 Ja 19 2s
+-11 M +11/+12 1997 Mar lastSun 2s
+-10 M +10/+11 2011 Mar 27 2s
++11 R +11/+12 1991 Mar 31 2s
++10 R +10/+11 1992 Ja 19 2s
++11 R +11/+12 1997 Mar lastSun 2s
++10 R +10/+11 2011 Mar 27 2s
+ 11 - +11 2014 O 26 2s
+ 10 - +10 2016 Mar 27 2s
+ 11 - +11
+ Z Asia/Magadan 10:3:12 - LMT 1924 May 2
+ 10 - +10 1930 Jun 21
+-11 M +11/+12 1991 Mar 31 2s
+-10 M +10/+11 1992 Ja 19 2s
+-11 M +11/+12 2011 Mar 27 2s
++11 R +11/+12 1991 Mar 31 2s
++10 R +10/+11 1992 Ja 19 2s
++11 R +11/+12 2011 Mar 27 2s
+ 12 - +12 2014 O 26 2s
+ 10 - +10 2016 Ap 24 2s
+ 11 - +11
+ Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2
+ 10 - +10 1930 Jun 21
+-11 M +11/+12 1991 Mar 31 2s
+-10 M +10/+11 1992 Ja 19 2s
+-11 M +11/+12 2011 Mar 27 2s
++11 R +11/+12 1991 Mar 31 2s
++10 R +10/+11 1992 Ja 19 2s
++11 R +11/+12 2011 Mar 27 2s
+ 12 - +12 2014 O 26 2s
+ 11 - +11
+ Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15
+ 8 - +08 1930 Jun 21
+-9 M +09/+10 1981 Ap
+-11 M +11/+12 1991 Mar 31 2s
+-10 M +10/+11 1992 Ja 19 2s
+-11 M +11/+12 2011 Mar 27 2s
++9 R +09/+10 1981 Ap
++11 R +11/+12 1991 Mar 31 2s
++10 R +10/+11 1992 Ja 19 2s
++11 R +11/+12 2011 Mar 27 2s
+ 12 - +12 2011 S 13 0s
+ 11 - +11 2014 O 26 2s
+ 10 - +10
+ Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10
+ 11 - +11 1930 Jun 21
+-12 M +12/+13 1991 Mar 31 2s
+-11 M +11/+12 1992 Ja 19 2s
+-12 M +12/+13 2010 Mar 28 2s
+-11 M +11/+12 2011 Mar 27 2s
++12 R +12/+13 1991 Mar 31 2s
++11 R +11/+12 1992 Ja 19 2s
++12 R +12/+13 2010 Mar 28 2s
++11 R +11/+12 2011 Mar 27 2s
+ 12 - +12
+ Z Asia/Anadyr 11:49:56 - LMT 1924 May 2
+ 12 - +12 1930 Jun 21
+-13 M +13/+14 1982 Ap 1 0s
+-12 M +12/+13 1991 Mar 31 2s
+-11 M +11/+12 1992 Ja 19 2s
+-12 M +12/+13 2010 Mar 28 2s
+-11 M +11/+12 2011 Mar 27 2s
++13 R +13/+14 1982 Ap 1 0s
++12 R +12/+13 1991 Mar 31 2s
++11 R +11/+12 1992 Ja 19 2s
++12 R +12/+13 2010 Mar 28 2s
++11 R +11/+12 2011 Mar 27 2s
+ 12 - +12
+ Z Europe/Belgrade 1:22 - LMT 1884
+ 1 - CET 1941 Ap 18 23
+-1 ( CE%sT 1945
++1 c CE%sT 1945
+ 1 - CET 1945 May 8 2s
+ 1 1 CEST 1945 S 16 2s
+ 1 - CET 1982 N 27
+-1 O CE%sT
++1 E CE%sT
+ Li Europe/Belgrade Europe/Ljubljana
+ Li Europe/Belgrade Europe/Podgorica
+ Li Europe/Belgrade Europe/Sarajevo
+ Li Europe/Belgrade Europe/Skopje
+ Li Europe/Belgrade Europe/Zagreb
+ Li Europe/Prague Europe/Bratislava
+-R AB 1918 o - Ap 15 23 1 S
+-R AB 1918 1919 - O 6 24s 0 -
+-R AB 1919 o - Ap 6 23 1 S
+-R AB 1924 o - Ap 16 23 1 S
+-R AB 1924 o - O 4 24s 0 -
+-R AB 1926 o - Ap 17 23 1 S
+-R AB 1926 1929 - O Sat>=1 24s 0 -
+-R AB 1927 o - Ap 9 23 1 S
+-R AB 1928 o - Ap 15 0 1 S
+-R AB 1929 o - Ap 20 23 1 S
+-R AB 1937 o - Jun 16 23 1 S
+-R AB 1937 o - O 2 24s 0 -
+-R AB 1938 o - Ap 2 23 1 S
+-R AB 1938 o - Ap 30 23 2 M
+-R AB 1938 o - O 2 24 1 S
+-R AB 1939 o - O 7 24s 0 -
+-R AB 1942 o - May 2 23 1 S
+-R AB 1942 o - S 1 1 0 -
+-R AB 1943 1946 - Ap Sat>=13 23 1 S
+-R AB 1943 1944 - O Sun>=1 1 0 -
+-R AB 1945 1946 - S lastSun 1 0 -
+-R AB 1949 o - Ap 30 23 1 S
+-R AB 1949 o - O 2 1 0 -
+-R AB 1974 1975 - Ap Sat>=12 23 1 S
+-R AB 1974 1975 - O Sun>=1 1 0 -
+-R AB 1976 o - Mar 27 23 1 S
+-R AB 1976 1977 - S lastSun 1 0 -
+-R AB 1977 o - Ap 2 23 1 S
+-R AB 1978 o - Ap 2 2s 1 S
+-R AB 1978 o - O 1 2s 0 -
+-R AC 1967 o - Jun 3 12 1 S
+-R AC 1967 o - O 1 0 0 -
+-R AC 1974 o - Jun 24 0 1 S
+-R AC 1974 o - S 1 0 0 -
+-R AC 1976 1977 - May 1 0 1 S
+-R AC 1976 o - Au 1 0 0 -
+-R AC 1977 o - S 28 0 0 -
+-R AC 1978 o - Jun 1 0 1 S
+-R AC 1978 o - Au 4 0 0 -
++R s 1918 o - Ap 15 23 1 S
++R s 1918 1919 - O 6 24s 0 -
++R s 1919 o - Ap 6 23 1 S
++R s 1924 o - Ap 16 23 1 S
++R s 1924 o - O 4 24s 0 -
++R s 1926 o - Ap 17 23 1 S
++R s 1926 1929 - O Sat>=1 24s 0 -
++R s 1927 o - Ap 9 23 1 S
++R s 1928 o - Ap 15 0 1 S
++R s 1929 o - Ap 20 23 1 S
++R s 1937 o - Jun 16 23 1 S
++R s 1937 o - O 2 24s 0 -
++R s 1938 o - Ap 2 23 1 S
++R s 1938 o - Ap 30 23 2 M
++R s 1938 o - O 2 24 1 S
++R s 1939 o - O 7 24s 0 -
++R s 1942 o - May 2 23 1 S
++R s 1942 o - S 1 1 0 -
++R s 1943 1946 - Ap Sat>=13 23 1 S
++R s 1943 1944 - O Sun>=1 1 0 -
++R s 1945 1946 - S lastSun 1 0 -
++R s 1949 o - Ap 30 23 1 S
++R s 1949 o - O 2 1 0 -
++R s 1974 1975 - Ap Sat>=12 23 1 S
++R s 1974 1975 - O Sun>=1 1 0 -
++R s 1976 o - Mar 27 23 1 S
++R s 1976 1977 - S lastSun 1 0 -
++R s 1977 o - Ap 2 23 1 S
++R s 1978 o - Ap 2 2s 1 S
++R s 1978 o - O 1 2s 0 -
+ Z Europe/Madrid -0:14:44 - LMT 1900 D 31 23:45:16
+-0 AB WE%sT 1940 Mar 16 23
+-1 AB CE%sT 1979
+-1 O CE%sT
++0 s WE%sT 1940 Mar 16 23
++1 s CE%sT 1979
++1 E CE%sT
+ Z Africa/Ceuta -0:21:16 - LMT 1900 D 31 23:38:44
+ 0 - WET 1918 May 6 23
+ 0 1 WEST 1918 O 7 23
+ 0 - WET 1924
+-0 AB WE%sT 1929
+-0 AC WE%sT 1984 Mar 16
++0 s WE%sT 1929
++0 - WET 1967
++0 M WE%sT 1984 Mar 16
+ 1 - CET 1986
+-1 O CE%sT
++1 E CE%sT
+ Z Atlantic/Canary -1:1:36 - LMT 1922 Mar
+ -1 - -01 1946 S 30 1
+ 0 - WET 1980 Ap 6 0s
+ 0 1 WEST 1980 S 28 1u
+-0 O WE%sT
++0 E WE%sT
+ Z Europe/Stockholm 1:12:12 - LMT 1879
+ 1:0:14 - SET 1900
+ 1 - CET 1916 May 14 23
+ 1 1 CEST 1916 O 1 1
+ 1 - CET 1980
+-1 O CE%sT
+-R AD 1941 1942 - May M>=1 1 1 S
+-R AD 1941 1942 - O M>=1 2 0 -
++1 E CE%sT
++R CH 1941 1942 - May M>=1 1 1 S
++R CH 1941 1942 - O M>=1 2 0 -
+ Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16
+ 0:29:46 - BMT 1894 Jun
+-1 AD CE%sT 1981
+-1 O CE%sT
+-R AE 1916 o - May 1 0 1 S
+-R AE 1916 o - O 1 0 0 -
+-R AE 1920 o - Mar 28 0 1 S
+-R AE 1920 o - O 25 0 0 -
+-R AE 1921 o - Ap 3 0 1 S
+-R AE 1921 o - O 3 0 0 -
+-R AE 1922 o - Mar 26 0 1 S
+-R AE 1922 o - O 8 0 0 -
+-R AE 1924 o - May 13 0 1 S
+-R AE 1924 1925 - O 1 0 0 -
+-R AE 1925 o - May 1 0 1 S
+-R AE 1940 o - Jun 30 0 1 S
+-R AE 1940 o - O 5 0 0 -
+-R AE 1940 o - D 1 0 1 S
+-R AE 1941 o - S 21 0 0 -
+-R AE 1942 o - Ap 1 0 1 S
+-R AE 1942 o - N 1 0 0 -
+-R AE 1945 o - Ap 2 0 1 S
+-R AE 1945 o - O 8 0 0 -
+-R AE 1946 o - Jun 1 0 1 S
+-R AE 1946 o - O 1 0 0 -
+-R AE 1947 1948 - Ap Sun>=16 0 1 S
+-R AE 1947 1950 - O Sun>=2 0 0 -
+-R AE 1949 o - Ap 10 0 1 S
+-R AE 1950 o - Ap 19 0 1 S
+-R AE 1951 o - Ap 22 0 1 S
+-R AE 1951 o - O 8 0 0 -
+-R AE 1962 o - Jul 15 0 1 S
+-R AE 1962 o - O 8 0 0 -
+-R AE 1964 o - May 15 0 1 S
+-R AE 1964 o - O 1 0 0 -
+-R AE 1970 1972 - May Sun>=2 0 1 S
+-R AE 1970 1972 - O Sun>=2 0 0 -
+-R AE 1973 o - Jun 3 1 1 S
+-R AE 1973 o - N 4 3 0 -
+-R AE 1974 o - Mar 31 2 1 S
+-R AE 1974 o - N 3 5 0 -
+-R AE 1975 o - Mar 30 0 1 S
+-R AE 1975 1976 - O lastSun 0 0 -
+-R AE 1976 o - Jun 1 0 1 S
+-R AE 1977 1978 - Ap Sun>=1 0 1 S
+-R AE 1977 o - O 16 0 0 -
+-R AE 1979 1980 - Ap Sun>=1 3 1 S
+-R AE 1979 1982 - O M>=11 0 0 -
+-R AE 1981 1982 - Mar lastSun 3 1 S
+-R AE 1983 o - Jul 31 0 1 S
+-R AE 1983 o - O 2 0 0 -
+-R AE 1985 o - Ap 20 0 1 S
+-R AE 1985 o - S 28 0 0 -
+-R AE 1986 1993 - Mar lastSun 1s 1 S
+-R AE 1986 1995 - S lastSun 1s 0 -
+-R AE 1994 o - Mar 20 1s 1 S
+-R AE 1995 2006 - Mar lastSun 1s 1 S
+-R AE 1996 2006 - O lastSun 1s 0 -
++1 CH CE%sT 1981
++1 E CE%sT
++R T 1916 o - May 1 0 1 S
++R T 1916 o - O 1 0 0 -
++R T 1920 o - Mar 28 0 1 S
++R T 1920 o - O 25 0 0 -
++R T 1921 o - Ap 3 0 1 S
++R T 1921 o - O 3 0 0 -
++R T 1922 o - Mar 26 0 1 S
++R T 1922 o - O 8 0 0 -
++R T 1924 o - May 13 0 1 S
++R T 1924 1925 - O 1 0 0 -
++R T 1925 o - May 1 0 1 S
++R T 1940 o - Jun 30 0 1 S
++R T 1940 o - O 5 0 0 -
++R T 1940 o - D 1 0 1 S
++R T 1941 o - S 21 0 0 -
++R T 1942 o - Ap 1 0 1 S
++R T 1942 o - N 1 0 0 -
++R T 1945 o - Ap 2 0 1 S
++R T 1945 o - O 8 0 0 -
++R T 1946 o - Jun 1 0 1 S
++R T 1946 o - O 1 0 0 -
++R T 1947 1948 - Ap Sun>=16 0 1 S
++R T 1947 1950 - O Sun>=2 0 0 -
++R T 1949 o - Ap 10 0 1 S
++R T 1950 o - Ap 19 0 1 S
++R T 1951 o - Ap 22 0 1 S
++R T 1951 o - O 8 0 0 -
++R T 1962 o - Jul 15 0 1 S
++R T 1962 o - O 8 0 0 -
++R T 1964 o - May 15 0 1 S
++R T 1964 o - O 1 0 0 -
++R T 1970 1972 - May Sun>=2 0 1 S
++R T 1970 1972 - O Sun>=2 0 0 -
++R T 1973 o - Jun 3 1 1 S
++R T 1973 o - N 4 3 0 -
++R T 1974 o - Mar 31 2 1 S
++R T 1974 o - N 3 5 0 -
++R T 1975 o - Mar 30 0 1 S
++R T 1975 1976 - O lastSun 0 0 -
++R T 1976 o - Jun 1 0 1 S
++R T 1977 1978 - Ap Sun>=1 0 1 S
++R T 1977 o - O 16 0 0 -
++R T 1979 1980 - Ap Sun>=1 3 1 S
++R T 1979 1982 - O M>=11 0 0 -
++R T 1981 1982 - Mar lastSun 3 1 S
++R T 1983 o - Jul 31 0 1 S
++R T 1983 o - O 2 0 0 -
++R T 1985 o - Ap 20 0 1 S
++R T 1985 o - S 28 0 0 -
++R T 1986 1993 - Mar lastSun 1s 1 S
++R T 1986 1995 - S lastSun 1s 0 -
++R T 1994 o - Mar 20 1s 1 S
++R T 1995 2006 - Mar lastSun 1s 1 S
++R T 1996 2006 - O lastSun 1s 0 -
+ Z Europe/Istanbul 1:55:52 - LMT 1880
+ 1:56:56 - IMT 1910 O
+-2 AE EE%sT 1978 O 15
+-3 AE +03/+04 1985 Ap 20
+-2 AE EE%sT 2007
+-2 O EE%sT 2011 Mar 27 1u
++2 T EE%sT 1978 O 15
++3 T +03/+04 1985 Ap 20
++2 T EE%sT 2007
++2 E EE%sT 2011 Mar 27 1u
+ 2 - EET 2011 Mar 28 1u
+-2 O EE%sT 2014 Mar 30 1u
++2 E EE%sT 2014 Mar 30 1u
+ 2 - EET 2014 Mar 31 1u
+-2 O EE%sT 2015 O 25 1u
++2 E EE%sT 2015 O 25 1u
+ 2 1 EEST 2015 N 8 1u
+-2 O EE%sT 2016 S 7
++2 E EE%sT 2016 S 7
+ 3 - +03
+ Li Europe/Istanbul Asia/Istanbul
+ Z Europe/Kiev 2:2:4 - LMT 1880
+ 2:2:4 - KMT 1924 May 2
+ 2 - EET 1930 Jun 21
+ 3 - MSK 1941 S 20
+-1 ( CE%sT 1943 N 6
+-3 M MSK/MSD 1990 Jul 1 2
++1 c CE%sT 1943 N 6
++3 R MSK/MSD 1990 Jul 1 2
+ 2 1 EEST 1991 S 29 3
+-2 W EE%sT 1995
+-2 O EE%sT
++2 e EE%sT 1995
++2 E EE%sT
+ Z Europe/Uzhgorod 1:29:12 - LMT 1890 O
+ 1 - CET 1940
+-1 ( CE%sT 1944 O
++1 c CE%sT 1944 O
+ 1 1 CEST 1944 O 26
+ 1 - CET 1945 Jun 29
+-3 M MSK/MSD 1990
++3 R MSK/MSD 1990
+ 3 - MSK 1990 Jul 1 2
+ 1 - CET 1991 Mar 31 3
+ 2 - EET 1992
+-2 W EE%sT 1995
+-2 O EE%sT
++2 e EE%sT 1995
++2 E EE%sT
+ Z Europe/Zaporozhye 2:20:40 - LMT 1880
+ 2:20 - +0220 1924 May 2
+ 2 - EET 1930 Jun 21
+ 3 - MSK 1941 Au 25
+-1 ( CE%sT 1943 O 25
+-3 M MSK/MSD 1991 Mar 31 2
+-2 W EE%sT 1995
+-2 O EE%sT
+-R AF 1918 1919 - Mar lastSun 2 1 D
+-R AF 1918 1919 - O lastSun 2 0 S
+-R AF 1942 o - F 9 2 1 W
+-R AF 1945 o - Au 14 23u 1 P
+-R AF 1945 o - S lastSun 2 0 S
+-R AF 1967 2006 - O lastSun 2 0 S
+-R AF 1967 1973 - Ap lastSun 2 1 D
+-R AF 1974 o - Ja 6 2 1 D
+-R AF 1975 o - F 23 2 1 D
+-R AF 1976 1986 - Ap lastSun 2 1 D
+-R AF 1987 2006 - Ap Sun>=1 2 1 D
+-R AF 2007 ma - Mar Sun>=8 2 1 D
+-R AF 2007 ma - N Sun>=1 2 0 S
++1 c CE%sT 1943 O 25
++3 R MSK/MSD 1991 Mar 31 2
++2 e EE%sT 1995
++2 E EE%sT
++R u 1918 1919 - Mar lastSun 2 1 D
++R u 1918 1919 - O lastSun 2 0 S
++R u 1942 o - F 9 2 1 W
++R u 1945 o - Au 14 23u 1 P
++R u 1945 o - S lastSun 2 0 S
++R u 1967 2006 - O lastSun 2 0 S
++R u 1967 1973 - Ap lastSun 2 1 D
++R u 1974 o - Ja 6 2 1 D
++R u 1975 o - F 23 2 1 D
++R u 1976 1986 - Ap lastSun 2 1 D
++R u 1987 2006 - Ap Sun>=1 2 1 D
++R u 2007 ma - Mar Sun>=8 2 1 D
++R u 2007 ma - N Sun>=1 2 0 S
+ Z EST -5 - EST
+ Z MST -7 - MST
+ Z HST -10 - HST
+-Z EST5EDT -5 AF E%sT
+-Z CST6CDT -6 AF C%sT
+-Z MST7MDT -7 AF M%sT
+-Z PST8PDT -8 AF P%sT
+-R AG 1920 o - Mar lastSun 2 1 D
+-R AG 1920 o - O lastSun 2 0 S
+-R AG 1921 1966 - Ap lastSun 2 1 D
+-R AG 1921 1954 - S lastSun 2 0 S
+-R AG 1955 1966 - O lastSun 2 0 S
++Z EST5EDT -5 u E%sT
++Z CST6CDT -6 u C%sT
++Z MST7MDT -7 u M%sT
++Z PST8PDT -8 u P%sT
++R NY 1920 o - Mar lastSun 2 1 D
++R NY 1920 o - O lastSun 2 0 S
++R NY 1921 1966 - Ap lastSun 2 1 D
++R NY 1921 1954 - S lastSun 2 0 S
++R NY 1955 1966 - O lastSun 2 0 S
+ Z America/New_York -4:56:2 - LMT 1883 N 18 12:3:58
+--5 AF E%sT 1920
+--5 AG E%sT 1942
+--5 AF E%sT 1946
+--5 AG E%sT 1967
+--5 AF E%sT
+-R AH 1920 o - Jun 13 2 1 D
+-R AH 1920 1921 - O lastSun 2 0 S
+-R AH 1921 o - Mar lastSun 2 1 D
+-R AH 1922 1966 - Ap lastSun 2 1 D
+-R AH 1922 1954 - S lastSun 2 0 S
+-R AH 1955 1966 - O lastSun 2 0 S
++-5 u E%sT 1920
++-5 NY E%sT 1942
++-5 u E%sT 1946
++-5 NY E%sT 1967
++-5 u E%sT
++R Ch 1920 o - Jun 13 2 1 D
++R Ch 1920 1921 - O lastSun 2 0 S
++R Ch 1921 o - Mar lastSun 2 1 D
++R Ch 1922 1966 - Ap lastSun 2 1 D
++R Ch 1922 1954 - S lastSun 2 0 S
++R Ch 1955 1966 - O lastSun 2 0 S
+ Z America/Chicago -5:50:36 - LMT 1883 N 18 12:9:24
+--6 AF C%sT 1920
+--6 AH C%sT 1936 Mar 1 2
++-6 u C%sT 1920
++-6 Ch C%sT 1936 Mar 1 2
+ -5 - EST 1936 N 15 2
+--6 AH C%sT 1942
+--6 AF C%sT 1946
+--6 AH C%sT 1967
+--6 AF C%sT
++-6 Ch C%sT 1942
++-6 u C%sT 1946
++-6 Ch C%sT 1967
++-6 u C%sT
+ Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 12:14:48
+--7 AF M%sT 1992 O 25 2
+--6 AF C%sT
++-7 u M%sT 1992 O 25 2
++-6 u C%sT
+ Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 12:14:21
+--7 AF M%sT 2003 O 26 2
+--6 AF C%sT
++-7 u M%sT 2003 O 26 2
++-6 u C%sT
+ Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 12:12:53
+--7 AF M%sT 2010 N 7 2
+--6 AF C%sT
+-R AI 1920 1921 - Mar lastSun 2 1 D
+-R AI 1920 o - O lastSun 2 0 S
+-R AI 1921 o - May 22 2 0 S
+-R AI 1965 1966 - Ap lastSun 2 1 D
+-R AI 1965 1966 - O lastSun 2 0 S
++-7 u M%sT 2010 N 7 2
++-6 u C%sT
++R De 1920 1921 - Mar lastSun 2 1 D
++R De 1920 o - O lastSun 2 0 S
++R De 1921 o - May 22 2 0 S
++R De 1965 1966 - Ap lastSun 2 1 D
++R De 1965 1966 - O lastSun 2 0 S
+ Z America/Denver -6:59:56 - LMT 1883 N 18 12:0:4
+--7 AF M%sT 1920
+--7 AI M%sT 1942
+--7 AF M%sT 1946
+--7 AI M%sT 1967
+--7 AF M%sT
+-R AJ 1948 o - Mar 14 2:1 1 D
+-R AJ 1949 o - Ja 1 2 0 S
+-R AJ 1950 1966 - Ap lastSun 1 1 D
+-R AJ 1950 1961 - S lastSun 2 0 S
+-R AJ 1962 1966 - O lastSun 2 0 S
++-7 u M%sT 1920
++-7 De M%sT 1942
++-7 u M%sT 1946
++-7 De M%sT 1967
++-7 u M%sT
++R CA 1948 o - Mar 14 2:1 1 D
++R CA 1949 o - Ja 1 2 0 S
++R CA 1950 1966 - Ap lastSun 1 1 D
++R CA 1950 1961 - S lastSun 2 0 S
++R CA 1962 1966 - O lastSun 2 0 S
+ Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 12:7:2
+--8 AF P%sT 1946
+--8 AJ P%sT 1967
+--8 AF P%sT
++-8 u P%sT 1946
++-8 CA P%sT 1967
++-8 u P%sT
+ Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32
+ -8:57:41 - LMT 1900 Au 20 12
+ -8 - PST 1942
+--8 AF P%sT 1946
++-8 u P%sT 1946
+ -8 - PST 1969
+--8 AF P%sT 1980 Ap 27 2
+--9 AF Y%sT 1980 O 26 2
+--8 AF P%sT 1983 O 30 2
+--9 AF Y%sT 1983 N 30
+--9 AF AK%sT
++-8 u P%sT 1980 Ap 27 2
++-9 u Y%sT 1980 O 26 2
++-8 u P%sT 1983 O 30 2
++-9 u Y%sT 1983 N 30
++-9 u AK%sT
+ Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30
+ -9:1:13 - LMT 1900 Au 20 12
+ -8 - PST 1942
+--8 AF P%sT 1946
++-8 u P%sT 1946
+ -8 - PST 1969
+--8 AF P%sT 1983 O 30 2
+--9 AF Y%sT 1983 N 30
+--9 AF AK%sT
++-8 u P%sT 1983 O 30 2
++-9 u Y%sT 1983 N 30
++-9 u AK%sT
+ Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55
+ -8:46:18 - LMT 1900 Au 20 12
+ -8 - PST 1942
+--8 AF P%sT 1946
++-8 u P%sT 1946
+ -8 - PST 1969
+--8 AF P%sT 1983 O 30 2
++-8 u P%sT 1983 O 30 2
+ -8 - PST 2015 N 1 2
+--9 AF AK%sT
++-9 u AK%sT
+ Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18
+ -9:18:55 - LMT 1900 Au 20 12
+ -9 - YST 1942
+--9 AF Y%sT 1946
++-9 u Y%sT 1946
+ -9 - YST 1969
+--9 AF Y%sT 1983 N 30
+--9 AF AK%sT
++-9 u Y%sT 1983 N 30
++-9 u AK%sT
+ Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37
+ -9:59:36 - LMT 1900 Au 20 12
+ -10 - AST 1942
+--10 AF A%sT 1967 Ap
++-10 u A%sT 1967 Ap
+ -10 - AHST 1969
+--10 AF AH%sT 1983 O 30 2
+--9 AF Y%sT 1983 N 30
+--9 AF AK%sT
++-10 u AH%sT 1983 O 30 2
++-9 u Y%sT 1983 N 30
++-9 u AK%sT
+ Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35
+ -11:1:38 - LMT 1900 Au 20 12
+ -11 - NST 1942
+--11 AF N%sT 1946
++-11 u N%sT 1946
+ -11 - NST 1967 Ap
+ -11 - BST 1969
+--11 AF B%sT 1983 O 30 2
+--9 AF Y%sT 1983 N 30
+--9 AF AK%sT
++-11 u B%sT 1983 O 30 2
++-9 u Y%sT 1983 N 30
++-9 u AK%sT
+ Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35
+ -11:46:38 - LMT 1900 Au 20 12
+ -11 - NST 1942
+--11 AF N%sT 1946
++-11 u N%sT 1946
+ -11 - NST 1967 Ap
+ -11 - BST 1969
+--11 AF B%sT 1983 O 30 2
+--10 AF AH%sT 1983 N 30
+--10 AF H%sT
++-11 u B%sT 1983 O 30 2
++-10 u AH%sT 1983 N 30
++-10 u H%sT
+ Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12
+ -10:30 - HST 1933 Ap 30 2
+ -10:30 1 HDT 1933 May 21 12
+@@ -2683,531 +2700,531 @@ Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12
+ -10:30 - HST 1947 Jun 8 2
+ -10 - HST
+ Z America/Phoenix -7:28:18 - LMT 1883 N 18 11:31:42
+--7 AF M%sT 1944 Ja 1 0:1
++-7 u M%sT 1944 Ja 1 0:1
+ -7 - MST 1944 Ap 1 0:1
+--7 AF M%sT 1944 O 1 0:1
++-7 u M%sT 1944 O 1 0:1
+ -7 - MST 1967
+--7 AF M%sT 1968 Mar 21
++-7 u M%sT 1968 Mar 21
+ -7 - MST
+ Z America/Boise -7:44:49 - LMT 1883 N 18 12:15:11
+--8 AF P%sT 1923 May 13 2
+--7 AF M%sT 1974
++-8 u P%sT 1923 May 13 2
++-7 u M%sT 1974
+ -7 - MST 1974 F 3 2
+--7 AF M%sT
+-R AK 1941 o - Jun 22 2 1 D
+-R AK 1941 1954 - S lastSun 2 0 S
+-R AK 1946 1954 - Ap lastSun 2 1 D
++-7 u M%sT
++R In 1941 o - Jun 22 2 1 D
++R In 1941 1954 - S lastSun 2 0 S
++R In 1946 1954 - Ap lastSun 2 1 D
+ Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 12:15:22
+--6 AF C%sT 1920
+--6 AK C%sT 1942
+--6 AF C%sT 1946
+--6 AK C%sT 1955 Ap 24 2
++-6 u C%sT 1920
++-6 In C%sT 1942
++-6 u C%sT 1946
++-6 In C%sT 1955 Ap 24 2
+ -5 - EST 1957 S 29 2
+ -6 - CST 1958 Ap 27 2
+ -5 - EST 1969
+--5 AF E%sT 1971
++-5 u E%sT 1971
+ -5 - EST 2006
+--5 AF E%sT
+-R AL 1951 o - Ap lastSun 2 1 D
+-R AL 1951 o - S lastSun 2 0 S
+-R AL 1954 1960 - Ap lastSun 2 1 D
+-R AL 1954 1960 - S lastSun 2 0 S
++-5 u E%sT
++R Ma 1951 o - Ap lastSun 2 1 D
++R Ma 1951 o - S lastSun 2 0 S
++R Ma 1954 1960 - Ap lastSun 2 1 D
++R Ma 1954 1960 - S lastSun 2 0 S
+ Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 12:14:37
+--6 AF C%sT 1951
+--6 AL C%sT 1961 Ap 30 2
++-6 u C%sT 1951
++-6 Ma C%sT 1961 Ap 30 2
+ -5 - EST 1969
+--5 AF E%sT 1974 Ja 6 2
++-5 u E%sT 1974 Ja 6 2
+ -6 1 CDT 1974 O 27 2
+--5 AF E%sT 1976
++-5 u E%sT 1976
+ -5 - EST 2006
+--5 AF E%sT
+-R AM 1946 o - Ap lastSun 2 1 D
+-R AM 1946 o - S lastSun 2 0 S
+-R AM 1953 1954 - Ap lastSun 2 1 D
+-R AM 1953 1959 - S lastSun 2 0 S
+-R AM 1955 o - May 1 0 1 D
+-R AM 1956 1963 - Ap lastSun 2 1 D
+-R AM 1960 o - O lastSun 2 0 S
+-R AM 1961 o - S lastSun 2 0 S
+-R AM 1962 1963 - O lastSun 2 0 S
++-5 u E%sT
++R V 1946 o - Ap lastSun 2 1 D
++R V 1946 o - S lastSun 2 0 S
++R V 1953 1954 - Ap lastSun 2 1 D
++R V 1953 1959 - S lastSun 2 0 S
++R V 1955 o - May 1 0 1 D
++R V 1956 1963 - Ap lastSun 2 1 D
++R V 1960 o - O lastSun 2 0 S
++R V 1961 o - S lastSun 2 0 S
++R V 1962 1963 - O lastSun 2 0 S
+ Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 12:9:53
+--6 AF C%sT 1946
+--6 AM C%sT 1964 Ap 26 2
++-6 u C%sT 1946
++-6 V C%sT 1964 Ap 26 2
+ -5 - EST 1969
+--5 AF E%sT 1971
++-5 u E%sT 1971
+ -5 - EST 2006 Ap 2 2
+--6 AF C%sT 2007 N 4 2
+--5 AF E%sT
+-R AN 1946 o - Ap lastSun 2 1 D
+-R AN 1946 o - S lastSun 2 0 S
+-R AN 1953 1954 - Ap lastSun 2 1 D
+-R AN 1953 1959 - S lastSun 2 0 S
+-R AN 1955 o - May 1 0 1 D
+-R AN 1956 1963 - Ap lastSun 2 1 D
+-R AN 1960 o - O lastSun 2 0 S
+-R AN 1961 o - S lastSun 2 0 S
+-R AN 1962 1963 - O lastSun 2 0 S
++-6 u C%sT 2007 N 4 2
++-5 u E%sT
++R Pe 1946 o - Ap lastSun 2 1 D
++R Pe 1946 o - S lastSun 2 0 S
++R Pe 1953 1954 - Ap lastSun 2 1 D
++R Pe 1953 1959 - S lastSun 2 0 S
++R Pe 1955 o - May 1 0 1 D
++R Pe 1956 1963 - Ap lastSun 2 1 D
++R Pe 1960 o - O lastSun 2 0 S
++R Pe 1961 o - S lastSun 2 0 S
++R Pe 1962 1963 - O lastSun 2 0 S
+ Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 12:12:57
+--6 AF C%sT 1946
+--6 AN C%sT 1964 Ap 26 2
++-6 u C%sT 1946
++-6 Pe C%sT 1964 Ap 26 2
+ -5 - EST 1969
+--5 AF E%sT 1971
++-5 u E%sT 1971
+ -5 - EST 2006 Ap 2 2
+--6 AF C%sT
+-R AO 1955 o - May 1 0 1 D
+-R AO 1955 1960 - S lastSun 2 0 S
+-R AO 1956 1964 - Ap lastSun 2 1 D
+-R AO 1961 1964 - O lastSun 2 0 S
++-6 u C%sT
++R Pi 1955 o - May 1 0 1 D
++R Pi 1955 1960 - S lastSun 2 0 S
++R Pi 1956 1964 - Ap lastSun 2 1 D
++R Pi 1961 1964 - O lastSun 2 0 S
+ Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 12:10:53
+--6 AF C%sT 1955
+--6 AO C%sT 1965 Ap 25 2
++-6 u C%sT 1955
++-6 Pi C%sT 1965 Ap 25 2
+ -5 - EST 1966 O 30 2
+--6 AF C%sT 1977 O 30 2
++-6 u C%sT 1977 O 30 2
+ -5 - EST 2006 Ap 2 2
+--6 AF C%sT 2007 N 4 2
+--5 AF E%sT
+-R AP 1947 1961 - Ap lastSun 2 1 D
+-R AP 1947 1954 - S lastSun 2 0 S
+-R AP 1955 1956 - O lastSun 2 0 S
+-R AP 1957 1958 - S lastSun 2 0 S
+-R AP 1959 1961 - O lastSun 2 0 S
++-6 u C%sT 2007 N 4 2
++-5 u E%sT
++R St 1947 1961 - Ap lastSun 2 1 D
++R St 1947 1954 - S lastSun 2 0 S
++R St 1955 1956 - O lastSun 2 0 S
++R St 1957 1958 - S lastSun 2 0 S
++R St 1959 1961 - O lastSun 2 0 S
+ Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 12:13:30
+--6 AF C%sT 1947
+--6 AP C%sT 1962 Ap 29 2
++-6 u C%sT 1947
++-6 St C%sT 1962 Ap 29 2
+ -5 - EST 1963 O 27 2
+--6 AF C%sT 1991 O 27 2
++-6 u C%sT 1991 O 27 2
+ -5 - EST 2006 Ap 2 2
+--6 AF C%sT
+-R AQ 1946 1960 - Ap lastSun 2 1 D
+-R AQ 1946 1954 - S lastSun 2 0 S
+-R AQ 1955 1956 - O lastSun 2 0 S
+-R AQ 1957 1960 - S lastSun 2 0 S
++-6 u C%sT
++R Pu 1946 1960 - Ap lastSun 2 1 D
++R Pu 1946 1954 - S lastSun 2 0 S
++R Pu 1955 1956 - O lastSun 2 0 S
++R Pu 1957 1960 - S lastSun 2 0 S
+ Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 12:13:35
+--6 AF C%sT 1946
+--6 AQ C%sT 1961 Ap 30 2
++-6 u C%sT 1946
++-6 Pu C%sT 1961 Ap 30 2
+ -5 - EST 1969
+--5 AF E%sT 1971
++-5 u E%sT 1971
+ -5 - EST 2006 Ap 2 2
+--6 AF C%sT 2007 Mar 11 2
+--5 AF E%sT
++-6 u C%sT 2007 Mar 11 2
++-5 u E%sT
+ Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 12:19:44
+--6 AF C%sT 1954 Ap 25 2
++-6 u C%sT 1954 Ap 25 2
+ -5 - EST 1969
+--5 AF E%sT 1973
++-5 u E%sT 1973
+ -5 - EST 2006
+--5 AF E%sT
+-R AR 1921 o - May 1 2 1 D
+-R AR 1921 o - S 1 2 0 S
+-R AR 1941 1961 - Ap lastSun 2 1 D
+-R AR 1941 o - S lastSun 2 0 S
+-R AR 1946 o - Jun 2 2 0 S
+-R AR 1950 1955 - S lastSun 2 0 S
+-R AR 1956 1960 - O lastSun 2 0 S
++-5 u E%sT
++R v 1921 o - May 1 2 1 D
++R v 1921 o - S 1 2 0 S
++R v 1941 1961 - Ap lastSun 2 1 D
++R v 1941 o - S lastSun 2 0 S
++R v 1946 o - Jun 2 2 0 S
++R v 1950 1955 - S lastSun 2 0 S
++R v 1956 1960 - O lastSun 2 0 S
+ Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 12:16:58
+--6 AF C%sT 1921
+--6 AR C%sT 1942
+--6 AF C%sT 1946
+--6 AR C%sT 1961 Jul 23 2
++-6 u C%sT 1921
++-6 v C%sT 1942
++-6 u C%sT 1946
++-6 v C%sT 1961 Jul 23 2
+ -5 - EST 1968
+--5 AF E%sT 1974 Ja 6 2
++-5 u E%sT 1974 Ja 6 2
+ -6 1 CDT 1974 O 27 2
+--5 AF E%sT
++-5 u E%sT
+ Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 12:20:36
+--6 AF C%sT 1946
++-6 u C%sT 1946
+ -6 - CST 1968
+--6 AF C%sT 2000 O 29 2
+--5 AF E%sT
+-R AS 1948 o - Ap lastSun 2 1 D
+-R AS 1948 o - S lastSun 2 0 S
++-6 u C%sT 2000 O 29 2
++-5 u E%sT
++R Dt 1948 o - Ap lastSun 2 1 D
++R Dt 1948 o - S lastSun 2 0 S
+ Z America/Detroit -5:32:11 - LMT 1905
+ -6 - CST 1915 May 15 2
+ -5 - EST 1942
+--5 AF E%sT 1946
+--5 AS E%sT 1973
+--5 AF E%sT 1975
++-5 u E%sT 1946
++-5 Dt E%sT 1973
++-5 u E%sT 1975
+ -5 - EST 1975 Ap 27 2
+--5 AF E%sT
+-R AT 1946 o - Ap lastSun 2 1 D
+-R AT 1946 o - S lastSun 2 0 S
+-R AT 1966 o - Ap lastSun 2 1 D
+-R AT 1966 o - O lastSun 2 0 S
++-5 u E%sT
++R Me 1946 o - Ap lastSun 2 1 D
++R Me 1946 o - S lastSun 2 0 S
++R Me 1966 o - Ap lastSun 2 1 D
++R Me 1966 o - O lastSun 2 0 S
+ Z America/Menominee -5:50:27 - LMT 1885 S 18 12
+--6 AF C%sT 1946
+--6 AT C%sT 1969 Ap 27 2
++-6 u C%sT 1946
++-6 Me C%sT 1969 Ap 27 2
+ -5 - EST 1973 Ap 29 2
+--6 AF C%sT
+-R AU 1918 o - Ap 14 2 1 D
+-R AU 1918 o - O 27 2 0 S
+-R AU 1942 o - F 9 2 1 W
+-R AU 1945 o - Au 14 23u 1 P
+-R AU 1945 o - S 30 2 0 S
+-R AU 1974 1986 - Ap lastSun 2 1 D
+-R AU 1974 2006 - O lastSun 2 0 S
+-R AU 1987 2006 - Ap Sun>=1 2 1 D
+-R AU 2007 ma - Mar Sun>=8 2 1 D
+-R AU 2007 ma - N Sun>=1 2 0 S
+-R AV 1917 o - Ap 8 2 1 D
+-R AV 1917 o - S 17 2 0 S
+-R AV 1919 o - May 5 23 1 D
+-R AV 1919 o - Au 12 23 0 S
+-R AV 1920 1935 - May Sun>=1 23 1 D
+-R AV 1920 1935 - O lastSun 23 0 S
+-R AV 1936 1941 - May M>=9 0 1 D
+-R AV 1936 1941 - O M>=2 0 0 S
+-R AV 1946 1950 - May Sun>=8 2 1 D
+-R AV 1946 1950 - O Sun>=2 2 0 S
+-R AV 1951 1986 - Ap lastSun 2 1 D
+-R AV 1951 1959 - S lastSun 2 0 S
+-R AV 1960 1986 - O lastSun 2 0 S
+-R AV 1987 o - Ap Sun>=1 0:1 1 D
+-R AV 1987 2006 - O lastSun 0:1 0 S
+-R AV 1988 o - Ap Sun>=1 0:1 2 DD
+-R AV 1989 2006 - Ap Sun>=1 0:1 1 D
+-R AV 2007 2011 - Mar Sun>=8 0:1 1 D
+-R AV 2007 2010 - N Sun>=1 0:1 0 S
++-6 u C%sT
++R C 1918 o - Ap 14 2 1 D
++R C 1918 o - O 27 2 0 S
++R C 1942 o - F 9 2 1 W
++R C 1945 o - Au 14 23u 1 P
++R C 1945 o - S 30 2 0 S
++R C 1974 1986 - Ap lastSun 2 1 D
++R C 1974 2006 - O lastSun 2 0 S
++R C 1987 2006 - Ap Sun>=1 2 1 D
++R C 2007 ma - Mar Sun>=8 2 1 D
++R C 2007 ma - N Sun>=1 2 0 S
++R j 1917 o - Ap 8 2 1 D
++R j 1917 o - S 17 2 0 S
++R j 1919 o - May 5 23 1 D
++R j 1919 o - Au 12 23 0 S
++R j 1920 1935 - May Sun>=1 23 1 D
++R j 1920 1935 - O lastSun 23 0 S
++R j 1936 1941 - May M>=9 0 1 D
++R j 1936 1941 - O M>=2 0 0 S
++R j 1946 1950 - May Sun>=8 2 1 D
++R j 1946 1950 - O Sun>=2 2 0 S
++R j 1951 1986 - Ap lastSun 2 1 D
++R j 1951 1959 - S lastSun 2 0 S
++R j 1960 1986 - O lastSun 2 0 S
++R j 1987 o - Ap Sun>=1 0:1 1 D
++R j 1987 2006 - O lastSun 0:1 0 S
++R j 1988 o - Ap Sun>=1 0:1 2 DD
++R j 1989 2006 - Ap Sun>=1 0:1 1 D
++R j 2007 2011 - Mar Sun>=8 0:1 1 D
++R j 2007 2010 - N Sun>=1 0:1 0 S
+ Z America/St_Johns -3:30:52 - LMT 1884
+--3:30:52 AV N%sT 1918
+--3:30:52 AU N%sT 1919
+--3:30:52 AV N%sT 1935 Mar 30
+--3:30 AV N%sT 1942 May 11
+--3:30 AU N%sT 1946
+--3:30 AV N%sT 2011 N
+--3:30 AU N%sT
++-3:30:52 j N%sT 1918
++-3:30:52 C N%sT 1919
++-3:30:52 j N%sT 1935 Mar 30
++-3:30 j N%sT 1942 May 11
++-3:30 C N%sT 1946
++-3:30 j N%sT 2011 N
++-3:30 C N%sT
+ Z America/Goose_Bay -4:1:40 - LMT 1884
+ -3:30:52 - NST 1918
+--3:30:52 AU N%sT 1919
++-3:30:52 C N%sT 1919
+ -3:30:52 - NST 1935 Mar 30
+ -3:30 - NST 1936
+--3:30 AV N%sT 1942 May 11
+--3:30 AU N%sT 1946
+--3:30 AV N%sT 1966 Mar 15 2
+--4 AV A%sT 2011 N
+--4 AU A%sT
+-R AW 1916 o - Ap 1 0 1 D
+-R AW 1916 o - O 1 0 0 S
+-R AW 1920 o - May 9 0 1 D
+-R AW 1920 o - Au 29 0 0 S
+-R AW 1921 o - May 6 0 1 D
+-R AW 1921 1922 - S 5 0 0 S
+-R AW 1922 o - Ap 30 0 1 D
+-R AW 1923 1925 - May Sun>=1 0 1 D
+-R AW 1923 o - S 4 0 0 S
+-R AW 1924 o - S 15 0 0 S
+-R AW 1925 o - S 28 0 0 S
+-R AW 1926 o - May 16 0 1 D
+-R AW 1926 o - S 13 0 0 S
+-R AW 1927 o - May 1 0 1 D
+-R AW 1927 o - S 26 0 0 S
+-R AW 1928 1931 - May Sun>=8 0 1 D
+-R AW 1928 o - S 9 0 0 S
+-R AW 1929 o - S 3 0 0 S
+-R AW 1930 o - S 15 0 0 S
+-R AW 1931 1932 - S M>=24 0 0 S
+-R AW 1932 o - May 1 0 1 D
+-R AW 1933 o - Ap 30 0 1 D
+-R AW 1933 o - O 2 0 0 S
+-R AW 1934 o - May 20 0 1 D
+-R AW 1934 o - S 16 0 0 S
+-R AW 1935 o - Jun 2 0 1 D
+-R AW 1935 o - S 30 0 0 S
+-R AW 1936 o - Jun 1 0 1 D
+-R AW 1936 o - S 14 0 0 S
+-R AW 1937 1938 - May Sun>=1 0 1 D
+-R AW 1937 1941 - S M>=24 0 0 S
+-R AW 1939 o - May 28 0 1 D
+-R AW 1940 1941 - May Sun>=1 0 1 D
+-R AW 1946 1949 - Ap lastSun 2 1 D
+-R AW 1946 1949 - S lastSun 2 0 S
+-R AW 1951 1954 - Ap lastSun 2 1 D
+-R AW 1951 1954 - S lastSun 2 0 S
+-R AW 1956 1959 - Ap lastSun 2 1 D
+-R AW 1956 1959 - S lastSun 2 0 S
+-R AW 1962 1973 - Ap lastSun 2 1 D
+-R AW 1962 1973 - O lastSun 2 0 S
++-3:30 j N%sT 1942 May 11
++-3:30 C N%sT 1946
++-3:30 j N%sT 1966 Mar 15 2
++-4 j A%sT 2011 N
++-4 C A%sT
++R H 1916 o - Ap 1 0 1 D
++R H 1916 o - O 1 0 0 S
++R H 1920 o - May 9 0 1 D
++R H 1920 o - Au 29 0 0 S
++R H 1921 o - May 6 0 1 D
++R H 1921 1922 - S 5 0 0 S
++R H 1922 o - Ap 30 0 1 D
++R H 1923 1925 - May Sun>=1 0 1 D
++R H 1923 o - S 4 0 0 S
++R H 1924 o - S 15 0 0 S
++R H 1925 o - S 28 0 0 S
++R H 1926 o - May 16 0 1 D
++R H 1926 o - S 13 0 0 S
++R H 1927 o - May 1 0 1 D
++R H 1927 o - S 26 0 0 S
++R H 1928 1931 - May Sun>=8 0 1 D
++R H 1928 o - S 9 0 0 S
++R H 1929 o - S 3 0 0 S
++R H 1930 o - S 15 0 0 S
++R H 1931 1932 - S M>=24 0 0 S
++R H 1932 o - May 1 0 1 D
++R H 1933 o - Ap 30 0 1 D
++R H 1933 o - O 2 0 0 S
++R H 1934 o - May 20 0 1 D
++R H 1934 o - S 16 0 0 S
++R H 1935 o - Jun 2 0 1 D
++R H 1935 o - S 30 0 0 S
++R H 1936 o - Jun 1 0 1 D
++R H 1936 o - S 14 0 0 S
++R H 1937 1938 - May Sun>=1 0 1 D
++R H 1937 1941 - S M>=24 0 0 S
++R H 1939 o - May 28 0 1 D
++R H 1940 1941 - May Sun>=1 0 1 D
++R H 1946 1949 - Ap lastSun 2 1 D
++R H 1946 1949 - S lastSun 2 0 S
++R H 1951 1954 - Ap lastSun 2 1 D
++R H 1951 1954 - S lastSun 2 0 S
++R H 1956 1959 - Ap lastSun 2 1 D
++R H 1956 1959 - S lastSun 2 0 S
++R H 1962 1973 - Ap lastSun 2 1 D
++R H 1962 1973 - O lastSun 2 0 S
+ Z America/Halifax -4:14:24 - LMT 1902 Jun 15
+--4 AW A%sT 1918
+--4 AU A%sT 1919
+--4 AW A%sT 1942 F 9 2s
+--4 AU A%sT 1946
+--4 AW A%sT 1974
+--4 AU A%sT
++-4 H A%sT 1918
++-4 C A%sT 1919
++-4 H A%sT 1942 F 9 2s
++-4 C A%sT 1946
++-4 H A%sT 1974
++-4 C A%sT
+ Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
+--4 AU A%sT 1953
+--4 AW A%sT 1954
++-4 C A%sT 1953
++-4 H A%sT 1954
+ -4 - AST 1972
+--4 AW A%sT 1974
+--4 AU A%sT
+-R AX 1933 1935 - Jun Sun>=8 1 1 D
+-R AX 1933 1935 - S Sun>=8 1 0 S
+-R AX 1936 1938 - Jun Sun>=1 1 1 D
+-R AX 1936 1938 - S Sun>=1 1 0 S
+-R AX 1939 o - May 27 1 1 D
+-R AX 1939 1941 - S Sat>=21 1 0 S
+-R AX 1940 o - May 19 1 1 D
+-R AX 1941 o - May 4 1 1 D
+-R AX 1946 1972 - Ap lastSun 2 1 D
+-R AX 1946 1956 - S lastSun 2 0 S
+-R AX 1957 1972 - O lastSun 2 0 S
+-R AX 1993 2006 - Ap Sun>=1 0:1 1 D
+-R AX 1993 2006 - O lastSun 0:1 0 S
++-4 H A%sT 1974
++-4 C A%sT
++R o 1933 1935 - Jun Sun>=8 1 1 D
++R o 1933 1935 - S Sun>=8 1 0 S
++R o 1936 1938 - Jun Sun>=1 1 1 D
++R o 1936 1938 - S Sun>=1 1 0 S
++R o 1939 o - May 27 1 1 D
++R o 1939 1941 - S Sat>=21 1 0 S
++R o 1940 o - May 19 1 1 D
++R o 1941 o - May 4 1 1 D
++R o 1946 1972 - Ap lastSun 2 1 D
++R o 1946 1956 - S lastSun 2 0 S
++R o 1957 1972 - O lastSun 2 0 S
++R o 1993 2006 - Ap Sun>=1 0:1 1 D
++R o 1993 2006 - O lastSun 0:1 0 S
+ Z America/Moncton -4:19:8 - LMT 1883 D 9
+ -5 - EST 1902 Jun 15
+--4 AU A%sT 1933
+--4 AX A%sT 1942
+--4 AU A%sT 1946
+--4 AX A%sT 1973
+--4 AU A%sT 1993
+--4 AX A%sT 2007
+--4 AU A%sT
++-4 C A%sT 1933
++-4 o A%sT 1942
++-4 C A%sT 1946
++-4 o A%sT 1973
++-4 C A%sT 1993
++-4 o A%sT 2007
++-4 C A%sT
+ Z America/Blanc-Sablon -3:48:28 - LMT 1884
+--4 AU A%sT 1970
++-4 C A%sT 1970
+ -4 - AST
+-R AY 1919 o - Mar 30 23:30 1 D
+-R AY 1919 o - O 26 0 0 S
+-R AY 1920 o - May 2 2 1 D
+-R AY 1920 o - S 26 0 0 S
+-R AY 1921 o - May 15 2 1 D
+-R AY 1921 o - S 15 2 0 S
+-R AY 1922 1923 - May Sun>=8 2 1 D
+-R AY 1922 1926 - S Sun>=15 2 0 S
+-R AY 1924 1927 - May Sun>=1 2 1 D
+-R AY 1927 1932 - S lastSun 2 0 S
+-R AY 1928 1931 - Ap lastSun 2 1 D
+-R AY 1932 o - May 1 2 1 D
+-R AY 1933 1940 - Ap lastSun 2 1 D
+-R AY 1933 o - O 1 2 0 S
+-R AY 1934 1939 - S lastSun 2 0 S
+-R AY 1945 1946 - S lastSun 2 0 S
+-R AY 1946 o - Ap lastSun 2 1 D
+-R AY 1947 1949 - Ap lastSun 0 1 D
+-R AY 1947 1948 - S lastSun 0 0 S
+-R AY 1949 o - N lastSun 0 0 S
+-R AY 1950 1973 - Ap lastSun 2 1 D
+-R AY 1950 o - N lastSun 2 0 S
+-R AY 1951 1956 - S lastSun 2 0 S
+-R AY 1957 1973 - O lastSun 2 0 S
++R t 1919 o - Mar 30 23:30 1 D
++R t 1919 o - O 26 0 0 S
++R t 1920 o - May 2 2 1 D
++R t 1920 o - S 26 0 0 S
++R t 1921 o - May 15 2 1 D
++R t 1921 o - S 15 2 0 S
++R t 1922 1923 - May Sun>=8 2 1 D
++R t 1922 1926 - S Sun>=15 2 0 S
++R t 1924 1927 - May Sun>=1 2 1 D
++R t 1927 1932 - S lastSun 2 0 S
++R t 1928 1931 - Ap lastSun 2 1 D
++R t 1932 o - May 1 2 1 D
++R t 1933 1940 - Ap lastSun 2 1 D
++R t 1933 o - O 1 2 0 S
++R t 1934 1939 - S lastSun 2 0 S
++R t 1945 1946 - S lastSun 2 0 S
++R t 1946 o - Ap lastSun 2 1 D
++R t 1947 1949 - Ap lastSun 0 1 D
++R t 1947 1948 - S lastSun 0 0 S
++R t 1949 o - N lastSun 0 0 S
++R t 1950 1973 - Ap lastSun 2 1 D
++R t 1950 o - N lastSun 2 0 S
++R t 1951 1956 - S lastSun 2 0 S
++R t 1957 1973 - O lastSun 2 0 S
+ Z America/Toronto -5:17:32 - LMT 1895
+--5 AU E%sT 1919
+--5 AY E%sT 1942 F 9 2s
+--5 AU E%sT 1946
+--5 AY E%sT 1974
+--5 AU E%sT
++-5 C E%sT 1919
++-5 t E%sT 1942 F 9 2s
++-5 C E%sT 1946
++-5 t E%sT 1974
++-5 C E%sT
+ Z America/Thunder_Bay -5:57 - LMT 1895
+ -6 - CST 1910
+ -5 - EST 1942
+--5 AU E%sT 1970
+--5 AY E%sT 1973
++-5 C E%sT 1970
++-5 t E%sT 1973
+ -5 - EST 1974
+--5 AU E%sT
++-5 C E%sT
+ Z America/Nipigon -5:53:4 - LMT 1895
+--5 AU E%sT 1940 S 29
++-5 C E%sT 1940 S 29
+ -5 1 EDT 1942 F 9 2s
+--5 AU E%sT
++-5 C E%sT
+ Z America/Rainy_River -6:18:16 - LMT 1895
+--6 AU C%sT 1940 S 29
++-6 C C%sT 1940 S 29
+ -6 1 CDT 1942 F 9 2s
+--6 AU C%sT
++-6 C C%sT
+ Z America/Atikokan -6:6:28 - LMT 1895
+--6 AU C%sT 1940 S 29
++-6 C C%sT 1940 S 29
+ -6 1 CDT 1942 F 9 2s
+--6 AU C%sT 1945 S 30 2
++-6 C C%sT 1945 S 30 2
+ -5 - EST
+-R AZ 1916 o - Ap 23 0 1 D
+-R AZ 1916 o - S 17 0 0 S
+-R AZ 1918 o - Ap 14 2 1 D
+-R AZ 1918 o - O 27 2 0 S
+-R AZ 1937 o - May 16 2 1 D
+-R AZ 1937 o - S 26 2 0 S
+-R AZ 1942 o - F 9 2 1 W
+-R AZ 1945 o - Au 14 23u 1 P
+-R AZ 1945 o - S lastSun 2 0 S
+-R AZ 1946 o - May 12 2 1 D
+-R AZ 1946 o - O 13 2 0 S
+-R AZ 1947 1949 - Ap lastSun 2 1 D
+-R AZ 1947 1949 - S lastSun 2 0 S
+-R AZ 1950 o - May 1 2 1 D
+-R AZ 1950 o - S 30 2 0 S
+-R AZ 1951 1960 - Ap lastSun 2 1 D
+-R AZ 1951 1958 - S lastSun 2 0 S
+-R AZ 1959 o - O lastSun 2 0 S
+-R AZ 1960 o - S lastSun 2 0 S
+-R AZ 1963 o - Ap lastSun 2 1 D
+-R AZ 1963 o - S 22 2 0 S
+-R AZ 1966 1986 - Ap lastSun 2s 1 D
+-R AZ 1966 2005 - O lastSun 2s 0 S
+-R AZ 1987 2005 - Ap Sun>=1 2s 1 D
++R W 1916 o - Ap 23 0 1 D
++R W 1916 o - S 17 0 0 S
++R W 1918 o - Ap 14 2 1 D
++R W 1918 o - O 27 2 0 S
++R W 1937 o - May 16 2 1 D
++R W 1937 o - S 26 2 0 S
++R W 1942 o - F 9 2 1 W
++R W 1945 o - Au 14 23u 1 P
++R W 1945 o - S lastSun 2 0 S
++R W 1946 o - May 12 2 1 D
++R W 1946 o - O 13 2 0 S
++R W 1947 1949 - Ap lastSun 2 1 D
++R W 1947 1949 - S lastSun 2 0 S
++R W 1950 o - May 1 2 1 D
++R W 1950 o - S 30 2 0 S
++R W 1951 1960 - Ap lastSun 2 1 D
++R W 1951 1958 - S lastSun 2 0 S
++R W 1959 o - O lastSun 2 0 S
++R W 1960 o - S lastSun 2 0 S
++R W 1963 o - Ap lastSun 2 1 D
++R W 1963 o - S 22 2 0 S
++R W 1966 1986 - Ap lastSun 2s 1 D
++R W 1966 2005 - O lastSun 2s 0 S
++R W 1987 2005 - Ap Sun>=1 2s 1 D
+ Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16
+--6 AZ C%sT 2006
+--6 AU C%sT
+-R Aa 1918 o - Ap 14 2 1 D
+-R Aa 1918 o - O 27 2 0 S
+-R Aa 1930 1934 - May Sun>=1 0 1 D
+-R Aa 1930 1934 - O Sun>=1 0 0 S
+-R Aa 1937 1941 - Ap Sun>=8 0 1 D
+-R Aa 1937 o - O Sun>=8 0 0 S
+-R Aa 1938 o - O Sun>=1 0 0 S
+-R Aa 1939 1941 - O Sun>=8 0 0 S
+-R Aa 1942 o - F 9 2 1 W
+-R Aa 1945 o - Au 14 23u 1 P
+-R Aa 1945 o - S lastSun 2 0 S
+-R Aa 1946 o - Ap Sun>=8 2 1 D
+-R Aa 1946 o - O Sun>=8 2 0 S
+-R Aa 1947 1957 - Ap lastSun 2 1 D
+-R Aa 1947 1957 - S lastSun 2 0 S
+-R Aa 1959 o - Ap lastSun 2 1 D
+-R Aa 1959 o - O lastSun 2 0 S
+-R Ab 1957 o - Ap lastSun 2 1 D
+-R Ab 1957 o - O lastSun 2 0 S
+-R Ab 1959 1961 - Ap lastSun 2 1 D
+-R Ab 1959 o - O lastSun 2 0 S
+-R Ab 1960 1961 - S lastSun 2 0 S
++-6 W C%sT 2006
++-6 C C%sT
++R r 1918 o - Ap 14 2 1 D
++R r 1918 o - O 27 2 0 S
++R r 1930 1934 - May Sun>=1 0 1 D
++R r 1930 1934 - O Sun>=1 0 0 S
++R r 1937 1941 - Ap Sun>=8 0 1 D
++R r 1937 o - O Sun>=8 0 0 S
++R r 1938 o - O Sun>=1 0 0 S
++R r 1939 1941 - O Sun>=8 0 0 S
++R r 1942 o - F 9 2 1 W
++R r 1945 o - Au 14 23u 1 P
++R r 1945 o - S lastSun 2 0 S
++R r 1946 o - Ap Sun>=8 2 1 D
++R r 1946 o - O Sun>=8 2 0 S
++R r 1947 1957 - Ap lastSun 2 1 D
++R r 1947 1957 - S lastSun 2 0 S
++R r 1959 o - Ap lastSun 2 1 D
++R r 1959 o - O lastSun 2 0 S
++R Sw 1957 o - Ap lastSun 2 1 D
++R Sw 1957 o - O lastSun 2 0 S
++R Sw 1959 1961 - Ap lastSun 2 1 D
++R Sw 1959 o - O lastSun 2 0 S
++R Sw 1960 1961 - S lastSun 2 0 S
+ Z America/Regina -6:58:36 - LMT 1905 S
+--7 Aa M%sT 1960 Ap lastSun 2
++-7 r M%sT 1960 Ap lastSun 2
+ -6 - CST
+ Z America/Swift_Current -7:11:20 - LMT 1905 S
+--7 AU M%sT 1946 Ap lastSun 2
+--7 Aa M%sT 1950
+--7 Ab M%sT 1972 Ap lastSun 2
++-7 C M%sT 1946 Ap lastSun 2
++-7 r M%sT 1950
++-7 Sw M%sT 1972 Ap lastSun 2
+ -6 - CST
+-R Ac 1918 1919 - Ap Sun>=8 2 1 D
+-R Ac 1918 o - O 27 2 0 S
+-R Ac 1919 o - May 27 2 0 S
+-R Ac 1920 1923 - Ap lastSun 2 1 D
+-R Ac 1920 o - O lastSun 2 0 S
+-R Ac 1921 1923 - S lastSun 2 0 S
+-R Ac 1942 o - F 9 2 1 W
+-R Ac 1945 o - Au 14 23u 1 P
+-R Ac 1945 o - S lastSun 2 0 S
+-R Ac 1947 o - Ap lastSun 2 1 D
+-R Ac 1947 o - S lastSun 2 0 S
+-R Ac 1967 o - Ap lastSun 2 1 D
+-R Ac 1967 o - O lastSun 2 0 S
+-R Ac 1969 o - Ap lastSun 2 1 D
+-R Ac 1969 o - O lastSun 2 0 S
+-R Ac 1972 1986 - Ap lastSun 2 1 D
+-R Ac 1972 2006 - O lastSun 2 0 S
++R Ed 1918 1919 - Ap Sun>=8 2 1 D
++R Ed 1918 o - O 27 2 0 S
++R Ed 1919 o - May 27 2 0 S
++R Ed 1920 1923 - Ap lastSun 2 1 D
++R Ed 1920 o - O lastSun 2 0 S
++R Ed 1921 1923 - S lastSun 2 0 S
++R Ed 1942 o - F 9 2 1 W
++R Ed 1945 o - Au 14 23u 1 P
++R Ed 1945 o - S lastSun 2 0 S
++R Ed 1947 o - Ap lastSun 2 1 D
++R Ed 1947 o - S lastSun 2 0 S
++R Ed 1967 o - Ap lastSun 2 1 D
++R Ed 1967 o - O lastSun 2 0 S
++R Ed 1969 o - Ap lastSun 2 1 D
++R Ed 1969 o - O lastSun 2 0 S
++R Ed 1972 1986 - Ap lastSun 2 1 D
++R Ed 1972 2006 - O lastSun 2 0 S
+ Z America/Edmonton -7:33:52 - LMT 1906 S
+--7 Ac M%sT 1987
+--7 AU M%sT
+-R Ad 1918 o - Ap 14 2 1 D
+-R Ad 1918 o - O 27 2 0 S
+-R Ad 1942 o - F 9 2 1 W
+-R Ad 1945 o - Au 14 23u 1 P
+-R Ad 1945 o - S 30 2 0 S
+-R Ad 1946 1986 - Ap lastSun 2 1 D
+-R Ad 1946 o - O 13 2 0 S
+-R Ad 1947 1961 - S lastSun 2 0 S
+-R Ad 1962 2006 - O lastSun 2 0 S
++-7 Ed M%sT 1987
++-7 C M%sT
++R Va 1918 o - Ap 14 2 1 D
++R Va 1918 o - O 27 2 0 S
++R Va 1942 o - F 9 2 1 W
++R Va 1945 o - Au 14 23u 1 P
++R Va 1945 o - S 30 2 0 S
++R Va 1946 1986 - Ap lastSun 2 1 D
++R Va 1946 o - O 13 2 0 S
++R Va 1947 1961 - S lastSun 2 0 S
++R Va 1962 2006 - O lastSun 2 0 S
+ Z America/Vancouver -8:12:28 - LMT 1884
+--8 Ad P%sT 1987
+--8 AU P%sT
++-8 Va P%sT 1987
++-8 C P%sT
+ Z America/Dawson_Creek -8:0:56 - LMT 1884
+--8 AU P%sT 1947
+--8 Ad P%sT 1972 Au 30 2
++-8 C P%sT 1947
++-8 Va P%sT 1972 Au 30 2
+ -7 - MST
+ Z America/Fort_Nelson -8:10:47 - LMT 1884
+--8 Ad P%sT 1946
++-8 Va P%sT 1946
+ -8 - PST 1947
+--8 Ad P%sT 1987
+--8 AU P%sT 2015 Mar 8 2
++-8 Va P%sT 1987
++-8 C P%sT 2015 Mar 8 2
+ -7 - MST
+ Z America/Creston -7:46:4 - LMT 1884
+ -7 - MST 1916 O
+ -8 - PST 1918 Jun 2
+ -7 - MST
+-R Ae 1918 o - Ap 14 2 1 D
+-R Ae 1918 o - O 27 2 0 S
+-R Ae 1919 o - May 25 2 1 D
+-R Ae 1919 o - N 1 0 0 S
+-R Ae 1942 o - F 9 2 1 W
+-R Ae 1945 o - Au 14 23u 1 P
+-R Ae 1945 o - S 30 2 0 S
+-R Ae 1965 o - Ap lastSun 0 2 DD
+-R Ae 1965 o - O lastSun 2 0 S
+-R Ae 1980 1986 - Ap lastSun 2 1 D
+-R Ae 1980 2006 - O lastSun 2 0 S
+-R Ae 1987 2006 - Ap Sun>=1 2 1 D
++R Y 1918 o - Ap 14 2 1 D
++R Y 1918 o - O 27 2 0 S
++R Y 1919 o - May 25 2 1 D
++R Y 1919 o - N 1 0 0 S
++R Y 1942 o - F 9 2 1 W
++R Y 1945 o - Au 14 23u 1 P
++R Y 1945 o - S 30 2 0 S
++R Y 1965 o - Ap lastSun 0 2 DD
++R Y 1965 o - O lastSun 2 0 S
++R Y 1980 1986 - Ap lastSun 2 1 D
++R Y 1980 2006 - O lastSun 2 0 S
++R Y 1987 2006 - Ap Sun>=1 2 1 D
+ Z America/Pangnirtung 0 - -00 1921
+--4 Ae A%sT 1995 Ap Sun>=1 2
+--5 AU E%sT 1999 O 31 2
+--6 AU C%sT 2000 O 29 2
+--5 AU E%sT
++-4 Y A%sT 1995 Ap Sun>=1 2
++-5 C E%sT 1999 O 31 2
++-6 C C%sT 2000 O 29 2
++-5 C E%sT
+ Z America/Iqaluit 0 - -00 1942 Au
+--5 Ae E%sT 1999 O 31 2
+--6 AU C%sT 2000 O 29 2
+--5 AU E%sT
++-5 Y E%sT 1999 O 31 2
++-6 C C%sT 2000 O 29 2
++-5 C E%sT
+ Z America/Resolute 0 - -00 1947 Au 31
+--6 Ae C%sT 2000 O 29 2
++-6 Y C%sT 2000 O 29 2
+ -5 - EST 2001 Ap 1 3
+--6 AU C%sT 2006 O 29 2
++-6 C C%sT 2006 O 29 2
+ -5 - EST 2007 Mar 11 3
+--6 AU C%sT
++-6 C C%sT
+ Z America/Rankin_Inlet 0 - -00 1957
+--6 Ae C%sT 2000 O 29 2
++-6 Y C%sT 2000 O 29 2
+ -5 - EST 2001 Ap 1 3
+--6 AU C%sT
++-6 C C%sT
+ Z America/Cambridge_Bay 0 - -00 1920
+--7 Ae M%sT 1999 O 31 2
+--6 AU C%sT 2000 O 29 2
++-7 Y M%sT 1999 O 31 2
++-6 C C%sT 2000 O 29 2
+ -5 - EST 2000 N 5
+ -6 - CST 2001 Ap 1 3
+--7 AU M%sT
++-7 C M%sT
+ Z America/Yellowknife 0 - -00 1935
+--7 Ae M%sT 1980
+--7 AU M%sT
++-7 Y M%sT 1980
++-7 C M%sT
+ Z America/Inuvik 0 - -00 1953
+--8 Ae P%sT 1979 Ap lastSun 2
+--7 Ae M%sT 1980
+--7 AU M%sT
++-8 Y P%sT 1979 Ap lastSun 2
++-7 Y M%sT 1980
++-7 C M%sT
+ Z America/Whitehorse -9:0:12 - LMT 1900 Au 20
+--9 Ae Y%sT 1967 May 28
+--8 Ae P%sT 1980
+--8 AU P%sT
++-9 Y Y%sT 1967 May 28
++-8 Y P%sT 1980
++-8 C P%sT
+ Z America/Dawson -9:17:40 - LMT 1900 Au 20
+--9 Ae Y%sT 1973 O 28
+--8 Ae P%sT 1980
+--8 AU P%sT
+-R Af 1939 o - F 5 0 1 D
+-R Af 1939 o - Jun 25 0 0 S
+-R Af 1940 o - D 9 0 1 D
+-R Af 1941 o - Ap 1 0 0 S
+-R Af 1943 o - D 16 0 1 W
+-R Af 1944 o - May 1 0 0 S
+-R Af 1950 o - F 12 0 1 D
+-R Af 1950 o - Jul 30 0 0 S
+-R Af 1996 2000 - Ap Sun>=1 2 1 D
+-R Af 1996 2000 - O lastSun 2 0 S
+-R Af 2001 o - May Sun>=1 2 1 D
+-R Af 2001 o - S lastSun 2 0 S
+-R Af 2002 ma - Ap Sun>=1 2 1 D
+-R Af 2002 ma - O lastSun 2 0 S
++-9 Y Y%sT 1973 O 28
++-8 Y P%sT 1980
++-8 C P%sT
++R m 1939 o - F 5 0 1 D
++R m 1939 o - Jun 25 0 0 S
++R m 1940 o - D 9 0 1 D
++R m 1941 o - Ap 1 0 0 S
++R m 1943 o - D 16 0 1 W
++R m 1944 o - May 1 0 0 S
++R m 1950 o - F 12 0 1 D
++R m 1950 o - Jul 30 0 0 S
++R m 1996 2000 - Ap Sun>=1 2 1 D
++R m 1996 2000 - O lastSun 2 0 S
++R m 2001 o - May Sun>=1 2 1 D
++R m 2001 o - S lastSun 2 0 S
++R m 2002 ma - Ap Sun>=1 2 1 D
++R m 2002 ma - O lastSun 2 0 S
+ Z America/Cancun -5:47:4 - LMT 1922 Ja 1 0:12:56
+ -6 - CST 1981 D 23
+--5 Af E%sT 1998 Au 2 2
+--6 Af C%sT 2015 F 1 2
++-5 m E%sT 1998 Au 2 2
++-6 m C%sT 2015 F 1 2
+ -5 - EST
+ Z America/Merida -5:58:28 - LMT 1922 Ja 1 0:1:32
+ -6 - CST 1981 D 23
+ -5 - EST 1982 D 2
+--6 Af C%sT
++-6 m C%sT
+ Z America/Matamoros -6:40 - LMT 1921 D 31 23:20
+ -6 - CST 1988
+--6 AF C%sT 1989
+--6 Af C%sT 2010
+--6 AF C%sT
++-6 u C%sT 1989
++-6 m C%sT 2010
++-6 u C%sT
+ Z America/Monterrey -6:41:16 - LMT 1921 D 31 23:18:44
+ -6 - CST 1988
+--6 AF C%sT 1989
+--6 Af C%sT
++-6 u C%sT 1989
++-6 m C%sT
+ Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 0:23:24
+ -7 - MST 1927 Jun 10 23
+ -6 - CST 1930 N 15
+ -7 - MST 1931 May 1 23
+ -6 - CST 1931 O
+ -7 - MST 1932 Ap
+--6 Af C%sT 2001 S 30 2
++-6 m C%sT 2001 S 30 2
+ -6 - CST 2002 F 20
+--6 Af C%sT
++-6 m C%sT
+ Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 0:2:20
+ -7 - MST 1927 Jun 10 23
+ -6 - CST 1930 N 15
+@@ -3215,10 +3232,10 @@ Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 0:2:20
+ -6 - CST 1931 O
+ -7 - MST 1932 Ap
+ -6 - CST 1996
+--6 Af C%sT 1998
++-6 m C%sT 1998
+ -6 - CST 1998 Ap Sun>=1 3
+--7 Af M%sT 2010
+--7 AF M%sT
++-7 m M%sT 2010
++-7 u M%sT
+ Z America/Chihuahua -7:4:20 - LMT 1921 D 31 23:55:40
+ -7 - MST 1927 Jun 10 23
+ -6 - CST 1930 N 15
+@@ -3226,9 +3243,9 @@ Z America/Chihuahua -7:4:20 - LMT 1921 D 31 23:55:40
+ -6 - CST 1931 O
+ -7 - MST 1932 Ap
+ -6 - CST 1996
+--6 Af C%sT 1998
++-6 m C%sT 1998
+ -6 - CST 1998 Ap Sun>=1 3
+--7 Af M%sT
++-7 m M%sT
+ Z America/Hermosillo -7:23:52 - LMT 1921 D 31 23:36:8
+ -7 - MST 1927 Jun 10 23
+ -6 - CST 1930 N 15
+@@ -3238,7 +3255,7 @@ Z America/Hermosillo -7:23:52 - LMT 1921 D 31 23:36:8
+ -6 - CST 1942 Ap 24
+ -7 - MST 1949 Ja 14
+ -8 - PST 1970
+--7 Af M%sT 1999
++-7 m M%sT 1999
+ -7 - MST
+ Z America/Mazatlan -7:5:40 - LMT 1921 D 31 23:54:20
+ -7 - MST 1927 Jun 10 23
+@@ -3249,7 +3266,7 @@ Z America/Mazatlan -7:5:40 - LMT 1921 D 31 23:54:20
+ -6 - CST 1942 Ap 24
+ -7 - MST 1949 Ja 14
+ -8 - PST 1970
+--7 Af M%sT
++-7 m M%sT
+ Z America/Bahia_Banderas -7:1 - LMT 1921 D 31 23:59
+ -7 - MST 1927 Jun 10 23
+ -6 - CST 1930 N 15
+@@ -3259,8 +3276,8 @@ Z America/Bahia_Banderas -7:1 - LMT 1921 D 31 23:59
+ -6 - CST 1942 Ap 24
+ -7 - MST 1949 Ja 14
+ -8 - PST 1970
+--7 Af M%sT 2010 Ap 4 2
+--6 Af C%sT
++-7 m M%sT 2010 Ap 4 2
++-6 m C%sT
+ Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 0:11:56
+ -7 - MST 1924
+ -8 - PST 1927 Jun 10 23
+@@ -3273,315 +3290,315 @@ Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 0:11:56
+ -8 - PST 1948 Ap 5
+ -8 1 PDT 1949 Ja 14
+ -8 - PST 1954
+--8 AJ P%sT 1961
++-8 CA P%sT 1961
+ -8 - PST 1976
+--8 AF P%sT 1996
+--8 Af P%sT 2001
+--8 AF P%sT 2002 F 20
+--8 Af P%sT 2010
+--8 AF P%sT
+-R Ag 1964 1975 - O lastSun 2 0 S
+-R Ag 1964 1975 - Ap lastSun 2 1 D
++-8 u P%sT 1996
++-8 m P%sT 2001
++-8 u P%sT 2002 F 20
++-8 m P%sT 2010
++-8 u P%sT
++R BS 1964 1975 - O lastSun 2 0 S
++R BS 1964 1975 - Ap lastSun 2 1 D
+ Z America/Nassau -5:9:30 - LMT 1912 Mar 2
+--5 Ag E%sT 1976
+--5 AF E%sT
+-R Ah 1977 o - Jun 12 2 1 D
+-R Ah 1977 1978 - O Sun>=1 2 0 S
+-R Ah 1978 1980 - Ap Sun>=15 2 1 D
+-R Ah 1979 o - S 30 2 0 S
+-R Ah 1980 o - S 25 2 0 S
++-5 BS E%sT 1976
++-5 u E%sT
++R BB 1977 o - Jun 12 2 1 D
++R BB 1977 1978 - O Sun>=1 2 0 S
++R BB 1978 1980 - Ap Sun>=15 2 1 D
++R BB 1979 o - S 30 2 0 S
++R BB 1980 o - S 25 2 0 S
+ Z America/Barbados -3:58:29 - LMT 1924
+ -3:58:29 - BMT 1932
+--4 Ah A%sT
+-R Ai 1918 1942 - O Sun>=2 0 0:30 -0530
+-R Ai 1919 1943 - F Sun>=9 0 0 CST
+-R Ai 1973 o - D 5 0 1 CDT
+-R Ai 1974 o - F 9 0 0 CST
+-R Ai 1982 o - D 18 0 1 CDT
+-R Ai 1983 o - F 12 0 0 CST
++-4 BB A%sT
++R BZ 1918 1942 - O Sun>=2 0 0:30 -0530
++R BZ 1919 1943 - F Sun>=9 0 0 CST
++R BZ 1973 o - D 5 0 1 CDT
++R BZ 1974 o - F 9 0 0 CST
++R BZ 1982 o - D 18 0 1 CDT
++R BZ 1983 o - F 12 0 0 CST
+ Z America/Belize -5:52:48 - LMT 1912 Ap
+--6 Ai %s
++-6 BZ %s
+ Z Atlantic/Bermuda -4:19:18 - LMT 1930 Ja 1 2
+ -4 - AST 1974 Ap 28 2
+--4 AU A%sT 1976
+--4 AF A%sT
+-R Aj 1979 1980 - F lastSun 0 1 D
+-R Aj 1979 1980 - Jun Sun>=1 0 0 S
+-R Aj 1991 1992 - Ja Sat>=15 0 1 D
+-R Aj 1991 o - Jul 1 0 0 S
+-R Aj 1992 o - Mar 15 0 0 S
++-4 C A%sT 1976
++-4 u A%sT
++R CR 1979 1980 - F lastSun 0 1 D
++R CR 1979 1980 - Jun Sun>=1 0 0 S
++R CR 1991 1992 - Ja Sat>=15 0 1 D
++R CR 1991 o - Jul 1 0 0 S
++R CR 1992 o - Mar 15 0 0 S
+ Z America/Costa_Rica -5:36:13 - LMT 1890
+ -5:36:13 - SJMT 1921 Ja 15
+--6 Aj C%sT
+-R Ak 1928 o - Jun 10 0 1 D
+-R Ak 1928 o - O 10 0 0 S
+-R Ak 1940 1942 - Jun Sun>=1 0 1 D
+-R Ak 1940 1942 - S Sun>=1 0 0 S
+-R Ak 1945 1946 - Jun Sun>=1 0 1 D
+-R Ak 1945 1946 - S Sun>=1 0 0 S
+-R Ak 1965 o - Jun 1 0 1 D
+-R Ak 1965 o - S 30 0 0 S
+-R Ak 1966 o - May 29 0 1 D
+-R Ak 1966 o - O 2 0 0 S
+-R Ak 1967 o - Ap 8 0 1 D
+-R Ak 1967 1968 - S Sun>=8 0 0 S
+-R Ak 1968 o - Ap 14 0 1 D
+-R Ak 1969 1977 - Ap lastSun 0 1 D
+-R Ak 1969 1971 - O lastSun 0 0 S
+-R Ak 1972 1974 - O 8 0 0 S
+-R Ak 1975 1977 - O lastSun 0 0 S
+-R Ak 1978 o - May 7 0 1 D
+-R Ak 1978 1990 - O Sun>=8 0 0 S
+-R Ak 1979 1980 - Mar Sun>=15 0 1 D
+-R Ak 1981 1985 - May Sun>=5 0 1 D
+-R Ak 1986 1989 - Mar Sun>=14 0 1 D
+-R Ak 1990 1997 - Ap Sun>=1 0 1 D
+-R Ak 1991 1995 - O Sun>=8 0s 0 S
+-R Ak 1996 o - O 6 0s 0 S
+-R Ak 1997 o - O 12 0s 0 S
+-R Ak 1998 1999 - Mar lastSun 0s 1 D
+-R Ak 1998 2003 - O lastSun 0s 0 S
+-R Ak 2000 2003 - Ap Sun>=1 0s 1 D
+-R Ak 2004 o - Mar lastSun 0s 1 D
+-R Ak 2006 2010 - O lastSun 0s 0 S
+-R Ak 2007 o - Mar Sun>=8 0s 1 D
+-R Ak 2008 o - Mar Sun>=15 0s 1 D
+-R Ak 2009 2010 - Mar Sun>=8 0s 1 D
+-R Ak 2011 o - Mar Sun>=15 0s 1 D
+-R Ak 2011 o - N 13 0s 0 S
+-R Ak 2012 o - Ap 1 0s 1 D
+-R Ak 2012 ma - N Sun>=1 0s 0 S
+-R Ak 2013 ma - Mar Sun>=8 0s 1 D
++-6 CR C%sT
++R Q 1928 o - Jun 10 0 1 D
++R Q 1928 o - O 10 0 0 S
++R Q 1940 1942 - Jun Sun>=1 0 1 D
++R Q 1940 1942 - S Sun>=1 0 0 S
++R Q 1945 1946 - Jun Sun>=1 0 1 D
++R Q 1945 1946 - S Sun>=1 0 0 S
++R Q 1965 o - Jun 1 0 1 D
++R Q 1965 o - S 30 0 0 S
++R Q 1966 o - May 29 0 1 D
++R Q 1966 o - O 2 0 0 S
++R Q 1967 o - Ap 8 0 1 D
++R Q 1967 1968 - S Sun>=8 0 0 S
++R Q 1968 o - Ap 14 0 1 D
++R Q 1969 1977 - Ap lastSun 0 1 D
++R Q 1969 1971 - O lastSun 0 0 S
++R Q 1972 1974 - O 8 0 0 S
++R Q 1975 1977 - O lastSun 0 0 S
++R Q 1978 o - May 7 0 1 D
++R Q 1978 1990 - O Sun>=8 0 0 S
++R Q 1979 1980 - Mar Sun>=15 0 1 D
++R Q 1981 1985 - May Sun>=5 0 1 D
++R Q 1986 1989 - Mar Sun>=14 0 1 D
++R Q 1990 1997 - Ap Sun>=1 0 1 D
++R Q 1991 1995 - O Sun>=8 0s 0 S
++R Q 1996 o - O 6 0s 0 S
++R Q 1997 o - O 12 0s 0 S
++R Q 1998 1999 - Mar lastSun 0s 1 D
++R Q 1998 2003 - O lastSun 0s 0 S
++R Q 2000 2003 - Ap Sun>=1 0s 1 D
++R Q 2004 o - Mar lastSun 0s 1 D
++R Q 2006 2010 - O lastSun 0s 0 S
++R Q 2007 o - Mar Sun>=8 0s 1 D
++R Q 2008 o - Mar Sun>=15 0s 1 D
++R Q 2009 2010 - Mar Sun>=8 0s 1 D
++R Q 2011 o - Mar Sun>=15 0s 1 D
++R Q 2011 o - N 13 0s 0 S
++R Q 2012 o - Ap 1 0s 1 D
++R Q 2012 ma - N Sun>=1 0s 0 S
++R Q 2013 ma - Mar Sun>=8 0s 1 D
+ Z America/Havana -5:29:28 - LMT 1890
+ -5:29:36 - HMT 1925 Jul 19 12
+--5 Ak C%sT
+-R Al 1966 o - O 30 0 1 EDT
+-R Al 1967 o - F 28 0 0 EST
+-R Al 1969 1973 - O lastSun 0 0:30 -0430
+-R Al 1970 o - F 21 0 0 EST
+-R Al 1971 o - Ja 20 0 0 EST
+-R Al 1972 1974 - Ja 21 0 0 EST
++-5 Q C%sT
++R DO 1966 o - O 30 0 1 EDT
++R DO 1967 o - F 28 0 0 EST
++R DO 1969 1973 - O lastSun 0 0:30 -0430
++R DO 1970 o - F 21 0 0 EST
++R DO 1971 o - Ja 20 0 0 EST
++R DO 1972 1974 - Ja 21 0 0 EST
+ Z America/Santo_Domingo -4:39:36 - LMT 1890
+ -4:40 - SDMT 1933 Ap 1 12
+--5 Al %s 1974 O 27
++-5 DO %s 1974 O 27
+ -4 - AST 2000 O 29 2
+--5 AF E%sT 2000 D 3 1
++-5 u E%sT 2000 D 3 1
+ -4 - AST
+-R Am 1987 1988 - May Sun>=1 0 1 D
+-R Am 1987 1988 - S lastSun 0 0 S
++R SV 1987 1988 - May Sun>=1 0 1 D
++R SV 1987 1988 - S lastSun 0 0 S
+ Z America/El_Salvador -5:56:48 - LMT 1921
+--6 Am C%sT
+-R An 1973 o - N 25 0 1 D
+-R An 1974 o - F 24 0 0 S
+-R An 1983 o - May 21 0 1 D
+-R An 1983 o - S 22 0 0 S
+-R An 1991 o - Mar 23 0 1 D
+-R An 1991 o - S 7 0 0 S
+-R An 2006 o - Ap 30 0 1 D
+-R An 2006 o - O 1 0 0 S
++-6 SV C%sT
++R GT 1973 o - N 25 0 1 D
++R GT 1974 o - F 24 0 0 S
++R GT 1983 o - May 21 0 1 D
++R GT 1983 o - S 22 0 0 S
++R GT 1991 o - Mar 23 0 1 D
++R GT 1991 o - S 7 0 0 S
++R GT 2006 o - Ap 30 0 1 D
++R GT 2006 o - O 1 0 0 S
+ Z America/Guatemala -6:2:4 - LMT 1918 O 5
+--6 An C%sT
+-R Ao 1983 o - May 8 0 1 D
+-R Ao 1984 1987 - Ap lastSun 0 1 D
+-R Ao 1983 1987 - O lastSun 0 0 S
+-R Ao 1988 1997 - Ap Sun>=1 1s 1 D
+-R Ao 1988 1997 - O lastSun 1s 0 S
+-R Ao 2005 2006 - Ap Sun>=1 0 1 D
+-R Ao 2005 2006 - O lastSun 0 0 S
+-R Ao 2012 2015 - Mar Sun>=8 2 1 D
+-R Ao 2012 2015 - N Sun>=1 2 0 S
+-R Ao 2017 ma - Mar Sun>=8 2 1 D
+-R Ao 2017 ma - N Sun>=1 2 0 S
++-6 GT C%sT
++R HT 1983 o - May 8 0 1 D
++R HT 1984 1987 - Ap lastSun 0 1 D
++R HT 1983 1987 - O lastSun 0 0 S
++R HT 1988 1997 - Ap Sun>=1 1s 1 D
++R HT 1988 1997 - O lastSun 1s 0 S
++R HT 2005 2006 - Ap Sun>=1 0 1 D
++R HT 2005 2006 - O lastSun 0 0 S
++R HT 2012 2015 - Mar Sun>=8 2 1 D
++R HT 2012 2015 - N Sun>=1 2 0 S
++R HT 2017 ma - Mar Sun>=8 2 1 D
++R HT 2017 ma - N Sun>=1 2 0 S
+ Z America/Port-au-Prince -4:49:20 - LMT 1890
+ -4:49 - PPMT 1917 Ja 24 12
+--5 Ao E%sT
+-R Ap 1987 1988 - May Sun>=1 0 1 D
+-R Ap 1987 1988 - S lastSun 0 0 S
+-R Ap 2006 o - May Sun>=1 0 1 D
+-R Ap 2006 o - Au M>=1 0 0 S
++-5 HT E%sT
++R HN 1987 1988 - May Sun>=1 0 1 D
++R HN 1987 1988 - S lastSun 0 0 S
++R HN 2006 o - May Sun>=1 0 1 D
++R HN 2006 o - Au M>=1 0 0 S
+ Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap
+--6 Ap C%sT
++-6 HN C%sT
+ Z America/Jamaica -5:7:10 - LMT 1890
+ -5:7:10 - KMT 1912 F
+ -5 - EST 1974
+--5 AF E%sT 1984
++-5 u E%sT 1984
+ -5 - EST
+ Z America/Martinique -4:4:20 - LMT 1890
+ -4:4:20 - FFMT 1911 May
+ -4 - AST 1980 Ap 6
+ -4 1 ADT 1980 S 28
+ -4 - AST
+-R Aq 1979 1980 - Mar Sun>=16 0 1 D
+-R Aq 1979 1980 - Jun M>=23 0 0 S
+-R Aq 2005 o - Ap 10 0 1 D
+-R Aq 2005 o - O Sun>=1 0 0 S
+-R Aq 2006 o - Ap 30 2 1 D
+-R Aq 2006 o - O Sun>=1 1 0 S
++R NI 1979 1980 - Mar Sun>=16 0 1 D
++R NI 1979 1980 - Jun M>=23 0 0 S
++R NI 2005 o - Ap 10 0 1 D
++R NI 2005 o - O Sun>=1 0 0 S
++R NI 2006 o - Ap 30 2 1 D
++R NI 2006 o - O Sun>=1 1 0 S
+ Z America/Managua -5:45:8 - LMT 1890
+ -5:45:12 - MMT 1934 Jun 23
+ -6 - CST 1973 May
+ -5 - EST 1975 F 16
+--6 Aq C%sT 1992 Ja 1 4
++-6 NI C%sT 1992 Ja 1 4
+ -5 - EST 1992 S 24
+ -6 - CST 1993
+ -5 - EST 1997
+--6 Aq C%sT
++-6 NI C%sT
+ Z America/Panama -5:18:8 - LMT 1890
+ -5:19:36 - CMT 1908 Ap 22
+ -5 - EST
+ Li America/Panama America/Cayman
+ Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12
+ -4 - AST 1942 May 3
+--4 AF A%sT 1946
++-4 u A%sT 1946
+ -4 - AST
+ Z America/Miquelon -3:44:40 - LMT 1911 May 15
+ -4 - AST 1980 May
+ -3 - -03 1987
+--3 AU -03/-02
++-3 C -03/-02
+ Z America/Grand_Turk -4:44:32 - LMT 1890
+ -5:7:10 - KMT 1912 F
+ -5 - EST 1979
+--5 AF E%sT 2015 N Sun>=1 2
++-5 u E%sT 2015 N Sun>=1 2
+ -4 - AST 2018 Mar 11 3
+--5 AF E%sT
+-R Ar 1930 o - D 1 0 1 -
+-R Ar 1931 o - Ap 1 0 0 -
+-R Ar 1931 o - O 15 0 1 -
+-R Ar 1932 1940 - Mar 1 0 0 -
+-R Ar 1932 1939 - N 1 0 1 -
+-R Ar 1940 o - Jul 1 0 1 -
+-R Ar 1941 o - Jun 15 0 0 -
+-R Ar 1941 o - O 15 0 1 -
+-R Ar 1943 o - Au 1 0 0 -
+-R Ar 1943 o - O 15 0 1 -
+-R Ar 1946 o - Mar 1 0 0 -
+-R Ar 1946 o - O 1 0 1 -
+-R Ar 1963 o - O 1 0 0 -
+-R Ar 1963 o - D 15 0 1 -
+-R Ar 1964 1966 - Mar 1 0 0 -
+-R Ar 1964 1966 - O 15 0 1 -
+-R Ar 1967 o - Ap 2 0 0 -
+-R Ar 1967 1968 - O Sun>=1 0 1 -
+-R Ar 1968 1969 - Ap Sun>=1 0 0 -
+-R Ar 1974 o - Ja 23 0 1 -
+-R Ar 1974 o - May 1 0 0 -
+-R Ar 1988 o - D 1 0 1 -
+-R Ar 1989 1993 - Mar Sun>=1 0 0 -
+-R Ar 1989 1992 - O Sun>=15 0 1 -
+-R Ar 1999 o - O Sun>=1 0 1 -
+-R Ar 2000 o - Mar 3 0 0 -
+-R Ar 2007 o - D 30 0 1 -
+-R Ar 2008 2009 - Mar Sun>=15 0 0 -
+-R Ar 2008 o - O Sun>=15 0 1 -
++-5 u E%sT
++R A 1930 o - D 1 0 1 -
++R A 1931 o - Ap 1 0 0 -
++R A 1931 o - O 15 0 1 -
++R A 1932 1940 - Mar 1 0 0 -
++R A 1932 1939 - N 1 0 1 -
++R A 1940 o - Jul 1 0 1 -
++R A 1941 o - Jun 15 0 0 -
++R A 1941 o - O 15 0 1 -
++R A 1943 o - Au 1 0 0 -
++R A 1943 o - O 15 0 1 -
++R A 1946 o - Mar 1 0 0 -
++R A 1946 o - O 1 0 1 -
++R A 1963 o - O 1 0 0 -
++R A 1963 o - D 15 0 1 -
++R A 1964 1966 - Mar 1 0 0 -
++R A 1964 1966 - O 15 0 1 -
++R A 1967 o - Ap 2 0 0 -
++R A 1967 1968 - O Sun>=1 0 1 -
++R A 1968 1969 - Ap Sun>=1 0 0 -
++R A 1974 o - Ja 23 0 1 -
++R A 1974 o - May 1 0 0 -
++R A 1988 o - D 1 0 1 -
++R A 1989 1993 - Mar Sun>=1 0 0 -
++R A 1989 1992 - O Sun>=15 0 1 -
++R A 1999 o - O Sun>=1 0 1 -
++R A 2000 o - Mar 3 0 0 -
++R A 2007 o - D 30 0 1 -
++R A 2008 2009 - Mar Sun>=15 0 0 -
++R A 2008 o - O Sun>=15 0 1 -
+ Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
+--3 Ar -03/-02
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
++-3 A -03/-02
+ Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1991 Mar 3
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1991 Mar 3
+ -4 - -04 1991 O 20
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
+--3 Ar -03/-02
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
++-3 A -03/-02
+ Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1991 Mar 3
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1991 Mar 3
+ -4 - -04 1991 O 20
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
+--3 Ar -03/-02 2008 O 18
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
++-3 A -03/-02 2008 O 18
+ -3 - -03
+ Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1991 Mar 3
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1991 Mar 3
+ -4 - -04 1991 O 20
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
+ -3 - -03 2004 Jun
+ -4 - -04 2004 Jun 13
+--3 Ar -03/-02
++-3 A -03/-02
+ Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1991 Mar
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1991 Mar
+ -4 - -04 1991 May 7
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
+ -3 - -03 2004 Jun
+ -4 - -04 2004 Jun 20
+--3 Ar -03/-02 2008 O 18
++-3 A -03/-02 2008 O 18
+ -3 - -03
+ Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1991 Mar
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1991 Mar
+ -4 - -04 1991 May 7
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
+ -3 - -03 2004 May 31
+ -4 - -04 2004 Jul 25
+--3 Ar -03/-02 2008 O 18
++-3 A -03/-02 2008 O 18
+ -3 - -03
+ Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1990 Mar 4
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1990 Mar 4
+ -4 - -04 1990 O 28
+ -4 1 -03 1991 Mar 17
+ -4 - -04 1991 O 6
+ -3 1 -02 1992
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
+--3 Ar -03/-02 2008 O 18
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
++-3 A -03/-02 2008 O 18
+ -3 - -03
+ Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1991 Mar 3
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1991 Mar 3
+ -4 - -04 1991 O 20
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
+ -3 - -03 2004 Jun
+ -4 - -04 2004 Jun 20
+--3 Ar -03/-02 2008 O 18
++-3 A -03/-02 2008 O 18
+ -3 - -03
+ Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1990 Mar 4
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1990 Mar 4
+ -4 - -04 1990 O 15
+ -4 1 -03 1991 Mar
+ -4 - -04 1991 O 15
+ -4 1 -03 1992 Mar
+ -4 - -04 1992 O 18
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
+ -3 - -03 2004 May 23
+ -4 - -04 2004 S 26
+--3 Ar -03/-02 2008 O 18
++-3 A -03/-02 2008 O 18
+ -3 - -03
+-R As 2008 2009 - Mar Sun>=8 0 0 -
+-R As 2007 2008 - O Sun>=8 0 1 -
++R Sa 2008 2009 - Mar Sun>=8 0 0 -
++R Sa 2007 2008 - O Sun>=8 0 1 -
+ Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1990
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1990
+ -3 1 -02 1990 Mar 14
+ -4 - -04 1990 O 15
+ -4 1 -03 1991 Mar
+@@ -3590,286 +3607,288 @@ Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31
+ -4 1 -03 2000 Mar 3
+ -3 - -03 2004 May 31
+ -4 - -04 2004 Jul 25
+--3 Ar -03/-02 2008 Ja 21
+--4 As -04/-03 2009 O 11
++-3 A -03/-02 2008 Ja 21
++-4 Sa -04/-03 2009 O 11
+ -3 - -03
+ Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
+ -3 - -03 2004 Jun
+ -4 - -04 2004 Jun 20
+--3 Ar -03/-02 2008 O 18
++-3 A -03/-02 2008 O 18
+ -3 - -03
+ Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31
+ -4:16:48 - CMT 1920 May
+ -4 - -04 1930 D
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1999 O 3
+--4 Ar -04/-03 2000 Mar 3
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1999 O 3
++-4 A -04/-03 2000 Mar 3
+ -3 - -03 2004 May 30
+ -4 - -04 2004 Jun 20
+--3 Ar -03/-02 2008 O 18
++-3 A -03/-02 2008 O 18
+ -3 - -03
+ Li America/Curacao America/Aruba
+ Z America/La_Paz -4:32:36 - LMT 1890
+ -4:32:36 - CMT 1931 O 15
+ -4:32:36 1 BST 1932 Mar 21
+ -4 - -04
+-R At 1931 o - O 3 11 1 -
+-R At 1932 1933 - Ap 1 0 0 -
+-R At 1932 o - O 3 0 1 -
+-R At 1949 1952 - D 1 0 1 -
+-R At 1950 o - Ap 16 1 0 -
+-R At 1951 1952 - Ap 1 0 0 -
+-R At 1953 o - Mar 1 0 0 -
+-R At 1963 o - D 9 0 1 -
+-R At 1964 o - Mar 1 0 0 -
+-R At 1965 o - Ja 31 0 1 -
+-R At 1965 o - Mar 31 0 0 -
+-R At 1965 o - D 1 0 1 -
+-R At 1966 1968 - Mar 1 0 0 -
+-R At 1966 1967 - N 1 0 1 -
+-R At 1985 o - N 2 0 1 -
+-R At 1986 o - Mar 15 0 0 -
+-R At 1986 o - O 25 0 1 -
+-R At 1987 o - F 14 0 0 -
+-R At 1987 o - O 25 0 1 -
+-R At 1988 o - F 7 0 0 -
+-R At 1988 o - O 16 0 1 -
+-R At 1989 o - Ja 29 0 0 -
+-R At 1989 o - O 15 0 1 -
+-R At 1990 o - F 11 0 0 -
+-R At 1990 o - O 21 0 1 -
+-R At 1991 o - F 17 0 0 -
+-R At 1991 o - O 20 0 1 -
+-R At 1992 o - F 9 0 0 -
+-R At 1992 o - O 25 0 1 -
+-R At 1993 o - Ja 31 0 0 -
+-R At 1993 1995 - O Sun>=11 0 1 -
+-R At 1994 1995 - F Sun>=15 0 0 -
+-R At 1996 o - F 11 0 0 -
+-R At 1996 o - O 6 0 1 -
+-R At 1997 o - F 16 0 0 -
+-R At 1997 o - O 6 0 1 -
+-R At 1998 o - Mar 1 0 0 -
+-R At 1998 o - O 11 0 1 -
+-R At 1999 o - F 21 0 0 -
+-R At 1999 o - O 3 0 1 -
+-R At 2000 o - F 27 0 0 -
+-R At 2000 2001 - O Sun>=8 0 1 -
+-R At 2001 2006 - F Sun>=15 0 0 -
+-R At 2002 o - N 3 0 1 -
+-R At 2003 o - O 19 0 1 -
+-R At 2004 o - N 2 0 1 -
+-R At 2005 o - O 16 0 1 -
+-R At 2006 o - N 5 0 1 -
+-R At 2007 o - F 25 0 0 -
+-R At 2007 o - O Sun>=8 0 1 -
+-R At 2008 2017 - O Sun>=15 0 1 -
+-R At 2008 2011 - F Sun>=15 0 0 -
+-R At 2012 o - F Sun>=22 0 0 -
+-R At 2013 2014 - F Sun>=15 0 0 -
+-R At 2015 o - F Sun>=22 0 0 -
+-R At 2016 2022 - F Sun>=15 0 0 -
+-R At 2018 ma - N Sun>=1 0 1 -
+-R At 2023 o - F Sun>=22 0 0 -
+-R At 2024 2025 - F Sun>=15 0 0 -
+-R At 2026 o - F Sun>=22 0 0 -
+-R At 2027 2033 - F Sun>=15 0 0 -
+-R At 2034 o - F Sun>=22 0 0 -
+-R At 2035 2036 - F Sun>=15 0 0 -
+-R At 2037 o - F Sun>=22 0 0 -
+-R At 2038 ma - F Sun>=15 0 0 -
++R B 1931 o - O 3 11 1 -
++R B 1932 1933 - Ap 1 0 0 -
++R B 1932 o - O 3 0 1 -
++R B 1949 1952 - D 1 0 1 -
++R B 1950 o - Ap 16 1 0 -
++R B 1951 1952 - Ap 1 0 0 -
++R B 1953 o - Mar 1 0 0 -
++R B 1963 o - D 9 0 1 -
++R B 1964 o - Mar 1 0 0 -
++R B 1965 o - Ja 31 0 1 -
++R B 1965 o - Mar 31 0 0 -
++R B 1965 o - D 1 0 1 -
++R B 1966 1968 - Mar 1 0 0 -
++R B 1966 1967 - N 1 0 1 -
++R B 1985 o - N 2 0 1 -
++R B 1986 o - Mar 15 0 0 -
++R B 1986 o - O 25 0 1 -
++R B 1987 o - F 14 0 0 -
++R B 1987 o - O 25 0 1 -
++R B 1988 o - F 7 0 0 -
++R B 1988 o - O 16 0 1 -
++R B 1989 o - Ja 29 0 0 -
++R B 1989 o - O 15 0 1 -
++R B 1990 o - F 11 0 0 -
++R B 1990 o - O 21 0 1 -
++R B 1991 o - F 17 0 0 -
++R B 1991 o - O 20 0 1 -
++R B 1992 o - F 9 0 0 -
++R B 1992 o - O 25 0 1 -
++R B 1993 o - Ja 31 0 0 -
++R B 1993 1995 - O Sun>=11 0 1 -
++R B 1994 1995 - F Sun>=15 0 0 -
++R B 1996 o - F 11 0 0 -
++R B 1996 o - O 6 0 1 -
++R B 1997 o - F 16 0 0 -
++R B 1997 o - O 6 0 1 -
++R B 1998 o - Mar 1 0 0 -
++R B 1998 o - O 11 0 1 -
++R B 1999 o - F 21 0 0 -
++R B 1999 o - O 3 0 1 -
++R B 2000 o - F 27 0 0 -
++R B 2000 2001 - O Sun>=8 0 1 -
++R B 2001 2006 - F Sun>=15 0 0 -
++R B 2002 o - N 3 0 1 -
++R B 2003 o - O 19 0 1 -
++R B 2004 o - N 2 0 1 -
++R B 2005 o - O 16 0 1 -
++R B 2006 o - N 5 0 1 -
++R B 2007 o - F 25 0 0 -
++R B 2007 o - O Sun>=8 0 1 -
++R B 2008 2017 - O Sun>=15 0 1 -
++R B 2008 2011 - F Sun>=15 0 0 -
++R B 2012 o - F Sun>=22 0 0 -
++R B 2013 2014 - F Sun>=15 0 0 -
++R B 2015 o - F Sun>=22 0 0 -
++R B 2016 2022 - F Sun>=15 0 0 -
++R B 2018 ma - N Sun>=1 0 1 -
++R B 2023 o - F Sun>=22 0 0 -
++R B 2024 2025 - F Sun>=15 0 0 -
++R B 2026 o - F Sun>=22 0 0 -
++R B 2027 2033 - F Sun>=15 0 0 -
++R B 2034 o - F Sun>=22 0 0 -
++R B 2035 2036 - F Sun>=15 0 0 -
++R B 2037 o - F Sun>=22 0 0 -
++R B 2038 ma - F Sun>=15 0 0 -
+ Z America/Noronha -2:9:40 - LMT 1914
+--2 At -02/-01 1990 S 17
++-2 B -02/-01 1990 S 17
+ -2 - -02 1999 S 30
+--2 At -02/-01 2000 O 15
++-2 B -02/-01 2000 O 15
+ -2 - -02 2001 S 13
+--2 At -02/-01 2002 O
++-2 B -02/-01 2002 O
+ -2 - -02
+ Z America/Belem -3:13:56 - LMT 1914
+--3 At -03/-02 1988 S 12
++-3 B -03/-02 1988 S 12
+ -3 - -03
+ Z America/Santarem -3:38:48 - LMT 1914
+--4 At -04/-03 1988 S 12
++-4 B -04/-03 1988 S 12
+ -4 - -04 2008 Jun 24
+ -3 - -03
+ Z America/Fortaleza -2:34 - LMT 1914
+--3 At -03/-02 1990 S 17
++-3 B -03/-02 1990 S 17
+ -3 - -03 1999 S 30
+--3 At -03/-02 2000 O 22
++-3 B -03/-02 2000 O 22
+ -3 - -03 2001 S 13
+--3 At -03/-02 2002 O
++-3 B -03/-02 2002 O
+ -3 - -03
+ Z America/Recife -2:19:36 - LMT 1914
+--3 At -03/-02 1990 S 17
++-3 B -03/-02 1990 S 17
+ -3 - -03 1999 S 30
+--3 At -03/-02 2000 O 15
++-3 B -03/-02 2000 O 15
+ -3 - -03 2001 S 13
+--3 At -03/-02 2002 O
++-3 B -03/-02 2002 O
+ -3 - -03
+ Z America/Araguaina -3:12:48 - LMT 1914
+--3 At -03/-02 1990 S 17
++-3 B -03/-02 1990 S 17
+ -3 - -03 1995 S 14
+--3 At -03/-02 2003 S 24
++-3 B -03/-02 2003 S 24
+ -3 - -03 2012 O 21
+--3 At -03/-02 2013 S
++-3 B -03/-02 2013 S
+ -3 - -03
+ Z America/Maceio -2:22:52 - LMT 1914
+--3 At -03/-02 1990 S 17
++-3 B -03/-02 1990 S 17
+ -3 - -03 1995 O 13
+--3 At -03/-02 1996 S 4
++-3 B -03/-02 1996 S 4
+ -3 - -03 1999 S 30
+--3 At -03/-02 2000 O 22
++-3 B -03/-02 2000 O 22
+ -3 - -03 2001 S 13
+--3 At -03/-02 2002 O
++-3 B -03/-02 2002 O
+ -3 - -03
+ Z America/Bahia -2:34:4 - LMT 1914
+--3 At -03/-02 2003 S 24
++-3 B -03/-02 2003 S 24
+ -3 - -03 2011 O 16
+--3 At -03/-02 2012 O 21
++-3 B -03/-02 2012 O 21
+ -3 - -03
+ Z America/Sao_Paulo -3:6:28 - LMT 1914
+--3 At -03/-02 1963 O 23
++-3 B -03/-02 1963 O 23
+ -3 1 -02 1964
+--3 At -03/-02
++-3 B -03/-02
+ Z America/Campo_Grande -3:38:28 - LMT 1914
+--4 At -04/-03
++-4 B -04/-03
+ Z America/Cuiaba -3:44:20 - LMT 1914
+--4 At -04/-03 2003 S 24
++-4 B -04/-03 2003 S 24
+ -4 - -04 2004 O
+--4 At -04/-03
++-4 B -04/-03
+ Z America/Porto_Velho -4:15:36 - LMT 1914
+--4 At -04/-03 1988 S 12
++-4 B -04/-03 1988 S 12
+ -4 - -04
+ Z America/Boa_Vista -4:2:40 - LMT 1914
+--4 At -04/-03 1988 S 12
++-4 B -04/-03 1988 S 12
+ -4 - -04 1999 S 30
+--4 At -04/-03 2000 O 15
++-4 B -04/-03 2000 O 15
+ -4 - -04
+ Z America/Manaus -4:0:4 - LMT 1914
+--4 At -04/-03 1988 S 12
++-4 B -04/-03 1988 S 12
+ -4 - -04 1993 S 28
+--4 At -04/-03 1994 S 22
++-4 B -04/-03 1994 S 22
+ -4 - -04
+ Z America/Eirunepe -4:39:28 - LMT 1914
+--5 At -05/-04 1988 S 12
++-5 B -05/-04 1988 S 12
+ -5 - -05 1993 S 28
+--5 At -05/-04 1994 S 22
++-5 B -05/-04 1994 S 22
+ -5 - -05 2008 Jun 24
+ -4 - -04 2013 N 10
+ -5 - -05
+ Z America/Rio_Branco -4:31:12 - LMT 1914
+--5 At -05/-04 1988 S 12
++-5 B -05/-04 1988 S 12
+ -5 - -05 2008 Jun 24
+ -4 - -04 2013 N 10
+ -5 - -05
+-R Au 1927 1931 - S 1 0 1 -
+-R Au 1928 1932 - Ap 1 0 0 -
+-R Au 1968 o - N 3 4u 1 -
+-R Au 1969 o - Mar 30 3u 0 -
+-R Au 1969 o - N 23 4u 1 -
+-R Au 1970 o - Mar 29 3u 0 -
+-R Au 1971 o - Mar 14 3u 0 -
+-R Au 1970 1972 - O Sun>=9 4u 1 -
+-R Au 1972 1986 - Mar Sun>=9 3u 0 -
+-R Au 1973 o - S 30 4u 1 -
+-R Au 1974 1987 - O Sun>=9 4u 1 -
+-R Au 1987 o - Ap 12 3u 0 -
+-R Au 1988 1990 - Mar Sun>=9 3u 0 -
+-R Au 1988 1989 - O Sun>=9 4u 1 -
+-R Au 1990 o - S 16 4u 1 -
+-R Au 1991 1996 - Mar Sun>=9 3u 0 -
+-R Au 1991 1997 - O Sun>=9 4u 1 -
+-R Au 1997 o - Mar 30 3u 0 -
+-R Au 1998 o - Mar Sun>=9 3u 0 -
+-R Au 1998 o - S 27 4u 1 -
+-R Au 1999 o - Ap 4 3u 0 -
+-R Au 1999 2010 - O Sun>=9 4u 1 -
+-R Au 2000 2007 - Mar Sun>=9 3u 0 -
+-R Au 2008 o - Mar 30 3u 0 -
+-R Au 2009 o - Mar Sun>=9 3u 0 -
+-R Au 2010 o - Ap Sun>=1 3u 0 -
+-R Au 2011 o - May Sun>=2 3u 0 -
+-R Au 2011 o - Au Sun>=16 4u 1 -
+-R Au 2012 2014 - Ap Sun>=23 3u 0 -
+-R Au 2012 2014 - S Sun>=2 4u 1 -
+-R Au 2016 ma - May Sun>=9 3u 0 -
+-R Au 2016 ma - Au Sun>=9 4u 1 -
++R x 1927 1931 - S 1 0 1 -
++R x 1928 1932 - Ap 1 0 0 -
++R x 1968 o - N 3 4u 1 -
++R x 1969 o - Mar 30 3u 0 -
++R x 1969 o - N 23 4u 1 -
++R x 1970 o - Mar 29 3u 0 -
++R x 1971 o - Mar 14 3u 0 -
++R x 1970 1972 - O Sun>=9 4u 1 -
++R x 1972 1986 - Mar Sun>=9 3u 0 -
++R x 1973 o - S 30 4u 1 -
++R x 1974 1987 - O Sun>=9 4u 1 -
++R x 1987 o - Ap 12 3u 0 -
++R x 1988 1990 - Mar Sun>=9 3u 0 -
++R x 1988 1989 - O Sun>=9 4u 1 -
++R x 1990 o - S 16 4u 1 -
++R x 1991 1996 - Mar Sun>=9 3u 0 -
++R x 1991 1997 - O Sun>=9 4u 1 -
++R x 1997 o - Mar 30 3u 0 -
++R x 1998 o - Mar Sun>=9 3u 0 -
++R x 1998 o - S 27 4u 1 -
++R x 1999 o - Ap 4 3u 0 -
++R x 1999 2010 - O Sun>=9 4u 1 -
++R x 2000 2007 - Mar Sun>=9 3u 0 -
++R x 2008 o - Mar 30 3u 0 -
++R x 2009 o - Mar Sun>=9 3u 0 -
++R x 2010 o - Ap Sun>=1 3u 0 -
++R x 2011 o - May Sun>=2 3u 0 -
++R x 2011 o - Au Sun>=16 4u 1 -
++R x 2012 2014 - Ap Sun>=23 3u 0 -
++R x 2012 2014 - S Sun>=2 4u 1 -
++R x 2016 2018 - May Sun>=9 3u 0 -
++R x 2016 2018 - Au Sun>=9 4u 1 -
++R x 2019 ma - Ap Sun>=2 3u 0 -
++R x 2019 ma - S Sun>=2 4u 1 -
+ Z America/Santiago -4:42:46 - LMT 1890
+ -4:42:46 - SMT 1910 Ja 10
+ -5 - -05 1916 Jul
+ -4:42:46 - SMT 1918 S 10
+ -4 - -04 1919 Jul
+ -4:42:46 - SMT 1927 S
+--5 Au -05/-04 1932 S
++-5 x -05/-04 1932 S
+ -4 - -04 1942 Jun
+ -5 - -05 1942 Au
+ -4 - -04 1946 Jul 15
+ -4 1 -03 1946 S
+ -4 - -04 1947 Ap
+ -5 - -05 1947 May 21 23
+--4 Au -04/-03
++-4 x -04/-03
+ Z America/Punta_Arenas -4:43:40 - LMT 1890
+ -4:42:46 - SMT 1910 Ja 10
+ -5 - -05 1916 Jul
+ -4:42:46 - SMT 1918 S 10
+ -4 - -04 1919 Jul
+ -4:42:46 - SMT 1927 S
+--5 Au -05/-04 1932 S
++-5 x -05/-04 1932 S
+ -4 - -04 1942 Jun
+ -5 - -05 1942 Au
+ -4 - -04 1947 Ap
+ -5 - -05 1947 May 21 23
+--4 Au -04/-03 2016 D 4
++-4 x -04/-03 2016 D 4
+ -3 - -03
+ Z Pacific/Easter -7:17:28 - LMT 1890
+ -7:17:28 - EMT 1932 S
+--7 Au -07/-06 1982 Mar 14 3u
+--6 Au -06/-05
++-7 x -07/-06 1982 Mar 14 3u
++-6 x -06/-05
+ Z Antarctica/Palmer 0 - -00 1965
+--4 Ar -04/-03 1969 O 5
+--3 Ar -03/-02 1982 May
+--4 Au -04/-03 2016 D 4
++-4 A -04/-03 1969 O 5
++-3 A -03/-02 1982 May
++-4 x -04/-03 2016 D 4
+ -3 - -03
+-R Av 1992 o - May 3 0 1 -
+-R Av 1993 o - Ap 4 0 0 -
++R CO 1992 o - May 3 0 1 -
++R CO 1993 o - Ap 4 0 0 -
+ Z America/Bogota -4:56:16 - LMT 1884 Mar 13
+ -4:56:16 - BMT 1914 N 23
+--5 Av -05/-04
++-5 CO -05/-04
+ Z America/Curacao -4:35:47 - LMT 1912 F 12
+ -4:30 - -0430 1965
+ -4 - AST
+ Li America/Curacao America/Lower_Princes
+ Li America/Curacao America/Kralendijk
+-R Aw 1992 o - N 28 0 1 -
+-R Aw 1993 o - F 5 0 0 -
++R EC 1992 o - N 28 0 1 -
++R EC 1993 o - F 5 0 0 -
+ Z America/Guayaquil -5:19:20 - LMT 1890
+ -5:14 - QMT 1931
+--5 Aw -05/-04
++-5 EC -05/-04
+ Z Pacific/Galapagos -5:58:24 - LMT 1931
+ -5 - -05 1986
+--6 Aw -06/-05
+-R Ax 1937 1938 - S lastSun 0 1 -
+-R Ax 1938 1942 - Mar Sun>=19 0 0 -
+-R Ax 1939 o - O 1 0 1 -
+-R Ax 1940 1942 - S lastSun 0 1 -
+-R Ax 1943 o - Ja 1 0 0 -
+-R Ax 1983 o - S lastSun 0 1 -
+-R Ax 1984 1985 - Ap lastSun 0 0 -
+-R Ax 1984 o - S 16 0 1 -
+-R Ax 1985 2000 - S Sun>=9 0 1 -
+-R Ax 1986 2000 - Ap Sun>=16 0 0 -
+-R Ax 2001 2010 - Ap Sun>=15 2 0 -
+-R Ax 2001 2010 - S Sun>=1 2 1 -
++-6 EC -06/-05
++R FK 1937 1938 - S lastSun 0 1 -
++R FK 1938 1942 - Mar Sun>=19 0 0 -
++R FK 1939 o - O 1 0 1 -
++R FK 1940 1942 - S lastSun 0 1 -
++R FK 1943 o - Ja 1 0 0 -
++R FK 1983 o - S lastSun 0 1 -
++R FK 1984 1985 - Ap lastSun 0 0 -
++R FK 1984 o - S 16 0 1 -
++R FK 1985 2000 - S Sun>=9 0 1 -
++R FK 1986 2000 - Ap Sun>=16 0 0 -
++R FK 2001 2010 - Ap Sun>=15 2 0 -
++R FK 2001 2010 - S Sun>=1 2 1 -
+ Z Atlantic/Stanley -3:51:24 - LMT 1890
+ -3:51:24 - SMT 1912 Mar 12
+--4 Ax -04/-03 1983 May
+--3 Ax -03/-02 1985 S 15
+--4 Ax -04/-03 2010 S 5 2
++-4 FK -04/-03 1983 May
++-3 FK -03/-02 1985 S 15
++-4 FK -04/-03 2010 S 5 2
+ -3 - -03
+ Z America/Cayenne -3:29:20 - LMT 1911 Jul
+ -4 - -04 1967 O
+@@ -3878,46 +3897,46 @@ Z America/Guyana -3:52:40 - LMT 1915 Mar
+ -3:45 - -0345 1975 Jul 31
+ -3 - -03 1991
+ -4 - -04
+-R Ay 1975 1988 - O 1 0 1 -
+-R Ay 1975 1978 - Mar 1 0 0 -
+-R Ay 1979 1991 - Ap 1 0 0 -
+-R Ay 1989 o - O 22 0 1 -
+-R Ay 1990 o - O 1 0 1 -
+-R Ay 1991 o - O 6 0 1 -
+-R Ay 1992 o - Mar 1 0 0 -
+-R Ay 1992 o - O 5 0 1 -
+-R Ay 1993 o - Mar 31 0 0 -
+-R Ay 1993 1995 - O 1 0 1 -
+-R Ay 1994 1995 - F lastSun 0 0 -
+-R Ay 1996 o - Mar 1 0 0 -
+-R Ay 1996 2001 - O Sun>=1 0 1 -
+-R Ay 1997 o - F lastSun 0 0 -
+-R Ay 1998 2001 - Mar Sun>=1 0 0 -
+-R Ay 2002 2004 - Ap Sun>=1 0 0 -
+-R Ay 2002 2003 - S Sun>=1 0 1 -
+-R Ay 2004 2009 - O Sun>=15 0 1 -
+-R Ay 2005 2009 - Mar Sun>=8 0 0 -
+-R Ay 2010 ma - O Sun>=1 0 1 -
+-R Ay 2010 2012 - Ap Sun>=8 0 0 -
+-R Ay 2013 ma - Mar Sun>=22 0 0 -
++R y 1975 1988 - O 1 0 1 -
++R y 1975 1978 - Mar 1 0 0 -
++R y 1979 1991 - Ap 1 0 0 -
++R y 1989 o - O 22 0 1 -
++R y 1990 o - O 1 0 1 -
++R y 1991 o - O 6 0 1 -
++R y 1992 o - Mar 1 0 0 -
++R y 1992 o - O 5 0 1 -
++R y 1993 o - Mar 31 0 0 -
++R y 1993 1995 - O 1 0 1 -
++R y 1994 1995 - F lastSun 0 0 -
++R y 1996 o - Mar 1 0 0 -
++R y 1996 2001 - O Sun>=1 0 1 -
++R y 1997 o - F lastSun 0 0 -
++R y 1998 2001 - Mar Sun>=1 0 0 -
++R y 2002 2004 - Ap Sun>=1 0 0 -
++R y 2002 2003 - S Sun>=1 0 1 -
++R y 2004 2009 - O Sun>=15 0 1 -
++R y 2005 2009 - Mar Sun>=8 0 0 -
++R y 2010 ma - O Sun>=1 0 1 -
++R y 2010 2012 - Ap Sun>=8 0 0 -
++R y 2013 ma - Mar Sun>=22 0 0 -
+ Z America/Asuncion -3:50:40 - LMT 1890
+ -3:50:40 - AMT 1931 O 10
+ -4 - -04 1972 O
+ -3 - -03 1974 Ap
+--4 Ay -04/-03
+-R Az 1938 o - Ja 1 0 1 -
+-R Az 1938 o - Ap 1 0 0 -
+-R Az 1938 1939 - S lastSun 0 1 -
+-R Az 1939 1940 - Mar Sun>=24 0 0 -
+-R Az 1986 1987 - Ja 1 0 1 -
+-R Az 1986 1987 - Ap 1 0 0 -
+-R Az 1990 o - Ja 1 0 1 -
+-R Az 1990 o - Ap 1 0 0 -
+-R Az 1994 o - Ja 1 0 1 -
+-R Az 1994 o - Ap 1 0 0 -
++-4 y -04/-03
++R PE 1938 o - Ja 1 0 1 -
++R PE 1938 o - Ap 1 0 0 -
++R PE 1938 1939 - S lastSun 0 1 -
++R PE 1939 1940 - Mar Sun>=24 0 0 -
++R PE 1986 1987 - Ja 1 0 1 -
++R PE 1986 1987 - Ap 1 0 0 -
++R PE 1990 o - Ja 1 0 1 -
++R PE 1990 o - Ap 1 0 0 -
++R PE 1994 o - Ja 1 0 1 -
++R PE 1994 o - Ap 1 0 0 -
+ Z America/Lima -5:8:12 - LMT 1890
+ -5:8:36 - LMT 1908 Jul 28
+--5 Az -05/-04
++-5 PE -05/-04
+ Z Atlantic/South_Georgia -2:26:8 - LMT 1890
+ -2 - -02
+ Z America/Paramaribo -3:40:40 - LMT 1911
+@@ -3940,65 +3959,65 @@ Li America/Port_of_Spain America/St_Lucia
+ Li America/Port_of_Spain America/St_Thomas
+ Li America/Port_of_Spain America/St_Vincent
+ Li America/Port_of_Spain America/Tortola
+-R A! 1923 1925 - O 1 0 0:30 -
+-R A! 1924 1926 - Ap 1 0 0 -
+-R A! 1933 1938 - O lastSun 0 0:30 -
+-R A! 1934 1941 - Mar lastSat 24 0 -
+-R A! 1939 o - O 1 0 0:30 -
+-R A! 1940 o - O 27 0 0:30 -
+-R A! 1941 o - Au 1 0 0:30 -
+-R A! 1942 o - D 14 0 0:30 -
+-R A! 1943 o - Mar 14 0 0 -
+-R A! 1959 o - May 24 0 0:30 -
+-R A! 1959 o - N 15 0 0 -
+-R A! 1960 o - Ja 17 0 1 -
+-R A! 1960 o - Mar 6 0 0 -
+-R A! 1965 o - Ap 4 0 1 -
+-R A! 1965 o - S 26 0 0 -
+-R A! 1968 o - May 27 0 0:30 -
+-R A! 1968 o - D 1 0 0 -
+-R A! 1970 o - Ap 25 0 1 -
+-R A! 1970 o - Jun 14 0 0 -
+-R A! 1972 o - Ap 23 0 1 -
+-R A! 1972 o - Jul 16 0 0 -
+-R A! 1974 o - Ja 13 0 1:30 -
+-R A! 1974 o - Mar 10 0 0:30 -
+-R A! 1974 o - S 1 0 0 -
+-R A! 1974 o - D 22 0 1 -
+-R A! 1975 o - Mar 30 0 0 -
+-R A! 1976 o - D 19 0 1 -
+-R A! 1977 o - Mar 6 0 0 -
+-R A! 1977 o - D 4 0 1 -
+-R A! 1978 1979 - Mar Sun>=1 0 0 -
+-R A! 1978 o - D 17 0 1 -
+-R A! 1979 o - Ap 29 0 1 -
+-R A! 1980 o - Mar 16 0 0 -
+-R A! 1987 o - D 14 0 1 -
+-R A! 1988 o - F 28 0 0 -
+-R A! 1988 o - D 11 0 1 -
+-R A! 1989 o - Mar 5 0 0 -
+-R A! 1989 o - O 29 0 1 -
+-R A! 1990 o - F 25 0 0 -
+-R A! 1990 1991 - O Sun>=21 0 1 -
+-R A! 1991 1992 - Mar Sun>=1 0 0 -
+-R A! 1992 o - O 18 0 1 -
+-R A! 1993 o - F 28 0 0 -
+-R A! 2004 o - S 19 0 1 -
+-R A! 2005 o - Mar 27 2 0 -
+-R A! 2005 o - O 9 2 1 -
+-R A! 2006 2015 - Mar Sun>=8 2 0 -
+-R A! 2006 2014 - O Sun>=1 2 1 -
++R U 1923 1925 - O 1 0 0:30 -
++R U 1924 1926 - Ap 1 0 0 -
++R U 1933 1938 - O lastSun 0 0:30 -
++R U 1934 1941 - Mar lastSat 24 0 -
++R U 1939 o - O 1 0 0:30 -
++R U 1940 o - O 27 0 0:30 -
++R U 1941 o - Au 1 0 0:30 -
++R U 1942 o - D 14 0 0:30 -
++R U 1943 o - Mar 14 0 0 -
++R U 1959 o - May 24 0 0:30 -
++R U 1959 o - N 15 0 0 -
++R U 1960 o - Ja 17 0 1 -
++R U 1960 o - Mar 6 0 0 -
++R U 1965 o - Ap 4 0 1 -
++R U 1965 o - S 26 0 0 -
++R U 1968 o - May 27 0 0:30 -
++R U 1968 o - D 1 0 0 -
++R U 1970 o - Ap 25 0 1 -
++R U 1970 o - Jun 14 0 0 -
++R U 1972 o - Ap 23 0 1 -
++R U 1972 o - Jul 16 0 0 -
++R U 1974 o - Ja 13 0 1:30 -
++R U 1974 o - Mar 10 0 0:30 -
++R U 1974 o - S 1 0 0 -
++R U 1974 o - D 22 0 1 -
++R U 1975 o - Mar 30 0 0 -
++R U 1976 o - D 19 0 1 -
++R U 1977 o - Mar 6 0 0 -
++R U 1977 o - D 4 0 1 -
++R U 1978 1979 - Mar Sun>=1 0 0 -
++R U 1978 o - D 17 0 1 -
++R U 1979 o - Ap 29 0 1 -
++R U 1980 o - Mar 16 0 0 -
++R U 1987 o - D 14 0 1 -
++R U 1988 o - F 28 0 0 -
++R U 1988 o - D 11 0 1 -
++R U 1989 o - Mar 5 0 0 -
++R U 1989 o - O 29 0 1 -
++R U 1990 o - F 25 0 0 -
++R U 1990 1991 - O Sun>=21 0 1 -
++R U 1991 1992 - Mar Sun>=1 0 0 -
++R U 1992 o - O 18 0 1 -
++R U 1993 o - F 28 0 0 -
++R U 2004 o - S 19 0 1 -
++R U 2005 o - Mar 27 2 0 -
++R U 2005 o - O 9 2 1 -
++R U 2006 2015 - Mar Sun>=8 2 0 -
++R U 2006 2014 - O Sun>=1 2 1 -
+ Z America/Montevideo -3:44:51 - LMT 1908 Jun 10
+ -3:44:51 - MMT 1920 May
+ -4 - -04 1923 O
+--3:30 A! -0330/-03 1942 D 14
+--3 A! -03/-0230 1960
+--3 A! -03/-02 1968
+--3 A! -03/-0230 1970
+--3 A! -03/-02 1974
+--3 A! -03/-0130 1974 Mar 10
+--3 A! -03/-0230 1974 D 22
+--3 A! -03/-02
++-3:30 U -0330/-03 1942 D 14
++-3 U -03/-0230 1960
++-3 U -03/-02 1968
++-3 U -03/-0230 1970
++-3 U -03/-02 1974
++-3 U -03/-0130 1974 Mar 10
++-3 U -03/-0230 1974 D 22
++-3 U -03/-02
+ Z America/Caracas -4:27:44 - LMT 1890
+ -4:27:40 - CMT 1912 F 12
+ -4:30 - -0430 1965
+diff --git a/src/timezone/known_abbrevs.txt b/src/timezone/known_abbrevs.txt
+index 67d2f0b..2ae443a 100644
+--- a/src/timezone/known_abbrevs.txt
++++ b/src/timezone/known_abbrevs.txt
+@@ -92,6 +92,7 @@ NZST	43200
+ PDT	-25200	D
+ PKT	18000
+ PST	-28800
++PST	28800
+ SAST	7200
+ SST	-39600
+ UCT	0
+diff --git a/src/timezone/tznames/America.txt b/src/timezone/tznames/America.txt
+index 1c5eb1f..2594c37 100644
+--- a/src/timezone/tznames/America.txt
++++ b/src/timezone/tznames/America.txt
+@@ -237,6 +237,9 @@ PDT    -25200 D  # Pacific Daylight Time
+ PET    -18000    # Peru Time (obsolete)
+ PMDT    -7200 D  # Pierre & Miquelon Daylight Time (obsolete)
+ PMST   -10800    # Pierre & Miquelon Standard Time (obsolete)
++# CONFLICT! PST is not unique
++# Other timezones:
++#  - PST: Philippine Standard Time
+ PST    -28800    # Pacific Standard Time
+                  #     (America/Dawson)
+                  #     (America/Los_Angeles)
+diff --git a/src/timezone/tznames/Asia.txt b/src/timezone/tznames/Asia.txt
+index e1fa931..1133339 100644
+--- a/src/timezone/tznames/Asia.txt
++++ b/src/timezone/tznames/Asia.txt
+@@ -158,6 +158,10 @@ PKT     18000    # Pakistan Time
+                  #     (Asia/Karachi)
+ PKST    21600 D  # Pakistan Summer Time
+                  #     (Asia/Karachi)
++# CONFLICT! PST is not unique
++# Other timezones:
++#  - PST: Pacific Standard Time (America)
++PST     28800    # Philippine Standard Time
+ QYZT    21600    # Kizilorda Time (obsolete)
+ SAKST   Asia/Sakhalin  # Sakhalin Summer Time (obsolete)
+ SAKT    Asia/Sakhalin  # Sakhalin Time (obsolete)
+diff --git a/src/timezone/tznames/Default b/src/timezone/tznames/Default
+index 3826096..1532413 100644
+--- a/src/timezone/tznames/Default
++++ b/src/timezone/tznames/Default
+@@ -181,6 +181,9 @@ PDT    -25200 D  # Pacific Daylight Time
+                  #     (America/Whitehorse)
+ PMDT    -7200 D  # Pierre & Miquelon Daylight Time (obsolete)
+ PMST   -10800    # Pierre & Miquelon Standard Time (obsolete)
++# CONFLICT! PST is not unique
++# Other timezones:
++#  - PST: Philippine Standard Time
+ PST    -28800    # Pacific Standard Time
+                  #     (America/Dawson)
+                  #     (America/Los_Angeles)
+diff --git a/src/timezone/tznames/Pacific.txt b/src/timezone/tznames/Pacific.txt
+index c86248b..c30008c 100644
+--- a/src/timezone/tznames/Pacific.txt
++++ b/src/timezone/tznames/Pacific.txt
+@@ -52,6 +52,9 @@ NZST    43200    # New Zealand Standard Time
+ PGT     36000    # Papua New Guinea Time (obsolete)
+ PHOT    Pacific/Enderbury  # Phoenix Islands Time (Kiribati) (obsolete)
+ PONT    39600    # Ponape Time (Micronesia) (obsolete)
++# CONFLICT! PST is not unique
++# Other timezones:
++#  - PST: Philippine Standard Time
+ PST    -28800    # Pacific Standard Time
+                  #     (America/Dawson)
+                  #     (America/Los_Angeles)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch
index fafbc25..f14da06 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch
@@ -1,26 +1,29 @@
-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.
+From d3ee8c8df5808b63e86f40831f2ba62cbb33d291 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 8 Aug 2018 09:18:27 +0800
+Subject: [PATCH] postgresql: Use pkg-config for libxml2 detection.
 
 Upstream-Status: Inappropriate [configuration]
 
 xml2-config does not work. Use pkgconfig to set CPPFLAGS and LIBS.
 
 Signed-off-by: Philip Balister <philip@balister.org>
+
+upate to version 10.4
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
 ---
  configure.in | 15 ++-------------
  1 file changed, 2 insertions(+), 13 deletions(-)
 
-Index: postgresql-9.4.20/configure.in
-===================================================================
---- postgresql-9.4.20.orig/configure.in
-+++ postgresql-9.4.20/configure.in
-@@ -789,19 +789,8 @@ PGAC_ARG_BOOL(with, libxml, no, [build w
+diff --git a/configure.in b/configure.in
+index d9fe56e..3e2cd3a 100644
+--- a/configure.in
++++ b/configure.in
+@@ -816,19 +816,8 @@ PGAC_ARG_BOOL(with, libxml, no, [build with XML support],
                [AC_DEFINE([USE_LIBXML], 1, [Define to 1 to build with XML support. (--with-libxml)])])
  
  if test "$with_libxml" = yes ; then
--  AC_CHECK_PROGS(XML2_CONFIG, xml2-config)
+-  PGAC_PATH_PROGS(XML2_CONFIG, xml2-config)
 -  if test -n "$XML2_CONFIG"; then
 -    for pgac_option in `$XML2_CONFIG --cflags`; do
 -      case $pgac_option in
@@ -33,8 +36,11 @@
 -      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"
++    CPPFLAGS="$CPPFLAGS `pkg-config --short-errors --print-errors --cflags "libxml-2.0" 2>&1`"
++    LIBS="`pkg-config --short-errors --print-errors --libs "libxml-2.0" 2>&1` $LIBS"
  fi
  
  AC_SUBST(with_libxml)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch
index c57b421..9715109 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch
@@ -13,16 +13,16 @@
  configure.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-Index: postgresql-9.4.20/configure.in
+Index: postgresql-9.4.15/configure.in
 ===================================================================
---- postgresql-9.4.20.orig/configure.in
-+++ postgresql-9.4.20/configure.in
-@@ -1931,7 +1931,7 @@ if test "$with_tcl" = yes; then
+--- postgresql-9.4.15.orig/configure.in
++++ postgresql-9.4.15/configure.in
+@@ -1879,7 +1879,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 $perl_includespec"
+   CPPFLAGS="$CPPFLAGS -I$perl_archlibexp/CORE"
    AC_CHECK_HEADER(perl.h, [], [AC_MSG_ERROR([header file <perl.h> is required for Perl])],
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
index 812c2ae..3bf71f0 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
@@ -19,7 +19,7 @@
 "
 HOMEPAGE = "http://www.postgresql.com"
 LICENSE = "BSD"
-DEPENDS = "zlib readline tzcode-native"
+DEPENDS = "libnsl2 zlib readline tzcode-native"
 
 ARM_INSTRUCTION_SET = "arm"
 
@@ -59,7 +59,7 @@
 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,"
+PACKAGECONFIG[uuid] = "--with-uuid=e2fs,--without-uuid,util-linux,"
 PACKAGECONFIG[tcl] = "--with-tcl --with-tclconfig=${STAGING_BINDIR_CROSS},--without-tcl,tcl tcl-native,"
 PACKAGECONFIG[nls] = "--enable-nls,--disable-nls,,"
 PACKAGECONFIG[libxml] = "--with-libxml,--without-libxml,libxml2,libxml2"
@@ -72,21 +72,19 @@
 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 \
+PACKAGES_DYNAMIC += "^${PN}-plperl \
+    ^${PN}-pltcl \
+    ^${PN}-plpython \
 "
 
 python populate_packages_prepend() {
 
-    def fill_more(name, dbg=True):
+    def fill_more(name):
         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') or "").split()
@@ -202,15 +200,26 @@
 }
 
 SSTATE_SCAN_FILES += "Makefile.global"
+SSTATE_SCAN_FILES_remove = "*_config"
 
 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 \
+    libecpg-compat libecpg-compat-dev \
+    libecpg libecpg-dev libecpg-staticdev libecpg-doc \
+    libpq libpq-dev libpq-staticdev \
+    libpgtypes libpgtypes-staticdev libpgtypes-dev \
+    ${PN}-contrib \
 "
 
+RPROVIDES_${PN}-dbg += "libecpg-compat-dbg \
+                        libecpg-dbg \
+                        libpq-dbg \
+                        libpgtypes-dbg \
+                        ${PN}-contrib-dbg \
+                        ${PN}-pltcl-dbg \
+                        ${PN}-plpython-dbg \
+                        ${PN}-plperl-dbg \
+                       "
+
 FILES_${PN} += "${sysconfdir}/init.d/${BPN}-server \
     ${localstatedir}/lib/${BPN}/data ${localstatedir}/lib/${BPN}/backups \
     ${localstatedir}/lib/${BPN}/.bash_profile ${sysconfdir}/default/${BPN} \
@@ -223,13 +232,6 @@
        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 \
@@ -267,7 +269,6 @@
 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 \
@@ -280,7 +281,6 @@
 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} \
 "
@@ -289,10 +289,8 @@
 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"
 
@@ -324,50 +322,18 @@
     ${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 \
@@ -376,7 +342,6 @@
 # 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 \
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.5.bb b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.5.bb
new file mode 100644
index 0000000..1a02f15
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.5.bb
@@ -0,0 +1,12 @@
+require postgresql.inc
+
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=6dc95e63aa4d72502ff8193dfe2ddd38"
+
+SRC_URI += "\
+    file://not-check-libperl.patch \
+    file://0001-Update-time-zone-data-files-to-tzdata-release-2018f.patch \
+    file://0001-Sync-our-copy-of-the-timezone-library-with-IANA-rele.patch \
+"
+
+SRC_URI[md5sum] = "a5fe5fdff2d6c28f65601398be0950df"
+SRC_URI[sha256sum] = "6c8e616c91a45142b85c0aeb1f29ebba4a361309e86469e0fb4617b6a73c4011"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_9.4.20.bb b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_9.4.20.bb
deleted file mode 100644
index 61f623e..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_9.4.20.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require postgresql.inc
-
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=6dc95e63aa4d72502ff8193dfe2ddd38"
-
-SRC_URI += "\
-    file://not-check-libperl.patch \
-"
-
-do_compile_prepend_libc-musl() {
-    sed -i -e 's/\-lnsl//g' ${B}/src/Makefile.global
-}
-
-SRC_URI[md5sum] = "5821867741c821736266f27b6b8a859a"
-SRC_URI[sha256sum] = "eeb1d8ddb2854c9e4d8b5cbd65665260c0ae8cbcb911003f24c2d82ccb97f87f"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch
new file mode 100644
index 0000000..be49897
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch
@@ -0,0 +1,194 @@
+From 8d65d70b54d1d306a0a0b00e036bc8ddd39d8ec1 Mon Sep 17 00:00:00 2001
+From: "przemyslaw.skibinski@percona.com" <przemyslaw.skibinski@percona.com>
+Date: Fri, 20 Apr 2018 13:28:05 -0700
+Subject: [PATCH] Fix GitHub issue #3716: gcc-8 warnings
+
+Summary:
+Fix the following gcc-8 warnings:
+- conflicting C language linkage declaration [-Werror]
+- writing to an object with no trivial copy-assignment [-Werror=class-memaccess]
+- array subscript -1 is below array bounds [-Werror=array-bounds]
+
+Solves https://github.com/facebook/rocksdb/issues/3716
+Closes https://github.com/facebook/rocksdb/pull/3736
+
+Differential Revision: D7684161
+
+Pulled By: yiwu-arbug
+
+fbshipit-source-id: 47c0423d26b74add251f1d3595211eee1e41e54a
+---
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport [https://github.com/facebook/rocksdb/commit/dee95a1afc6c63515e7d94dec33acdb79638b6d7.patch]
+
+ db/c.cc                   | 77 ++++++++++++++-------------------------
+ memtable/inlineskiplist.h | 12 +++---
+ 2 files changed, 33 insertions(+), 56 deletions(-)
+
+diff --git a/db/c.cc b/db/c.cc
+index 064103ed4..0d485d096 100644
+--- a/db/c.cc
++++ b/db/c.cc
+@@ -1388,23 +1388,24 @@ void rocksdb_writebatch_put_log_data(
+   b->rep.PutLogData(Slice(blob, len));
+ }
+ 
++class H : public WriteBatch::Handler {
++ public:
++  void* state_;
++  void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen);
++  void (*deleted_)(void*, const char* k, size_t klen);
++  virtual void Put(const Slice& key, const Slice& value) override {
++    (*put_)(state_, key.data(), key.size(), value.data(), value.size());
++  }
++  virtual void Delete(const Slice& key) override {
++    (*deleted_)(state_, key.data(), key.size());
++  }
++};
++
+ void rocksdb_writebatch_iterate(
+     rocksdb_writebatch_t* b,
+     void* state,
+     void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
+     void (*deleted)(void*, const char* k, size_t klen)) {
+-  class H : public WriteBatch::Handler {
+-   public:
+-    void* state_;
+-    void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen);
+-    void (*deleted_)(void*, const char* k, size_t klen);
+-    virtual void Put(const Slice& key, const Slice& value) override {
+-      (*put_)(state_, key.data(), key.size(), value.data(), value.size());
+-    }
+-    virtual void Delete(const Slice& key) override {
+-      (*deleted_)(state_, key.data(), key.size());
+-    }
+-  };
+   H handler;
+   handler.state_ = state;
+   handler.put_ = put;
+@@ -1649,18 +1650,6 @@ void rocksdb_writebatch_wi_iterate(
+     void* state,
+     void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
+     void (*deleted)(void*, const char* k, size_t klen)) {
+-  class H : public WriteBatch::Handler {
+-   public:
+-    void* state_;
+-    void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen);
+-    void (*deleted_)(void*, const char* k, size_t klen);
+-    virtual void Put(const Slice& key, const Slice& value) override {
+-      (*put_)(state_, key.data(), key.size(), value.data(), value.size());
+-    }
+-    virtual void Delete(const Slice& key) override {
+-      (*deleted_)(state_, key.data(), key.size());
+-    }
+-  };
+   H handler;
+   handler.state_ = state;
+   handler.put_ = put;
+@@ -3109,20 +3098,21 @@ void rocksdb_slicetransform_destroy(rocksdb_slicetransform_t* st) {
+   delete st;
+ }
+ 
++struct Wrapper : public rocksdb_slicetransform_t {
++  const SliceTransform* rep_;
++  ~Wrapper() { delete rep_; }
++  const char* Name() const override { return rep_->Name(); }
++  Slice Transform(const Slice& src) const override {
++    return rep_->Transform(src);
++  }
++  bool InDomain(const Slice& src) const override {
++    return rep_->InDomain(src);
++  }
++  bool InRange(const Slice& src) const override { return rep_->InRange(src); }
++  static void DoNothing(void*) { }
++};
++
+ rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t prefixLen) {
+-  struct Wrapper : public rocksdb_slicetransform_t {
+-    const SliceTransform* rep_;
+-    ~Wrapper() { delete rep_; }
+-    const char* Name() const override { return rep_->Name(); }
+-    Slice Transform(const Slice& src) const override {
+-      return rep_->Transform(src);
+-    }
+-    bool InDomain(const Slice& src) const override {
+-      return rep_->InDomain(src);
+-    }
+-    bool InRange(const Slice& src) const override { return rep_->InRange(src); }
+-    static void DoNothing(void*) { }
+-  };
+   Wrapper* wrapper = new Wrapper;
+   wrapper->rep_ = rocksdb::NewFixedPrefixTransform(prefixLen);
+   wrapper->state_ = nullptr;
+@@ -3131,19 +3121,6 @@ rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t pref
+ }
+ 
+ rocksdb_slicetransform_t* rocksdb_slicetransform_create_noop() {
+-  struct Wrapper : public rocksdb_slicetransform_t {
+-    const SliceTransform* rep_;
+-    ~Wrapper() { delete rep_; }
+-    const char* Name() const override { return rep_->Name(); }
+-    Slice Transform(const Slice& src) const override {
+-      return rep_->Transform(src);
+-    }
+-    bool InDomain(const Slice& src) const override {
+-      return rep_->InDomain(src);
+-    }
+-    bool InRange(const Slice& src) const override { return rep_->InRange(src); }
+-    static void DoNothing(void*) { }
+-  };
+   Wrapper* wrapper = new Wrapper;
+   wrapper->rep_ = rocksdb::NewNoopTransform();
+   wrapper->state_ = nullptr;
+diff --git a/memtable/inlineskiplist.h b/memtable/inlineskiplist.h
+index 702a7336d..eadda1dc1 100644
+--- a/memtable/inlineskiplist.h
++++ b/memtable/inlineskiplist.h
+@@ -280,7 +280,7 @@ struct InlineSkipList<Comparator>::Node {
+   // next_[0].  This is used for passing data from AllocateKey to Insert.
+   void StashHeight(const int height) {
+     assert(sizeof(int) <= sizeof(next_[0]));
+-    memcpy(&next_[0], &height, sizeof(int));
++    memcpy(static_cast<void*>(&next_[0]), &height, sizeof(int));
+   }
+ 
+   // Retrieves the value passed to StashHeight.  Undefined after a call
+@@ -300,30 +300,30 @@ struct InlineSkipList<Comparator>::Node {
+     assert(n >= 0);
+     // Use an 'acquire load' so that we observe a fully initialized
+     // version of the returned Node.
+-    return (next_[-n].load(std::memory_order_acquire));
++    return ((&next_[0] - n)->load(std::memory_order_acquire));
+   }
+ 
+   void SetNext(int n, Node* x) {
+     assert(n >= 0);
+     // Use a 'release store' so that anybody who reads through this
+     // pointer observes a fully initialized version of the inserted node.
+-    next_[-n].store(x, std::memory_order_release);
++    (&next_[0] - n)->store(x, std::memory_order_release);
+   }
+ 
+   bool CASNext(int n, Node* expected, Node* x) {
+     assert(n >= 0);
+-    return next_[-n].compare_exchange_strong(expected, x);
++    return (&next_[0] - n)->compare_exchange_strong(expected, x);
+   }
+ 
+   // No-barrier variants that can be safely used in a few locations.
+   Node* NoBarrier_Next(int n) {
+     assert(n >= 0);
+-    return next_[-n].load(std::memory_order_relaxed);
++    return (&next_[0] - n)->load(std::memory_order_relaxed);
+   }
+ 
+   void NoBarrier_SetNext(int n, Node* x) {
+     assert(n >= 0);
+-    next_[-n].store(x, std::memory_order_relaxed);
++    (&next_[0] - n)->store(x, std::memory_order_relaxed);
+   }
+ 
+   // Insert node after prev on specific level.
+-- 
+2.17.0
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
index 1e6cbae..594d1a9 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
@@ -6,11 +6,13 @@
                     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://LICENSE.leveldb;md5=fb04ff57a14f308f2eed4a9b87d45837"
 
-SRCREV = "8969445642039566214d650cc6614849e7dd5e17"
-SRCBRANCH = "5.12.fb"
-PV = "5.12.2"
+SRCREV = "c60df9d9e7629fe208a9b848293a5599f83d5e77"
+SRCBRANCH = "5.13.fb"
+PV = "5.13.1"
 
-SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH}"
+SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH} \
+           file://0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch \
+          "
 
 S = "${WORKDIR}/git"
 
@@ -28,5 +30,3 @@
     -DWITH_TESTS=OFF \
     -DWITH_TOOLS=OFF \
 "
-
-FILES_${PN}-dev += "${libdir}/cmake"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/android-tools-adbd.service b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/android-tools-adbd.service
index 88ed687..ddf8d7f 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/android-tools-adbd.service
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/android-tools-adbd.service
@@ -1,12 +1,13 @@
 [Unit]
 Description=Android Debug Bridge
+ConditionPathExists=/var/usb-debugging-enabled
+Before=android-system.service
 
 [Service]
 Type=simple
 Restart=on-failure
-ExecStartPre=/usr/bin/android-gadget-setup adb
+ExecStartPre=-/usr/bin/android-gadget-setup adb
 ExecStart=/usr/bin/adbd
-StandardOutput=null
 
 [Install]
 WantedBy=basic.target
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0001-adb-remove-selinux-extensions.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0001-adb-remove-selinux-extensions.patch
new file mode 100644
index 0000000..7d20c50
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0001-adb-remove-selinux-extensions.patch
@@ -0,0 +1,44 @@
+From 7b7200727413ca4a9bb132221c543ec033dffafa Mon Sep 17 00:00:00 2001
+From: Sergio Schvezov <sergio.schvezov@canonical.com>
+Date: Wed, 7 Sep 2016 12:58:47 +0300
+Subject: [PATCH] adb: remove selinux extensions
+
+* drop useless includes of Android SELINUX extensions
+* avoids having to clone another module
+* this should be sent upstream
+
+Upstream-Status: Inappropriate
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ adb/file_sync_service.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/adb/file_sync_service.c b/adb/file_sync_service.c
+index 7933858516..3cbd0cd863 100644
+--- a/adb/file_sync_service.c
++++ b/adb/file_sync_service.c
+@@ -26,7 +26,6 @@
+ 
+ #include <errno.h>
+ #include <private/android_filesystem_config.h>
+-#include <selinux/android.h>
+ #include "sysdeps.h"
+ 
+ #define TRACE_TAG  TRACE_SYNC
+@@ -73,7 +72,6 @@ static int mkdirs(char *name)
+                 *x = '/';
+                 return ret;
+             }
+-            selinux_android_restorecon(name, 0);
+         }
+         *x++ = '/';
+     }
+@@ -251,7 +249,6 @@ static int handle_send_file(int s, char *path, uid_t uid,
+     if(fd >= 0) {
+         struct utimbuf u;
+         adb_close(fd);
+-        selinux_android_restorecon(path, 0);
+         u.actime = timestamp;
+         u.modtime = timestamp;
+         utime(path, &u);
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-local-socket.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0002-adb-Use-local-sockets-where-appropriate.patch
similarity index 67%
rename from meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-local-socket.patch
rename to meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0002-adb-Use-local-sockets-where-appropriate.patch
index 7facd61..3627110 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-local-socket.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0002-adb-Use-local-sockets-where-appropriate.patch
@@ -1,15 +1,19 @@
-Subject: adb: Use local sockets where appropriate
-Author: Hilko Bengen <bengen@debian.org>
+From d855f042ca09a358cebe2d3c1d29d512afd7ebb8 Mon Sep 17 00:00:00 2001
+From: Hilko Bengen <bengen@debian.org>
+Date: Wed, 7 Sep 2016 12:58:47 +0300
+Subject: [PATCH] adb: Use local sockets where appropriate
 
 Upstream-Status: Inappropriate
 ---
- system/core/adb/adb.c             |    6 +++++-
- system/core/adb/adb_client.c      |    5 +++--
- system/core/adb/transport_local.c |    3 ++-
+ adb/adb.c             | 6 +++++-
+ adb/adb_client.c      | 5 +++--
+ adb/transport_local.c | 3 ++-
  3 files changed, 10 insertions(+), 4 deletions(-)
 
---- a/system/core/adb/adb.c
-+++ b/system/core/adb/adb.c
+diff --git a/adb/adb.c b/adb/adb.c
+index 10a1e0da26..027edd9359 100644
+--- a/adb/adb.c
++++ b/adb/adb.c
 @@ -1230,7 +1230,11 @@ int launch_server(int server_port)
   */
  void build_local_name(char* target_str, size_t target_size, int server_port)
@@ -23,8 +27,10 @@
  }
  
  #if !ADB_HOST
---- a/system/core/adb/adb_client.c
-+++ b/system/core/adb/adb_client.c
+diff --git a/adb/adb_client.c b/adb/adb_client.c
+index eb1720d22c..a383faefe3 100644
+--- a/adb/adb_client.c
++++ b/adb/adb_client.c
 @@ -185,12 +185,12 @@ int _adb_connect(const char *service)
          strcpy(__adb_error, "service name too long");
          return -1;
@@ -48,9 +54,11 @@
      if(writex(fd, tmp, 4) || writex(fd, service, len)) {
          strcpy(__adb_error, "write failure during connection");
          adb_close(fd);
---- a/system/core/adb/transport_local.c
-+++ b/system/core/adb/transport_local.c
-@@ -121,7 +121,8 @@ int local_connect_arbitrary_ports(int co
+diff --git a/adb/transport_local.c b/adb/transport_local.c
+index 948cc15812..71582a8c88 100644
+--- a/adb/transport_local.c
++++ b/adb/transport_local.c
+@@ -121,7 +121,8 @@ int local_connect_arbitrary_ports(int console_port, int adb_port)
      }
  #endif
      if (fd < 0) {
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0003-adb-define-shell-command.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0003-adb-define-shell-command.patch
new file mode 100644
index 0000000..cf1d9cb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0003-adb-define-shell-command.patch
@@ -0,0 +1,29 @@
+From 4421c2e19946dcd651fd8ac022b96627fc526149 Mon Sep 17 00:00:00 2001
+From: Fathi Boudra <fabo@debian.org>
+Date: Wed, 7 Sep 2016 12:58:47 +0300
+Subject: [PATCH] adb: define shell command
+
+we intend to run on Linux system so the shell is always /bin/sh,
+for the host or the target.
+
+Upstream-Status: Inappropriate
+---
+ adb/services.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/adb/services.c b/adb/services.c
+index 21b08dc201..d44b0c5068 100644
+--- a/adb/services.c
++++ b/adb/services.c
+@@ -299,11 +299,7 @@ static int create_subproc_raw(const char *cmd, const char *arg0, const char *arg
+ }
+ #endif  /* !ABD_HOST */
+ 
+-#if ADB_HOST
+ #define SHELL_COMMAND "/bin/sh"
+-#else
+-#define SHELL_COMMAND "/system/bin/sh"
+-#endif
+ 
+ #if !ADB_HOST
+ static void subproc_waiter_service(int fd, void *cookie)
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/fix-big-endian-build.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0004-adb-Fix-build-on-big-endian-systems.patch
similarity index 70%
rename from meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/fix-big-endian-build.patch
rename to meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0004-adb-Fix-build-on-big-endian-systems.patch
index 8deaf3a..79e9d4d 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/fix-big-endian-build.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0004-adb-Fix-build-on-big-endian-systems.patch
@@ -1,4 +1,7 @@
-Fix build on big endian systems
+From 548b8ca62c64a16305929e2eaf3d546d48de9c25 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Tue, 21 Feb 2017 19:46:24 +0100
+Subject: [PATCH] adb: Fix build on big endian systems
 
 The usb_linux_client.c file defines cpu_to_le16/32 by using the C
 library htole16/32 function calls. However, cpu_to_le16/32 are used
@@ -14,11 +17,14 @@
 them to be used when initializing structures.
 
 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ adb/usb_linux_client.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
 
-Index: b/system/core/adb/usb_linux_client.c
-===================================================================
---- a/system/core/adb/usb_linux_client.c
-+++ b/system/core/adb/usb_linux_client.c
+diff --git a/adb/usb_linux_client.c b/adb/usb_linux_client.c
+index 8426e0ea14..6e8b5bbbd2 100644
+--- a/adb/usb_linux_client.c
++++ b/adb/usb_linux_client.c
 @@ -34,8 +34,15 @@
  #define MAX_PACKET_SIZE_FS	64
  #define MAX_PACKET_SIZE_HS	512
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/0001-add-base64-implementation.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0005-adb-add-base64-implementation.patch
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/0001-add-base64-implementation.patch
rename to meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0005-adb-add-base64-implementation.patch
index 680d21f..fcd4ae2 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/0001-add-base64-implementation.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0005-adb-add-base64-implementation.patch
@@ -1,21 +1,21 @@
-From bbeb72f11c64f190b23abbed5f44311bd021bdc9 Mon Sep 17 00:00:00 2001
+From 753bcb5971401b82fb2e6197d31c9e386f6d0392 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Fri, 15 Sep 2017 15:46:38 -0700
-Subject: [PATCH 1/2] add base64 implementation
+Subject: [PATCH] adb: add base64 implementation
 
 musl needs it
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
- system/core/adb/adb_auth_client.c |   2 +-
- system/core/adb/base64.c          | 315 ++++++++++++++++++++++++++++++++++++++
+ adb/adb_auth_client.c |   2 +-
+ adb/base64.c          | 315 ++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 316 insertions(+), 1 deletion(-)
- create mode 100644 system/core/adb/base64.c
+ create mode 100644 adb/base64.c
 
-diff --git a/system/core/adb/adb_auth_client.c b/system/core/adb/adb_auth_client.c
-index 55e9dca..104b413 100644
---- a/system/core/adb/adb_auth_client.c
-+++ b/system/core/adb/adb_auth_client.c
+diff --git a/adb/adb_auth_client.c b/adb/adb_auth_client.c
+index 55e9dcad19..104b413b8b 100644
+--- a/adb/adb_auth_client.c
++++ b/adb/adb_auth_client.c
 @@ -75,7 +75,7 @@ static void read_keys(const char *file, struct listnode *list)
          if (sep)
              *sep = '\0';
@@ -25,11 +25,11 @@
          if (ret != sizeof(key->key)) {
              D("%s: Invalid base64 data ret=%d\n", file, ret);
              free(key);
-diff --git a/system/core/adb/base64.c b/system/core/adb/base64.c
+diff --git a/adb/base64.c b/adb/base64.c
 new file mode 100644
-index 0000000..95da284
+index 0000000000..95da284d0d
 --- /dev/null
-+++ b/system/core/adb/base64.c
++++ b/adb/base64.c
 @@ -0,0 +1,315 @@
 +/*
 + * Copyright (c) 1996-1999 by Internet Software Consortium.
@@ -346,6 +346,3 @@
 +	return (tarindex);
 +}
 +
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/0002-adb-Musl-fixes.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0006-adb-Musl-fixes.patch
similarity index 68%
rename from meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/0002-adb-Musl-fixes.patch
rename to meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0006-adb-Musl-fixes.patch
index c7aebb6..b5d383f 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/0002-adb-Musl-fixes.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0006-adb-Musl-fixes.patch
@@ -1,7 +1,7 @@
-From f8653ed0ede4aa781ab758fcd44fdc05ffbe0b0a Mon Sep 17 00:00:00 2001
+From 62d957a1271c88ec08d67984fbe31601f0bd41a9 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Fri, 15 Sep 2017 15:50:57 -0700
-Subject: [PATCH 2/2] adb: Musl fixes
+Subject: [PATCH] adb: Musl fixes
 
 __nonnull is gcc specific
 include sys/types.h for size_t
@@ -9,16 +9,16 @@
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
- system/core/adb/adb.h                    |  2 ++
- system/core/adb/disable_verity_service.c | 13 ++++++++-----
- system/core/adb/framebuffer_service.c    |  7 ++++---
- system/core/adb/sysdeps.h                | 12 ++++++------
+ adb/adb.h                    |  2 ++
+ adb/disable_verity_service.c | 13 ++++++++-----
+ adb/framebuffer_service.c    |  7 ++++---
+ adb/sysdeps.h                | 12 ++++++------
  4 files changed, 20 insertions(+), 14 deletions(-)
 
-diff --git a/system/core/adb/adb.h b/system/core/adb/adb.h
-index 44e5981..bcdc49f 100644
---- a/system/core/adb/adb.h
-+++ b/system/core/adb/adb.h
+diff --git a/adb/adb.h b/adb/adb.h
+index 44e5981bdc..bcdc49f63c 100644
+--- a/adb/adb.h
++++ b/adb/adb.h
 @@ -18,7 +18,9 @@
  #define __ADB_H
  
@@ -29,10 +29,10 @@
  #include "adb_trace.h"
  #include "transport.h"  /* readx(), writex() */
  
-diff --git a/system/core/adb/disable_verity_service.c b/system/core/adb/disable_verity_service.c
-index ed3da52..29fa3d6 100644
---- a/system/core/adb/disable_verity_service.c
-+++ b/system/core/adb/disable_verity_service.c
+diff --git a/adb/disable_verity_service.c b/adb/disable_verity_service.c
+index ed3da52108..29fa3d65a9 100644
+--- a/adb/disable_verity_service.c
++++ b/adb/disable_verity_service.c
 @@ -14,25 +14,28 @@
   * limitations under the License.
   */
@@ -67,10 +67,10 @@
  static void write_console(int fd, const char* format, ...)
  {
      char buffer[256];
-diff --git a/system/core/adb/framebuffer_service.c b/system/core/adb/framebuffer_service.c
-index 8cbe840..8f0ccfb 100644
---- a/system/core/adb/framebuffer_service.c
-+++ b/system/core/adb/framebuffer_service.c
+diff --git a/adb/framebuffer_service.c b/adb/framebuffer_service.c
+index 8cbe8403cc..8f0ccfb7aa 100644
+--- a/adb/framebuffer_service.c
++++ b/adb/framebuffer_service.c
 @@ -14,6 +14,10 @@
   * limitations under the License.
   */
@@ -92,10 +92,10 @@
  #include <linux/fb.h>
  #include <sys/ioctl.h>
  #include <sys/mman.h>
-diff --git a/system/core/adb/sysdeps.h b/system/core/adb/sysdeps.h
-index cc1f839..ea39ac3 100644
---- a/system/core/adb/sysdeps.h
-+++ b/system/core/adb/sysdeps.h
+diff --git a/adb/sysdeps.h b/adb/sysdeps.h
+index cc1f839e9f..ea39ac39cc 100644
+--- a/adb/sysdeps.h
++++ b/adb/sysdeps.h
 @@ -123,8 +123,8 @@ static __inline__ int  unix_close(int fd)
  {
      return close(fd);
@@ -129,6 +129,3 @@
  
  static __inline__  int    adb_unlink(const char*  path)
  {
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0007-adb-usb_linux.c-fix-build-with-glibc-2.28.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0007-adb-usb_linux.c-fix-build-with-glibc-2.28.patch
new file mode 100644
index 0000000..e02a956
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0007-adb-usb_linux.c-fix-build-with-glibc-2.28.patch
@@ -0,0 +1,24 @@
+From de393bba41c8feff932c77d6c30233945f380d42 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sat, 11 Aug 2018 13:23:37 +0000
+Subject: [PATCH] adb: usb_linux.c: fix build with glibc-2.28
+
+* include sysmacros for major, minor
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ adb/usb_linux.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/adb/usb_linux.c b/adb/usb_linux.c
+index f16bdd0361..c8a7732441 100644
+--- a/adb/usb_linux.c
++++ b/adb/usb_linux.c
+@@ -22,6 +22,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
++#include <sys/sysmacros.h>
+ #include <dirent.h>
+ #include <fcntl.h>
+ #include <errno.h>
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0008-adb-Allow-adbd-to-be-ran-as-root.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0008-adb-Allow-adbd-to-be-ran-as-root.patch
new file mode 100644
index 0000000..7d223e0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0008-adb-Allow-adbd-to-be-ran-as-root.patch
@@ -0,0 +1,21 @@
+From 3a788e9168c9b9eac66c4fa479413f4a95c61be4 Mon Sep 17 00:00:00 2001
+From: Florent Revest <revestflo@gmail.com>
+Date: Mon, 30 Oct 2017 21:05:46 +0100
+Subject: [PATCH] adb: Allow adbd to be ran as root
+
+---
+ adb/adb.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/adb/adb.c b/adb/adb.c
+index 027edd9359..e0f7ecde45 100644
+--- a/adb/adb.c
++++ b/adb/adb.c
+@@ -1271,6 +1271,7 @@ static int should_drop_privileges() {
+     int secure = 0;
+     char value[PROPERTY_VALUE_MAX];
+ 
++    return 0;
+    /* run adbd in secure mode if ro.secure is set and
+     ** we are not in the emulator
+     */
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/mkbootimg-Add-dt-parameter-to-specify-DT-image.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0009-mkbootimg-Add-dt-parameter-to-specify-DT-image.patch
similarity index 86%
rename from meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/mkbootimg-Add-dt-parameter-to-specify-DT-image.patch
rename to meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0009-mkbootimg-Add-dt-parameter-to-specify-DT-image.patch
index 35bb766..a4dc6e1 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/mkbootimg-Add-dt-parameter-to-specify-DT-image.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0009-mkbootimg-Add-dt-parameter-to-specify-DT-image.patch
@@ -1,21 +1,21 @@
-From cc5e7b02a3be57709a1aed6e34be100b82a71620 Mon Sep 17 00:00:00 2001
+From dd195778a9930b7967b21a3b8eb390b70253dbad Mon Sep 17 00:00:00 2001
 From: David Ng <dave@codeaurora.org>
 Date: Fri, 27 Jul 2012 17:15:03 -0700
-Subject: [PATCH 1/2] mkbootimg: Add --dt parameter to specify DT image
+Subject: [PATCH] mkbootimg: Add --dt parameter to specify DT image
 
 New optional --dt parameter to specify a kernel device
 tree image.
 
-Change-Id: Ie29a11cbf4138426bfd19ae486d69a5fcbd8f442
-
 Upstream-Status: Inappropriate
 ---
- system/core/mkbootimg/bootimg.h   |    7 +++++--
- system/core/mkbootimg/mkbootimg.c |   21 +++++++++++++++++++++
+ mkbootimg/bootimg.h   |  7 +++++--
+ mkbootimg/mkbootimg.c | 21 +++++++++++++++++++++
  2 files changed, 26 insertions(+), 2 deletions(-)
 
---- a/system/core/mkbootimg/bootimg.h
-+++ b/system/core/mkbootimg/bootimg.h
+diff --git a/mkbootimg/bootimg.h b/mkbootimg/bootimg.h
+index 9171d85a7b..308c537d6b 100644
+--- a/mkbootimg/bootimg.h
++++ b/mkbootimg/bootimg.h
 @@ -41,8 +41,8 @@ struct boot_img_hdr
  
      unsigned tags_addr;    /* physical addr for kernel tags */
@@ -41,8 +41,10 @@
  **
  ** 0. all entities are page_size aligned in flash
  ** 1. kernel and ramdisk are required (size != 0)
---- a/system/core/mkbootimg/mkbootimg.c
-+++ b/system/core/mkbootimg/mkbootimg.c
+diff --git a/mkbootimg/mkbootimg.c b/mkbootimg/mkbootimg.c
+index fc92b4dc30..658052cdf2 100644
+--- a/mkbootimg/mkbootimg.c
++++ b/mkbootimg/mkbootimg.c
 @@ -65,6 +65,7 @@ int usage(void)
              "       [ --board <boardname> ]\n"
              "       [ --base <address> ]\n"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0010-Use-linux-capability.h-on-linux-systems-too.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0010-Use-linux-capability.h-on-linux-systems-too.patch
new file mode 100644
index 0000000..2c607ff
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0010-Use-linux-capability.h-on-linux-systems-too.patch
@@ -0,0 +1,23 @@
+From ef743c9c3c7452ae904a5c343ee2b759ab3a87cb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Lo=C3=AFc=20Minier?= <loic.minier@ubuntu.com>
+Date: Wed, 7 Sep 2016 12:58:47 +0300
+Subject: [PATCH] Use linux/capability.h on linux systems too
+
+Upstream-Status: Inappropriate
+---
+ include/private/android_filesystem_config.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/private/android_filesystem_config.h b/include/private/android_filesystem_config.h
+index 2f528b95c8..3e0b00928e 100644
+--- a/include/private/android_filesystem_config.h
++++ b/include/private/android_filesystem_config.h
+@@ -27,7 +27,7 @@
+ #include <sys/types.h>
+ #include <stdint.h>
+ 
+-#ifdef HAVE_ANDROID_OS
++#if defined(HAVE_ANDROID_OS) || defined(__linux__)
+ #include <linux/capability.h>
+ #else
+ #include "android_filesystem_capability.h"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0011-Remove-bionic-specific-calls.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0011-Remove-bionic-specific-calls.patch
new file mode 100644
index 0000000..5b18f46
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0011-Remove-bionic-specific-calls.patch
@@ -0,0 +1,64 @@
+From 9eff8799831961c0edf6e37e5d4cbf43baa7c748 Mon Sep 17 00:00:00 2001
+From: Fathi Boudra <fabo@debian.org>
+Date: Wed, 7 Sep 2016 12:58:47 +0300
+Subject: [PATCH] Remove bionic specific calls
+
+Upstream-Status: Inappropriate
+---
+ include/cutils/properties.h | 1 -
+ libcutils/properties.c      | 2 +-
+ liblog/logd_write.c         | 5 +++++
+ 3 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/include/cutils/properties.h b/include/cutils/properties.h
+index 798db8b36f..7d01f28d6e 100644
+--- a/include/cutils/properties.h
++++ b/include/cutils/properties.h
+@@ -19,7 +19,6 @@
+ 
+ #include <sys/cdefs.h>
+ #include <stddef.h>
+-#include <sys/system_properties.h>
+ #include <stdint.h>
+ 
+ #ifdef __cplusplus
+diff --git a/libcutils/properties.c b/libcutils/properties.c
+index b283658aa4..4151e7882c 100644
+--- a/libcutils/properties.c
++++ b/libcutils/properties.c
+@@ -104,10 +104,10 @@ int32_t property_get_int32(const char *key, int32_t default_value) {
+     return (int32_t)property_get_imax(key, INT32_MIN, INT32_MAX, default_value);
+ }
+ 
++#undef HAVE_LIBC_SYSTEM_PROPERTIES
+ #ifdef HAVE_LIBC_SYSTEM_PROPERTIES
+ 
+ #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
+-#include <sys/_system_properties.h>
+ 
+ int property_set(const char *key, const char *value)
+ {
+diff --git a/liblog/logd_write.c b/liblog/logd_write.c
+index b2668cedb7..f5a44fe901 100644
+--- a/liblog/logd_write.c
++++ b/liblog/logd_write.c
+@@ -23,6 +23,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/stat.h>
++#include <sys/syscall.h>
+ #include <sys/types.h>
+ #if (FAKE_LOG_DEVICE == 0)
+ #include <sys/socket.h>
+@@ -205,7 +206,11 @@ static int __write_to_log_kernel(log_id_t log_id, struct iovec *vec, size_t nr)
+     realtime_ts.tv_nsec = ts.tv_nsec;
+ 
+     log_id_buf = log_id;
++#ifdef __BIONIC__
+     tid = gettid();
++#else
++    tid = (pid_t) syscall(__NR_gettid);
++#endif
+ 
+     newVec[0].iov_base   = (unsigned char *) &log_id_buf;
+     newVec[0].iov_len    = sizeof_log_id_t;
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch
new file mode 100644
index 0000000..b0feb65
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch
@@ -0,0 +1,50 @@
+From cd4525d760c6f88c9bf85f7bf488da79cd0d3264 Mon Sep 17 00:00:00 2001
+From: Fathi Boudra <fabo@debian.org>
+Date: Wed, 7 Sep 2016 12:58:47 +0300
+Subject: [PATCH] Fix implicit declaration of stlcat/strlcopy functions
+
+Upstream-Status: Inappropriate
+---
+ adb/adb.c                | 1 +
+ fs_mgr/fs_mgr_fstab.c    | 2 +-
+ include/cutils/sockets.h | 2 +-
+ 3 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/adb/adb.c b/adb/adb.c
+index e0f7ecde45..aaefd9b401 100644
+--- a/adb/adb.c
++++ b/adb/adb.c
+@@ -41,6 +41,7 @@
+ #include <sys/prctl.h>
+ #include <getopt.h>
+ #include <selinux/selinux.h>
++#include <grp.h>
+ #else
+ #include "usb_vendors.h"
+ #endif
+diff --git a/fs_mgr/fs_mgr_fstab.c b/fs_mgr/fs_mgr_fstab.c
+index edd9591164..9ddb4643b5 100644
+--- a/fs_mgr/fs_mgr_fstab.c
++++ b/fs_mgr/fs_mgr_fstab.c
+@@ -17,7 +17,7 @@
+ #include <ctype.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <bsd/string.h>
+ #include <sys/mount.h>
+ 
+ #include "fs_mgr_priv.h"
+diff --git a/include/cutils/sockets.h b/include/cutils/sockets.h
+index daf43ec944..d3270c69e7 100644
+--- a/include/cutils/sockets.h
++++ b/include/cutils/sockets.h
+@@ -19,7 +19,7 @@
+ 
+ #include <errno.h>
+ #include <stdlib.h>
+-#include <string.h>
++#include <bsd/string.h>
+ #include <stdbool.h>
+ 
+ #ifdef HAVE_WINSOCK
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/define-shell-command.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/define-shell-command.patch
deleted file mode 100644
index 8381967..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/define-shell-command.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Description: we intend to run on Linux system so the shell is always /bin/sh,
-             for the host or the target.
-Author: Fathi Boudra <fabo@debian.org>
-
-Upstream-Status: Inappropriate
----
- system/core/adb/services.c |    4 ----
- 1 file changed, 4 deletions(-)
-
---- a/system/core/adb/services.c
-+++ b/system/core/adb/services.c
-@@ -299,11 +299,7 @@ static int create_subproc_raw(const char
- }
- #endif  /* !ABD_HOST */
- 
--#if ADB_HOST
- #define SHELL_COMMAND "/bin/sh"
--#else
--#define SHELL_COMMAND "/system/bin/sh"
--#endif
- 
- #if !ADB_HOST
- static void subproc_waiter_service(int fd, void *cookie)
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0001-ext4_utils-remove-selinux-extensions.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0001-ext4_utils-remove-selinux-extensions.patch
new file mode 100644
index 0000000..4a19a5d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0001-ext4_utils-remove-selinux-extensions.patch
@@ -0,0 +1,39 @@
+From 354604da9d152f1931e91991d3f34197fc8fc759 Mon Sep 17 00:00:00 2001
+From: Sergio Schvezov <sergio.schvezov@canonical.com>
+Date: Tue, 2 Oct 2018 16:36:54 +0000
+Subject: [PATCH] ext4_utils: remove selinux extensions
+
+* drop useless includes of Android SELINUX extensions
+* avoids having to clone another module
+* this should be sent upstream
+
+Upstream-Status: Inappropriate
+---
+ ext4_utils/make_ext4fs.c      | 1 -
+ ext4_utils/make_ext4fs_main.c | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/ext4_utils/make_ext4fs.c b/ext4_utils/make_ext4fs.c
+index 2f89ae8a0..732afbed7 100644
+--- a/ext4_utils/make_ext4fs.c
++++ b/ext4_utils/make_ext4fs.c
+@@ -62,7 +62,6 @@
+ 
+ #include <selinux/selinux.h>
+ #include <selinux/label.h>
+-#include <selinux/android.h>
+ 
+ #define O_BINARY 0
+ 
+diff --git a/ext4_utils/make_ext4fs_main.c b/ext4_utils/make_ext4fs_main.c
+index a6c5f6160..f8e7b9da9 100644
+--- a/ext4_utils/make_ext4fs_main.c
++++ b/ext4_utils/make_ext4fs_main.c
+@@ -32,7 +32,6 @@
+ #ifndef USE_MINGW
+ #include <selinux/selinux.h>
+ #include <selinux/label.h>
+-#include <selinux/android.h>
+ #else
+ struct selabel_handle;
+ #endif
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/preserve-ownership.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/preserve-ownership.patch
rename to meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch
index 5c90397..3b50ffb 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/preserve-ownership.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch
@@ -1,24 +1,21 @@
-From aa669312a380611d280d126cb509fa282080707e Mon Sep 17 00:00:00 2001
+From b9254539811ce912bfd16dd1d185eba7a10cceff Mon Sep 17 00:00:00 2001
 From: Markus Mayer <mmayer@mmayer.net>
 Date: Wed, 7 Sep 2016 12:58:47 +0300
-Subject: [PATCH] android-tools: add recipe from AOSP tag android-5.1.1_r37
-
-Description: add -o argument to preserve ownership
+Subject: [PATCH] ext4_utils: add -o argument to preserve ownership
 
 See also https://android-review.googlesource.com/#/c/100312/
 
 Upstream-Status: Inappropriate
-
 ---
  ext4_utils/make_ext4fs.c      |  6 ++++++
  ext4_utils/make_ext4fs_main.c | 10 ++++++++--
  2 files changed, 14 insertions(+), 2 deletions(-)
 
 diff --git a/ext4_utils/make_ext4fs.c b/ext4_utils/make_ext4fs.c
-index 2f89ae8a..cc41d623 100644
+index 732afbed7..2cbf04399 100644
 --- a/ext4_utils/make_ext4fs.c
 +++ b/ext4_utils/make_ext4fs.c
-@@ -68,6 +68,8 @@
+@@ -67,6 +67,8 @@
  
  #endif
  
@@ -27,7 +24,7 @@
  /* TODO: Not implemented:
     Allocating blocks in the same block group as the file inode
     Hash or binary tree directories
-@@ -186,6 +188,10 @@ static u32 build_directory_structure(const char *full_path, const char *dir_path
+@@ -185,6 +187,10 @@ static u32 build_directory_structure(const char *full_path, const char *dir_path
  		} else {
  			dentries[i].mtime = fixed_time;
  		}
@@ -39,10 +36,10 @@
  		if (fs_config_func != NULL) {
  #ifdef ANDROID
 diff --git a/ext4_utils/make_ext4fs_main.c b/ext4_utils/make_ext4fs_main.c
-index a6c5f616..7af0dddf 100644
+index f8e7b9da9..e82d43277 100644
 --- a/ext4_utils/make_ext4fs_main.c
 +++ b/ext4_utils/make_ext4fs_main.c
-@@ -48,13 +48,15 @@ struct selabel_handle;
+@@ -47,13 +47,15 @@ struct selabel_handle;
  extern struct fs_info info;
  
  
@@ -59,7 +56,7 @@
  	fprintf(stderr, "    <filename> [<directory>]\n");
  }
  
-@@ -80,7 +82,7 @@ int main(int argc, char **argv)
+@@ -79,7 +81,7 @@ int main(int argc, char **argv)
  	struct selinux_opt seopts[] = { { SELABEL_OPT_PATH, "" } };
  #endif
  
@@ -68,7 +65,7 @@
  		switch (opt) {
  		case 'l':
  			info.len = parse_num(optarg);
-@@ -143,6 +145,10 @@ int main(int argc, char **argv)
+@@ -142,6 +144,10 @@ int main(int argc, char **argv)
  			}
  #endif
  			break;
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/.gitignore b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/gitignore
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/.gitignore
rename to meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/gitignore
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/implicit-declaration-function-strlcat-strlcopy.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/implicit-declaration-function-strlcat-strlcopy.patch
deleted file mode 100644
index 64db616..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/implicit-declaration-function-strlcat-strlcopy.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Description: fix implicit declaration of stlcat/strlcopy functions.
-Author: Fathi Boudra <fabo@debian.org>
-
-Upstream-Status: Inappropriate
----
- system/core/adb/adb.c                |    1 +
- system/core/fs_mgr/fs_mgr_fstab.c    |    2 +-
- system/core/include/cutils/sockets.h |    2 +-
- 3 files changed, 3 insertions(+), 2 deletions(-)
-
---- a/system/core/fs_mgr/fs_mgr_fstab.c
-+++ b/system/core/fs_mgr/fs_mgr_fstab.c
-@@ -17,7 +17,7 @@
- #include <ctype.h>
- #include <stdio.h>
- #include <stdlib.h>
--#include <string.h>
-+#include <bsd/string.h>
- #include <sys/mount.h>
- 
- #include "fs_mgr_priv.h"
---- a/system/core/include/cutils/sockets.h
-+++ b/system/core/include/cutils/sockets.h
-@@ -19,7 +19,7 @@
- 
- #include <errno.h>
- #include <stdlib.h>
--#include <string.h>
-+#include <bsd/string.h>
- #include <stdbool.h>
- 
- #ifdef HAVE_WINSOCK
---- a/system/core/adb/adb.c
-+++ b/system/core/adb/adb.c
-@@ -41,6 +41,7 @@
- #include <sys/prctl.h>
- #include <getopt.h>
- #include <selinux/selinux.h>
-+#include <grp.h>
- #else
- #include "usb_vendors.h"
- #endif
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-Remove-bionic-specific-calls.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-Remove-bionic-specific-calls.patch
new file mode 100644
index 0000000..9de2593
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-Remove-bionic-specific-calls.patch
@@ -0,0 +1,25 @@
+From 36654a4484117e5f4d63a810c0d94bc9c7ee3a83 Mon Sep 17 00:00:00 2001
+From: Fathi Boudra <fabo@debian.org>
+Date: Tue, 2 Oct 2018 16:36:54 +0000
+Subject: [PATCH] Remove bionic specific calls
+
+Upstream-Status: Inappropriate
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/procattr.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/procattr.c b/src/procattr.c
+index f350808..761cf8e 100644
+--- a/src/procattr.c
++++ b/src/procattr.c
+@@ -8,7 +8,7 @@
+ #include "selinux_internal.h"
+ #include "policy.h"
+ 
+-#ifdef HOST
++#ifndef __BIONIC__
+ static pid_t gettid(void)
+ {
+ 	return syscall(__NR_gettid);
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/remove-bionic-android.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/remove-bionic-android.patch
deleted file mode 100644
index e933724..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/remove-bionic-android.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-Description: remove bionic specific calls
-Author: Fathi Boudra <fabo@debian.org>
-
-Upstream-Status: Inappropriate
----
- system/core/include/cutils/properties.h |    1 -
- system/core/libcutils/properties.c      |    2 +-
- system/core/liblog/logd_write.c         |    5 +++++
- 3 files changed, 6 insertions(+), 2 deletions(-)
-
---- a/system/core/include/cutils/properties.h
-+++ b/system/core/include/cutils/properties.h
-@@ -19,7 +19,6 @@
- 
- #include <sys/cdefs.h>
- #include <stddef.h>
--#include <sys/system_properties.h>
- #include <stdint.h>
- 
- #ifdef __cplusplus
---- a/system/core/liblog/logd_write.c
-+++ b/system/core/liblog/logd_write.c
-@@ -23,6 +23,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <sys/stat.h>
-+#include <sys/syscall.h>
- #include <sys/types.h>
- #if (FAKE_LOG_DEVICE == 0)
- #include <sys/socket.h>
-@@ -205,7 +206,11 @@ static int __write_to_log_kernel(log_id_
-     realtime_ts.tv_nsec = ts.tv_nsec;
- 
-     log_id_buf = log_id;
-+#ifdef __BIONIC__
-     tid = gettid();
-+#else
-+    tid = (pid_t) syscall(__NR_gettid);
-+#endif
- 
-     newVec[0].iov_base   = (unsigned char *) &log_id_buf;
-     newVec[0].iov_len    = sizeof_log_id_t;
---- a/system/core/libcutils/properties.c
-+++ b/system/core/libcutils/properties.c
-@@ -104,10 +104,10 @@ int32_t property_get_int32(const char *k
-     return (int32_t)property_get_imax(key, INT32_MIN, INT32_MAX, default_value);
- }
- 
-+#undef HAVE_LIBC_SYSTEM_PROPERTIES
- #ifdef HAVE_LIBC_SYSTEM_PROPERTIES
- 
- #define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
--#include <sys/_system_properties.h>
- 
- int property_set(const char *key, const char *value)
- {
---- a/external/libselinux/src/procattr.c
-+++ b/external/libselinux/src/procattr.c
-@@ -8,7 +8,7 @@
- #include "selinux_internal.h"
- #include "policy.h"
- 
--#ifdef HOST
-+#ifndef __BIONIC__
- static pid_t gettid(void)
- {
- 	return syscall(__NR_gettid);
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/remove-selinux-android.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/remove-selinux-android.patch
deleted file mode 100644
index d4a37f8..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/remove-selinux-android.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Subject: drop useless includes of Android SELINUX extensions; avoids having to clone another module; this should be sent upstream
-Author: Sergio Schvezov <sergio.schvezov@canonical.com>
-
-Upstream-Status: Inappropriate
----
- system/core/adb/file_sync_service.c         |    3 ---
- system/extras/ext4_utils/make_ext4fs.c      |    1 -
- system/extras/ext4_utils/make_ext4fs_main.c |    1 -
- 3 files changed, 5 deletions(-)
-
---- a/system/extras/ext4_utils/make_ext4fs.c
-+++ b/system/extras/ext4_utils/make_ext4fs.c
-@@ -62,7 +62,6 @@
- 
- #include <selinux/selinux.h>
- #include <selinux/label.h>
--#include <selinux/android.h>
- 
- #define O_BINARY 0
- 
---- a/system/extras/ext4_utils/make_ext4fs_main.c
-+++ b/system/extras/ext4_utils/make_ext4fs_main.c
-@@ -32,7 +32,6 @@
- #ifndef USE_MINGW
- #include <selinux/selinux.h>
- #include <selinux/label.h>
--#include <selinux/android.h>
- #else
- struct selabel_handle;
- #endif
---- a/system/core/adb/file_sync_service.c
-+++ b/system/core/adb/file_sync_service.c
-@@ -26,7 +26,6 @@
- 
- #include <errno.h>
- #include <private/android_filesystem_config.h>
--#include <selinux/android.h>
- #include "sysdeps.h"
- 
- #define TRACE_TAG  TRACE_SYNC
-@@ -73,7 +72,6 @@ static int mkdirs(char *name)
-                 *x = '/';
-                 return ret;
-             }
--            selinux_android_restorecon(name, 0);
-         }
-         *x++ = '/';
-     }
-@@ -251,7 +249,6 @@ static int handle_send_file(int s, char
-     if(fd >= 0) {
-         struct utimbuf u;
-         adb_close(fd);
--        selinux_android_restorecon(path, 0);
-         u.actime = timestamp;
-         u.modtime = timestamp;
-         utime(path, &u);
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-capability.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-capability.patch
deleted file mode 100644
index b8ebe09..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-capability.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Subject: use linux/capability.h on linux systems too
-Author: Loïc Minier <loic.minier@ubuntu.com>
-
-Upstream-Status: Inappropriate
----
- system/core/include/private/android_filesystem_config.h |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/system/core/include/private/android_filesystem_config.h
-+++ b/system/core/include/private/android_filesystem_config.h
-@@ -27,7 +27,7 @@
- #include <sys/types.h>
- #include <stdint.h>
- 
--#ifdef HAVE_ANDROID_OS
-+#if defined(HAVE_ANDROID_OS) || defined(__linux__)
- #include <linux/capability.h>
- #else
- #include "android_filesystem_capability.h"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
index 780ecaa..2604f65 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
@@ -7,14 +7,10 @@
     file://${COMMON_LICENSE_DIR}/BSD-2-Clause;md5=8bef8e6712b1be5aa76af1ebde9d6378 \
     file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9 \
 "
-DEPENDS = "libbsd libpcre openssl zlib libcap"
+DEPENDS = "libbsd libpcre zlib libcap"
+DEPENDS_append_class-target = " openssl10"
 
 ANDROID_MIRROR = "android.googlesource.com"
-CORE_REPO = "${ANDROID_MIRROR}/platform/system/core"
-EXTRAS_REPO = "${ANDROID_MIRROR}/platform/system/extras"
-LIBHARDWARE_REPO = "${ANDROID_MIRROR}/platform/hardware/libhardware"
-LIBSELINUX_REPO = "${ANDROID_MIRROR}/platform/external/libselinux"
-BUILD_REPO = "${ANDROID_MIRROR}/platform/build"
 
 # matches with android-5.1.1_r37
 SRCREV_core = "2314b110bdebdbfd2d94c502282f9e57c849897e"
@@ -24,24 +20,28 @@
 SRCREV_build = "16e987def3d7d8f7d30805eb95cef69e52a87dbc"
 
 SRC_URI = " \
-    git://${CORE_REPO};name=core;protocol=https;nobranch=1;destsuffix=git/system/core \
-    git://${EXTRAS_REPO};name=extras;protocol=https;nobranch=1;destsuffix=git/system/extras \
-    git://${LIBHARDWARE_REPO};name=libhardware;protocol=https;nobranch=1;destsuffix=git/hardware/libhardware \
-    git://${LIBSELINUX_REPO};name=libselinux;protocol=https;nobranch=1;destsuffix=git/external/libselinux \
-    git://${BUILD_REPO};name=build;protocol=https;nobranch=1;destsuffix=git/build \
-    file://remove-selinux-android.patch \
-    file://use-capability.patch \
-    file://use-local-socket.patch \
-    file://preserve-ownership.patch;patchdir=system/extras \
-    file://mkbootimg-Add-dt-parameter-to-specify-DT-image.patch \
-    file://remove-bionic-android.patch \
-    file://define-shell-command.patch \
-    file://implicit-declaration-function-strlcat-strlcopy.patch \
-    file://fix-big-endian-build.patch \
-    file://0001-add-base64-implementation.patch \
-    file://0002-adb-Musl-fixes.patch \
+    git://${ANDROID_MIRROR}/platform/system/core;name=core;protocol=https;nobranch=1;destsuffix=git/system/core \
+    git://${ANDROID_MIRROR}/platform/system/extras;name=extras;protocol=https;nobranch=1;destsuffix=git/system/extras \
+    git://${ANDROID_MIRROR}/platform/hardware/libhardware;name=libhardware;protocol=https;nobranch=1;destsuffix=git/hardware/libhardware \
+    git://${ANDROID_MIRROR}/platform/external/libselinux;name=libselinux;protocol=https;nobranch=1;destsuffix=git/external/libselinux \
+    git://${ANDROID_MIRROR}/platform/build;name=build;protocol=https;nobranch=1;destsuffix=git/build \
+    file://core/0001-adb-remove-selinux-extensions.patch;patchdir=system/core \
+    file://core/0002-adb-Use-local-sockets-where-appropriate.patch;patchdir=system/core \
+    file://core/0003-adb-define-shell-command.patch;patchdir=system/core \
+    file://core/0004-adb-Fix-build-on-big-endian-systems.patch;patchdir=system/core \
+    file://core/0005-adb-add-base64-implementation.patch;patchdir=system/core \
+    file://core/0006-adb-Musl-fixes.patch;patchdir=system/core \
+    file://core/0007-adb-usb_linux.c-fix-build-with-glibc-2.28.patch;patchdir=system/core \
+    file://core/0008-adb-Allow-adbd-to-be-ran-as-root.patch;patchdir=system/core \
+    file://core/0009-mkbootimg-Add-dt-parameter-to-specify-DT-image.patch;patchdir=system/core \
+    file://core/0010-Use-linux-capability.h-on-linux-systems-too.patch;patchdir=system/core \
+    file://core/0011-Remove-bionic-specific-calls.patch;patchdir=system/core \
+    file://core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch;patchdir=system/core \
+    file://extras/0001-ext4_utils-remove-selinux-extensions.patch;patchdir=system/extras \
+    file://extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch;patchdir=system/extras \
+    file://libselinux/0001-Remove-bionic-specific-calls.patch;patchdir=external/libselinux \
     file://android-tools-adbd.service \
-    file://.gitignore;subdir=git \
+    file://gitignore \
     file://adb.mk;subdir=${BPN} \
     file://adbd.mk;subdir=${BPN} \
     file://ext4_utils.mk;subdir=${BPN} \
@@ -49,6 +49,7 @@
     file://mkbootimg.mk;subdir=${BPN} \
 "
 
+
 S = "${WORKDIR}/git"
 B = "${WORKDIR}/${BPN}"
 
@@ -71,6 +72,8 @@
 TOOLS_class-nativesdk = "fastboot ext4_utils mkbootimg"
 
 do_compile() {
+    cp ${WORKDIR}/gitignore ${S}/.gitignore
+
     # Setting both variables below causing our makefiles to not work with
     # implicit make rules
     unset CFLAGS
diff --git a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
index c762754..bc79727 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
@@ -8,11 +8,11 @@
  src/client/linux/handler/exception_handler.cc | 17 +++++++++++++++++
  1 file changed, 17 insertions(+)
 
-diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc
-index cca023f..f3e460c 100644
---- a/src/client/linux/handler/exception_handler.cc
-+++ b/src/client/linux/handler/exception_handler.cc
-@@ -495,7 +495,19 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
+Index: git/src/client/linux/handler/exception_handler.cc
+===================================================================
+--- git.orig/src/client/linux/handler/exception_handler.cc
++++ git/src/client/linux/handler/exception_handler.cc
+@@ -495,7 +495,19 @@ bool ExceptionHandler::SimulateSignalDel
    siginfo.si_code = SI_USER;
    siginfo.si_pid = getpid();
    ucontext_t context;
@@ -42,11 +42,8 @@
      return false;
 +#else
 +  // Extreme hack - see comments above.
-+  memset (&context.context, 0, sizeof(&context.context));
++  memset (&context.context, 0, sizeof(context.context));
 +#endif
  
  #if defined(__i386__)
    // In CPUFillFromUContext in minidumpwriter.cc the stack pointer is retrieved
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.6.1.bb b/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.6.1.bb
index ffbe73f..6ca3613 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.6.1.bb
@@ -2,25 +2,23 @@
 DESCRIPTION = "Cap’n Proto is an insanely fast data interchange format and capability-based RPC system. "
 HOMEPAGE = "https://github.com/sandstorm-io/capnproto"
 SECTION = "console/tools"
-
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://../LICENSE;md5=0a5b5b742baf10cc1c158579eba7fb1d"
 
-SRCREV = "c949a18da5f041a36cc218c5c4b79c7705999b4f"
 SRC_URI = "git://github.com/sandstorm-io/capnproto.git;branch=release-${PV}"
+SRCREV = "c949a18da5f041a36cc218c5c4b79c7705999b4f"
+
+S = "${WORKDIR}/git/c++"
+
+inherit cmake
 
 EXTRA_OECMAKE += "\
     -DBUILD_TESTING=OFF \
 "
 
-inherit cmake
-
-S = "${WORKDIR}/git/c++"
+FILES_${PN}-compiler = "${bindir}"
 
 PACKAGE_BEFORE_PN = "${PN}-compiler"
 RDEPENDS_${PN}-dev += "${PN}-compiler"
 
-FILES_${PN}-dev += "${libdir}/cmake"
-FILES_${PN}-compiler = "${bindir}"
-
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20170122.bb b/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20180519.bb
similarity index 61%
rename from meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20170122.bb
rename to meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20180519.bb
index 7a70f75..533a000 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20170122.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20180519.bb
@@ -6,17 +6,16 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRC_URI = "http://www.etallen.com/${BPN}/${BP}.src.tar.gz"
-SRC_URI[md5sum] = "1c46a6662626c5a6eaca626f23a5a7d7"
-SRC_URI[sha256sum] = "667612aae6704341dd10844e97c84c5c5c8700817a5937a3c293b55013bc4865"
+SRC_URI = "http://www.etallen.com/${BPN}/${BP}.src.tar.gz \
+           "
+SRC_URI[md5sum] = "b3b4e44ef49575043a91def0207dcc76"
+SRC_URI[sha256sum] = "967823be36f23cbc972eb0aa882d069c1d155a5978990ac3bcf425e6a2e7ff9a"
 
 COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
 
 # The install rule from the Makefile has hardcoded paths, so we duplicate
 # the actions to accommodate different paths.
 do_install () {
-    install -d -m755 ${D}/${bindir}
-    install -m755 ${B}/cpuid ${D}/${bindir}/cpuid
-    install -d -m755 ${D}/${mandir}
-    install -m444 ${B}/cpuid.man.gz ${D}/${mandir}
+    install -D -m 0755 ${B}/cpuid ${D}/${bindir}/cpuid
+    install -D -m 0444 ${B}/cpuid.man.gz ${D}/${mandir}
 }
diff --git a/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.20.2.bb b/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.1.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.20.2.bb
rename to meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.1.bb
index 95e1737..bd4b586 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.20.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.1.bb
@@ -13,11 +13,11 @@
 
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glade/3.20/glade-${PV}.tar.xz \
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glade/3.22/glade-${PV}.tar.xz \
            file://remove-yelp-help-rules-var.patch \
           "
-SRC_URI[md5sum] = "d3dd9ba33c7d7c854ab207e1ba844dda"
-SRC_URI[sha256sum] = "07d1545570951aeded20e9fdc6d3d8a56aeefe2538734568c5335be336c6abed"
+SRC_URI[md5sum] = "226802cf3b06861240524805aa6fe6ff"
+SRC_URI[sha256sum] = "dff89a2ef2eaf000ff2a46979978d03cb9202cb04668e01d0ea5c5bb5547e39a"
 
 EXTRA_OECONF += "--disable-man-pages"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/json-spirit/json-spirit_4.08.bb b/meta-openembedded/meta-oe/recipes-devtools/json-spirit/json-spirit_4.08.bb
index c7c1ad1..d6e42c8 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/json-spirit/json-spirit_4.08.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/json-spirit/json-spirit_4.08.bb
@@ -9,6 +9,8 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=278ef6183dec4aae1524fccc4b0113c9"
 
+DEPENDS = "boost"
+
 SRC_URI = "file://json_spirit_v${PV}.zip \
            file://0001-Adjust-the-cmake-files.patch \
            file://0001-Link-to-libatomic.patch \
@@ -16,10 +18,6 @@
 
 S = "${WORKDIR}/json_spirit_v${PV}"
 
-DEPENDS = "boost"
-
 inherit cmake
 
-FILES_${PN}-dev += "${datadir}/cmake/Modules/FindLibJsonSpirit.cmake"
-
 BBCLASSEXTEND = "nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb b/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
index df08b8b..de9a6eb 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
@@ -11,7 +11,7 @@
 LICENSE = "GPL-2.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9b8cf60ff39767ff04b671fca8302408"
 SECTION = "devel"
-DEPENDS += "ncurses flex bison gperf-native"
+DEPENDS += "ncurses flex bison gperf-native bison-native"
 RDEPENDS_${PN} += "python3 bash"
 SRC_URI = "git://ymorin.is-a-geek.org/kconfig-frontends;branch=4.11.x \
 	   file://0001-Makefile-ensure-frontends-exits-before-writing-into-.patch \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.8.0.bb b/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.8.0.bb
new file mode 100644
index 0000000..7544744
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.8.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Linear Algebra PACKage"
+URL = "http://www.netlib.org/lapack"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=930f8aa500a47c7dab0f8efb5a1c9a40"
+
+# Recipe needs FORTRAN support (copied from conf/local.conf.sample.extended)
+# Enabling FORTRAN
+# Note this is not officially supported and is just illustrated here to
+# show an example of how it can be done
+# You'll also need your fortran recipe to depend on libgfortran
+#FORTRAN_forcevariable = ",fortran"
+#RUNTIMETARGET_append_pn-gcc-runtime = " libquadmath"
+
+DEPENDS = "libgfortran"
+
+SRC_URI = "http://www.netlib.org/lapack/lapack-${PV}.tar.gz"
+SRC_URI[md5sum] = "96591affdbf58c450d45c1daa540dbd2"
+SRC_URI[sha256sum] = "deb22cc4a6120bff72621155a9917f485f96ef8319ac074a7afbc68aab88bcf6"
+
+EXTRA_OECMAKE = " -DBUILD_SHARED_LIBS=ON "
+OECMAKE_GENERATOR = "Unix Makefiles"
+
+inherit cmake pkgconfig
+EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20170329-3.1.bb b/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20180525-3.1.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20170329-3.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20180525-3.1.bb
index fc24671..8cc0e95 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20170329-3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20180525-3.1.bb
@@ -15,7 +15,7 @@
 SRC_URI = "http://www.thrysoee.dk/editline/${BPN}-${PV}.tar.gz \
            file://stdc-predef.patch \
           "
-SRC_URI[md5sum] = "c57a0690e62ef523c083598730272cfd"
-SRC_URI[sha256sum] = "91f2d90fbd2a048ff6dad7131d9a39e690fd8a8fd982a353f1333dd4017dd4be"
+SRC_URI[md5sum] = "97679319742f45d6cdcd6075511b14ac"
+SRC_URI[sha256sum] = "c41bea8fd140fb57ba67a98ec1d8ae0b8ffa82f4aba9c35a87e5a9499e653116"
 
 S = "${WORKDIR}/${BPN}-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/libfribidi/fribidi_0.19.7.bb b/meta-openembedded/meta-oe/recipes-devtools/libfribidi/fribidi_0.19.7.bb
deleted file mode 100644
index 423a914..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/libfribidi/fribidi_0.19.7.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Fribidi library for bidirectional text"
-SECTION = "libs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-BBCLASSEXTEND = "native"
-
-PROVIDES = "libfribidi"
-DEPENDS = "glib-2.0 libpcre"
-
-inherit autotools lib_package pkgconfig
-
-CFLAGS_append = "  -DPAGE_SIZE=4096 "
-SECURITY_CFLAGS_remove_toolchain-clang = "-D_FORTIFY_SOURCE=2"
-
-SRC_URI = "http://fribidi.org/download/fribidi-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "6c7e7cfdd39c908f7ac619351c1c5c23"
-SRC_URI[sha256sum] = "08222a6212bbc2276a2d55c3bf370109ae4a35b689acbc66571ad2a670595a8e"
-
-CVE_PRODUCT = "gnu_fribidi"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf_2.2.0.0.bb b/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf_2.2.0.0.bb
index 267c0e7..dcd47a4 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf_2.2.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf_2.2.0.0.bb
@@ -47,7 +47,6 @@
 PACKAGES =+ "${@bb.utils.contains('PACKAGECONFIG', 'demos', '${PN}-demos', '', d)}"
 
 FILES_${PN}-demos = "${bindir}/*"
-FILES_${PN}-dev += "${datadir}/cmake/Modules/FindLibRcf.cmake"
 
 BBCLASSEXTEND = "nativesdk"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_1.2.0.bb b/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_1.2.0.bb
deleted file mode 100644
index 31ab9a6..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_1.2.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.2.bb b/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.2.bb
new file mode 100644
index 0000000..d17d15c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.2.bb
@@ -0,0 +1,18 @@
+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=41e8e060c26822886b592ab4765c756b"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz"
+SRC_URI[md5sum] = "b3bbeb2dc3e170768430cf87583016f8"
+SRC_URI[sha256sum] = "10539f2315271d370c7bc6a2b4808cbe369279837f4539ce5c789e456489fc62"
+
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/"
+UPSTREAM_CHECK_REGEX = "log4cplus-stable/(?P<pver>\d+(\.\d+)+)/"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Makefile-Fix-cross-compilation.patch b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Makefile-Fix-cross-compilation.patch
new file mode 100644
index 0000000..6db6ab9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0001-Makefile-Fix-cross-compilation.patch
@@ -0,0 +1,57 @@
+From 62f9ed95b5d0feab426bff452be793c62a6b795a Mon Sep 17 00:00:00 2001
+From: Krzysztof Kozlowski <krzk@kernel.org>
+Date: Wed, 6 Jun 2018 12:49:21 +0200
+Subject: [PATCH 1/2] Makefile: Fix cross compilation
+
+Allow building on ARMv7 and ARMv8.
+
+Upstream-Status: Submitted
+Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
+---
+ src/Makefile      | 2 +-
+ src/core/Makefile | 2 +-
+ src/gui/Makefile  | 4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index b50586bc9234..654b786dd899 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -18,7 +18,7 @@ export MANDIR
+ export DATADIR
+ export SQLITE
+ 
+-CXX?=c++
++CXX?=$(CROSS_COMPILE)c++
+ INCLUDES=-I./core/
+ DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\"
+ CXXFLAGS=-g -Wall -g $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS)
+diff --git a/src/core/Makefile b/src/core/Makefile
+index 5bf5a69cc6a6..2bd1b94c4175 100644
+--- a/src/core/Makefile
++++ b/src/core/Makefile
+@@ -1,6 +1,6 @@
+ PACKAGENAME?=lshw
+ 
+-CXX=c++
++CXX?=$(CROSS_COMPILE)c++
+ INCLUDES=
+ DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\"
+ CXXFLAGS?=-g -Wall $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS)
+diff --git a/src/gui/Makefile b/src/gui/Makefile
+index 332ce5704819..b0f925490356 100644
+--- a/src/gui/Makefile
++++ b/src/gui/Makefile
+@@ -1,7 +1,7 @@
+ PACKAGENAME?=lshw
+ 
+-CXX?=c++
+-CC?=cc
++CXX?=$(CROSS_COMPILE)c++
++CC?=$(CROSS_COMPILE)cc
+ STRIP?=strip
+ OBJCOPY?=objcopy
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0002-Makefile-Use-supplied-LDFLAGS-to-silence-OE-GNU_HASH.patch b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0002-Makefile-Use-supplied-LDFLAGS-to-silence-OE-GNU_HASH.patch
new file mode 100644
index 0000000..d3da01b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0002-Makefile-Use-supplied-LDFLAGS-to-silence-OE-GNU_HASH.patch
@@ -0,0 +1,34 @@
+From 75667f8a0ae4f1689ff03eb1768b1ee8cdfbf00d Mon Sep 17 00:00:00 2001
+From: Krzysztof Kozlowski <krzk@kernel.org>
+Date: Wed, 6 Jun 2018 12:49:30 +0200
+Subject: [PATCH 2/2] Makefile: Use supplied LDFLAGS to silence OE GNU_HASH QA
+ warning
+
+Fix OpenEmbedded/Yocto QA warning:
+
+    ERROR: lshw-02.16-r1 do_package_qa: QA Issue: No GNU_HASH in the elf binary: 'build/tmp/work/cortexa5hf-neon-poky-linux-gnueabi/lshw/02.16-r1/packages-split/lshw/usr/sbin/lshw' [ldflags]
+    ERROR: lshw-02.16-r1 do_package_qa: QA run found fatal errors. Please consider fixing them.
+    ERROR: lshw-02.16-r1 do_package_qa: Function failed: do_package_qa
+
+Upstream-Status: Submitted
+Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
+---
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 654b786dd899..a441ba2bb666 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -25,7 +25,7 @@ CXXFLAGS=-g -Wall -g $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS)
+ ifeq ($(SQLITE), 1)
+ 	CXXFLAGS+= -DSQLITE $(shell pkg-config --cflags sqlite3)
+ endif
+-LDFLAGS=-L./core/ -g
++LDFLAGS+=-L./core/ -g
+ ifneq ($(shell $(LD) --help 2| grep -- --as-needed), )
+ 	LDFLAGS+= -Wl,--as-needed
+ endif
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0003-sysfs-Fix-basename-build-with-musl.patch b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0003-sysfs-Fix-basename-build-with-musl.patch
new file mode 100644
index 0000000..3492493
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/lshw/files/0003-sysfs-Fix-basename-build-with-musl.patch
@@ -0,0 +1,92 @@
+From a89f2ba8496994c8b5e28a89202df15d64c648f9 Mon Sep 17 00:00:00 2001
+From: Krzysztof Kozlowski <krzk@kernel.org>
+Date: Wed, 6 Jun 2018 12:47:02 +0200
+Subject: [PATCH] sysfs: Fix basename() build with musl
+
+musl provides only standard basename() which accepts non-const string.
+This fixes build error with musl C library:
+
+    | sysfs.cc: In function 'std::__cxx11::string sysfs_getbustype(const string&)':
+    | sysfs.cc:102:21: error: 'basename' was not declared in this scope
+    |        "/devices/" + basename(path.c_str());
+    |                      ^~~~~~~~
+
+Upstream-Status: Submitted
+Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
+---
+ src/core/dasd.cc  | 3 ++-
+ src/core/sysfs.cc | 9 +++++----
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/src/core/dasd.cc b/src/core/dasd.cc
+index 626b8a872b0f..b27844215cc4 100644
+--- a/src/core/dasd.cc
++++ b/src/core/dasd.cc
+@@ -2,6 +2,7 @@
+ #include "osutils.h"
+ #include "dasd.h"
+ #include <glob.h>
++#include <libgen.h>
+ #include <string.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+@@ -42,7 +43,7 @@ bool scan_dasd(hwNode & n)
+   {
+     for(dev_num=0;dev_num<devices.gl_pathc;dev_num++)
+     {
+-      dev_name = basename(devices.gl_pathv[dev_num]);
++      dev_name = basename(const_cast<char *>(devices.gl_pathv[dev_num]));
+       for (std::vector<std::string>::iterator it = sysfs_attribs.begin(); it != sysfs_attribs.end(); ++it)
+       {
+         std::string attrib_fname = std::string(SYSFS_PREFIX) + dev_name + "/device/" + *it;
+diff --git a/src/core/sysfs.cc b/src/core/sysfs.cc
+index acc9d0056d5e..c56bab7b3b9f 100644
+--- a/src/core/sysfs.cc
++++ b/src/core/sysfs.cc
+@@ -7,6 +7,7 @@
+ #include "version.h"
+ #include "sysfs.h"
+ #include "osutils.h"
++#include <libgen.h>
+ #include <limits.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+@@ -99,7 +100,7 @@ static string sysfs_getbustype(const string & path)
+   {
+     devname =
+       string(fs.path + "/bus/") + string(namelist[i]->d_name) +
+-      "/devices/" + basename(path.c_str());
++      "/devices/" + basename(const_cast<char *>(path.c_str()));
+ 
+     if (samefile(devname, path))
+       return string(namelist[i]->d_name);
+@@ -139,7 +140,7 @@ static string sysfstobusinfo(const string & path)
+ 
+   if (bustype == "virtio")
+   {
+-    string name = basename(path.c_str());
++    string name = basename(const_cast<char *>(path.c_str()));
+     if (name.compare(0, 6, "virtio") == 0)
+       return "virtio@" + name.substr(6);
+     else
+@@ -207,7 +208,7 @@ string entry::driver() const
+   string driverlink = This->devpath + "/driver";
+   if (!exists(driverlink))
+     return "";
+-  return basename(readlink(driverlink).c_str());
++  return basename(const_cast<char *>(readlink(driverlink).c_str()));
+ }
+ 
+ 
+@@ -288,7 +289,7 @@ string entry::name_in_class(const string & classname) const
+ 
+ string entry::name() const
+ {
+-  return basename(This->devpath.c_str());
++  return basename(const_cast<char *>(This->devpath.c_str()));
+ }
+ 
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb b/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb
new file mode 100644
index 0000000..b344fbf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "A small tool to provide detailed information on the hardware \
+configuration of the machine. It can report exact memory configuration, \
+firmware version, mainboard configuration, CPU version and speed, cache \
+configuration, bus speed, etc. on DMI-capable or EFI systems."
+SUMMARY = "Hardware lister"
+HOMEPAGE = "http://ezix.org/project/wiki/HardwareLiSter"
+SECTION = "console/tools"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
+
+SRC_URI = " \
+    http://ezix.org/software/files/lshw-B.${PV}.tar.gz \
+    file://0001-Makefile-Fix-cross-compilation.patch \
+    file://0002-Makefile-Use-supplied-LDFLAGS-to-silence-OE-GNU_HASH.patch \
+    file://0003-sysfs-Fix-basename-build-with-musl.patch \
+"
+SRC_URI[md5sum] = "8671c6d94d6324a744b7f21f1bfecfd2"
+SRC_URI[sha256sum] = "ae22ef11c934364be4fd2a0a1a7aadf4495a0251ec6979da280d342a89ca3c2f"
+
+S = "${WORKDIR}/lshw-B.${PV}"
+
+do_compile() {
+    # build core only - don't ship gui
+    oe_runmake -C src core
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
index abe015d..f4033f7 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
@@ -15,7 +15,7 @@
 
 DEPENDS = "elfutils"
 RDEPENDS_${PN} = "elfutils"
-SRC_URI = "git://anonscm.debian.org/collab-maint/ltrace.git;branch=master \
+SRC_URI = "git://github.com/sparkleholic/ltrace.git;branch=master;protocol=http \
            file://configure-allow-to-disable-selinux-support.patch \
            file://0001-replace-readdir_r-with-readdir.patch \
            file://0001-Use-correct-enum-type.patch \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb b/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb
index 1d69b3c..3052eb0 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb
@@ -3,14 +3,14 @@
 LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=10a96c93403affcc34765f4c2612bc22"
 HOMEPAGE = "http://luajit.org"
 
-SRC_URI = "http://luajit.org/download/LuaJIT-${PV}.tar.gz \
+PV .= "+git${SRCPV}"
+SRCREV = "02b521981a1ab919ff2cd4d9bcaee80baf77dce2"
+SRC_URI = "git://luajit.org/git/luajit-2.0.git;protocol=http \
            file://0001-Do-not-strip-automatically-this-leaves-the-stripping.patch \
            file://clang.patch \
 "
-SRC_URI[md5sum] = "48353202cbcacab84ee41a5a70ea0a2c"
-SRC_URI[sha256sum] = "874b1f8297c697821f561f9b73b57ffd419ed8f4278c82e05b48806d30c1e979"
 
-S = "${WORKDIR}/LuaJIT-${PV}"
+S = "${WORKDIR}/git"
 
 inherit pkgconfig binconfig siteinfo
 
@@ -49,7 +49,6 @@
     'TARGET_SHLDFLAGS=${LDFLAGS}' \
     'HOST_CC=${BUILD_CC}' \
     'HOST_CFLAGS=${BUILD_CFLAGS}' \
-    'HOST_LDFLAGS=${BUILD_LDFLAGS}' \
     \
     'PREFIX=${prefix}' \
     'MULTILIB=${baselib}' \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.4.bb b/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.6.1.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.4.bb
rename to meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.6.1.bb
index 9052497..13710aa 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.4.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.6.1.bb
@@ -10,8 +10,8 @@
 inherit python-dir
 
 SRC_URI = "https://www.mercurial-scm.org/release/${BP}.tar.gz"
-SRC_URI[md5sum] = "c1d9fad1b7ed7077b0d4ae82e71154db"
-SRC_URI[sha256sum] = "234af4a67565c85923b0a1910c704ab44bcf12f69b85532687208776563d87de"
+SRC_URI[md5sum] = "f9b2e4a3b5901ef744fa3abe4196e97e"
+SRC_URI[sha256sum] = "89fa8ecbc8aa6e48e98f9803a1683ba91367124295dba2407b28c34ca621108d"
 
 S = "${WORKDIR}/mercurial-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_2.1.5.bb b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_2.1.5.bb
index 02c0cd2..690a7f4 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_2.1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_2.1.5.bb
@@ -9,14 +9,11 @@
 
 PV .= "+git${SRCPV}"
 
-SRCREV = "208595b2620cf6260ce3d6d4cf8543f13b206449"
-
 SRC_URI = "git://github.com/msgpack/msgpack-c \
            file://0001-Fix-Werror-class-memaccess.patch \
            "
-
-inherit cmake pkgconfig
+SRCREV = "208595b2620cf6260ce3d6d4cf8543f13b206449"
 
 S = "${WORKDIR}/git"
 
-FILES_${PN}-dev += "${libdir}/cmake/msgpack/*.cmake"
+inherit cmake pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.9.4.bb b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.12.0.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.9.4.bb
rename to meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.12.0.bb
index 8930cd9..8c33978 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.9.4.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.12.0.bb
@@ -1,9 +1,11 @@
 DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
 HOMEPAGE = "http://nodejs.org"
 LICENSE = "MIT & BSD & Artistic-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=270f7477a1705f7cd3e29d3d4512915d"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fde91d5c5bbd1e0389623e1ac018d9e8"
 
-DEPENDS = "openssl10 zlib"
+DEPENDS = "openssl zlib icu"
+
+inherit pkgconfig
 
 COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
 COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
@@ -12,8 +14,8 @@
 SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
            file://0001-Disable-running-gyp-files-for-bundled-deps.patch \
 "
-SRC_URI[md5sum] = "631ed102fe58c13cf63bc92a68cf4759"
-SRC_URI[sha256sum] = "6cdcde9c9c1ca9f450a0b24eafa229ca759e576daa0fae892ce74d541ecdc86f"
+SRC_URI[md5sum] = "8b3abd033dae96b6fadcb6a872a44d3c"
+SRC_URI[sha256sum] = "5a9dff58016c18fb4bf902d963b124ff058a550ebcd9840c677757387bce419a"
 
 S = "${WORKDIR}/node-v${PV}"
 
@@ -44,7 +46,7 @@
     export LD="${CXX}"
     GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
     # $TARGET_ARCH settings don't match --dest-cpu settings
-   ./configure --prefix=${prefix} --without-intl --without-snapshot --shared-openssl --shared-zlib \
+   ./configure --prefix=${prefix} --with-intl=system-icu --without-snapshot --shared-openssl --shared-zlib \
                --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH'), d)}" \
                --dest-os=linux \
                ${ARCHFLAGS}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Add-fallthrough-comments.patch b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Add-fallthrough-comments.patch
deleted file mode 100644
index 644146c..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Add-fallthrough-comments.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From 8f85163b030e7b957648f90cd8fa599fb04d5d65 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 23:32:49 -0700
-Subject: [PATCH 1/5] Add fallthrough comments
-
-Fixes
-
-src/svf/svf.c:663:7: error: this statement may fall through [-Werror=implicit-fallthrough=]
-     i = -1;
-     ~~^~~~
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/flash/mflash.c            | 3 ++-
- src/flash/nand/mx3.c          | 1 +
- src/jtag/drivers/ftdi.c       | 1 +
- src/svf/svf.c                 | 2 ++
- src/target/arm_adi_v5.c       | 9 +++++++++
- src/target/arm_disassembler.c | 1 +
- src/target/target.c           | 1 +
- 7 files changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/flash/mflash.c b/src/flash/mflash.c
-index b69995542..3254a3d56 100644
---- a/src/flash/mflash.c
-+++ b/src/flash/mflash.c
-@@ -259,10 +259,11 @@ static int mg_dsk_wait(mg_io_type_wait wait_local, uint32_t time_var)
- 				case mg_io_wait_rdy:
- 					if (status & mg_io_rbit_status_ready)
- 						return ERROR_OK;
--
-+					/* fallthru */
- 				case mg_io_wait_drq:
- 					if (status & mg_io_rbit_status_data_req)
- 						return ERROR_OK;
-+					/* fallthru */
- 
- 				default:
- 					break;
-diff --git a/src/flash/nand/mx3.c b/src/flash/nand/mx3.c
-index b61e47535..0a55929ed 100644
---- a/src/flash/nand/mx3.c
-+++ b/src/flash/nand/mx3.c
-@@ -281,6 +281,7 @@ static int imx31_command(struct nand_device *nand, uint8_t command)
- 			 * offset == one half of page size
- 			 */
- 			in_sram_address = MX3_NF_MAIN_BUFFER0 + (nand->page_size >> 1);
-+			/* fallthru */
- 		default:
- 			in_sram_address = MX3_NF_MAIN_BUFFER0;
- 	}
-diff --git a/src/jtag/drivers/ftdi.c b/src/jtag/drivers/ftdi.c
-index 00fe37faf..20f17d810 100644
---- a/src/jtag/drivers/ftdi.c
-+++ b/src/jtag/drivers/ftdi.c
-@@ -855,6 +855,7 @@ COMMAND_HANDLER(ftdi_handle_set_signal_command)
- 			ftdi_set_signal(sig, *CMD_ARGV[1]);
- 			break;
- 		}
-+		/* fallthru */
- 	default:
- 		LOG_ERROR("unknown signal level '%s', use 0, 1 or z", CMD_ARGV[1]);
- 		return ERROR_COMMAND_SYNTAX_ERROR;
-diff --git a/src/svf/svf.c b/src/svf/svf.c
-index e7e815c10..7b261cc72 100644
---- a/src/svf/svf.c
-+++ b/src/svf/svf.c
-@@ -661,11 +661,13 @@ static int svf_read_command_from_file(FILE *fd)
- 				if (svf_getline(&svf_read_line, &svf_read_line_size, svf_fd) <= 0)
- 					return ERROR_FAIL;
- 				i = -1;
-+				/* fallthru */
- 			case '\r':
- 				slash = 0;
- 				/* Don't save '\r' and '\n' if no data is parsed */
- 				if (!cmd_pos)
- 					break;
-+				/* fallthru */
- 			default:
- 				/* The parsing code currently expects a space
- 				 * before parentheses -- "TDI (123)".  Also a
-diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
-index eafc2ddc0..d444db2b1 100644
---- a/src/target/arm_adi_v5.c
-+++ b/src/target/arm_adi_v5.c
-@@ -346,10 +346,13 @@ static int mem_ap_write(struct adiv5_ap *ap, const uint8_t *buffer, uint32_t siz
- 			case 4:
- 				outvalue |= (uint32_t)*buffer++ << 8 * (address++ & 3);
- 				outvalue |= (uint32_t)*buffer++ << 8 * (address++ & 3);
-+				/* fallthru */
- 			case 2:
- 				outvalue |= (uint32_t)*buffer++ << 8 * (address++ & 3);
-+				/* fallthru */
- 			case 1:
- 				outvalue |= (uint32_t)*buffer++ << 8 * (address++ & 3);
-+				/* fallthru */
- 			}
- 		}
- 
-@@ -509,20 +512,26 @@ static int mem_ap_read(struct adiv5_ap *ap, uint8_t *buffer, uint32_t size, uint
- 			case 4:
- 				*buffer++ = *read_ptr >> 8 * (3 - (address++ & 3));
- 				*buffer++ = *read_ptr >> 8 * (3 - (address++ & 3));
-+				/* fallthru */
- 			case 2:
- 				*buffer++ = *read_ptr >> 8 * (3 - (address++ & 3));
-+				/* fallthru */
- 			case 1:
- 				*buffer++ = *read_ptr >> 8 * (3 - (address++ & 3));
-+				/* fallthru */
- 			}
- 		} else {
- 			switch (this_size) {
- 			case 4:
- 				*buffer++ = *read_ptr >> 8 * (address++ & 3);
- 				*buffer++ = *read_ptr >> 8 * (address++ & 3);
-+				/* fallthru */
- 			case 2:
- 				*buffer++ = *read_ptr >> 8 * (address++ & 3);
-+				/* fallthru */
- 			case 1:
- 				*buffer++ = *read_ptr >> 8 * (address++ & 3);
-+				/* fallthru */
- 			}
- 		}
- 
-diff --git a/src/target/arm_disassembler.c b/src/target/arm_disassembler.c
-index 5277b94d8..2eb21ea33 100644
---- a/src/target/arm_disassembler.c
-+++ b/src/target/arm_disassembler.c
-@@ -3299,6 +3299,7 @@ static int t2ev_data_immed(uint32_t opcode, uint32_t address,
- 		case 0x10:
- 		case 0x12:
- 			is_signed = true;
-+			/* fallthru */
- 		case 0x18:
- 		case 0x1a:
- 			/* signed/unsigned saturated add */
-diff --git a/src/target/target.c b/src/target/target.c
-index e04ecc470..597b4b13d 100644
---- a/src/target/target.c
-+++ b/src/target/target.c
-@@ -3684,6 +3684,7 @@ COMMAND_HANDLER(handle_bp_command)
- 				addr = 0;
- 				return handle_bp_command_set(CMD_CTX, addr, asid, length, hw);
- 			}
-+			/* fallthru */
- 
- 		case 4:
- 			hw = BKPT_HARD;
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch
new file mode 100644
index 0000000..c5b9083
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch
@@ -0,0 +1,39 @@
+From b95a996bfb281104b68ec66f32ebb79db519a4a8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 31 May 2018 21:06:46 -0700
+Subject: [PATCH] Fix libusb-1.0.22 deprecated libusb_set_debug with
+ libusb_set_option
+
+libusb_set_debug is deprecated in libusb >= 1.0.22 therefore replace
+with equivalent libusb_set_option()  API
+
+see libusb commit for more details
+
+https://github.com/libusb/libusb/commit/539f22e2fd916558d11ab9a66f10f461c5593168
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted [http://openocd.zylin.com/#/c/4540/]
+ src/jtag/drivers/xds110.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/jtag/drivers/xds110.c b/src/jtag/drivers/xds110.c
+index 90b699027..9bfe02ea8 100644
+--- a/src/jtag/drivers/xds110.c
++++ b/src/jtag/drivers/xds110.c
+@@ -367,8 +367,11 @@ static bool usb_connect(void)
+ 
+ 		/* Set libusb to auto detach kernel and disable debug messages */
+ 		(void)libusb_set_auto_detach_kernel_driver(dev, 1);
++#if LIBUSB_API_VERSION >= 0x01000106
++		libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_NONE);
++#else
+ 		libusb_set_debug(ctx, LIBUSB_LOG_LEVEL_NONE);
+-
++#endif
+ 		/* Claim the debug interface on the XDS110 */
+ 		result = libusb_claim_interface(dev, INTERFACE_DEBUG);
+ 	} else {
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0002-Workaround-new-warnings-generated-by-GCC-7.patch b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0002-Workaround-new-warnings-generated-by-GCC-7.patch
deleted file mode 100644
index aa99735..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0002-Workaround-new-warnings-generated-by-GCC-7.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 8daaa8c27794653d02854c5982669a7638473224 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 23:52:46 -0700
-Subject: [PATCH 2/5] Workaround new warnings generated by GCC 7
-
-src/flash/nor/xmc4xxx.c: In function 'xmc4xxx_get_info_command':
-src/flash/nor/xmc4xxx.c:939:43: error: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 6 [-Werror=format-truncation=]
-     snprintf(otp_str, sizeof(otp_str), "- %d\n", i);
-                                           ^~
-src/flash/nor/xmc4xxx.c:939:40: note: directive argument in the range [0, 2147483647]
-     snprintf(otp_str, sizeof(otp_str), "- %d\n", i);
-                                        ^~~~~~~~
-src/flash/nor/xmc4xxx.c:939:5: note: 'snprintf' output between 5 and 14 bytes into a destination of size 8
-     snprintf(otp_str, sizeof(otp_str), "- %d\n", i);
-     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/flash/nor/xmc4xxx.c | 2 +-
- src/target/arm_adi_v5.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/flash/nor/xmc4xxx.c b/src/flash/nor/xmc4xxx.c
-index 02df46a3f..e6c398ff9 100644
---- a/src/flash/nor/xmc4xxx.c
-+++ b/src/flash/nor/xmc4xxx.c
-@@ -931,7 +931,7 @@ static int xmc4xxx_get_info_command(struct flash_bank *bank, char *buf, int buf_
- 
- 	/* If OTP Write protection is enabled (User 2), list each
- 	 * sector that has it enabled */
--	char otp_str[8];
-+	char otp_str[14];
- 	if (otp_enabled) {
- 		strcat(prot_str, "\nOTP Protection is enabled for sectors:\n");
- 		for (int i = 0; i < bank->num_sectors; i++) {
-diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
-index d444db2b1..d0d95121f 100644
---- a/src/target/arm_adi_v5.c
-+++ b/src/target/arm_adi_v5.c
-@@ -1062,7 +1062,7 @@ static int dap_rom_display(struct command_context *cmd_ctx,
- 	int retval;
- 	uint64_t pid;
- 	uint32_t cid;
--	char tabs[7] = "";
-+	char tabs[16] = "";
- 
- 	if (depth > 16) {
- 		command_print(cmd_ctx, "\tTables too deep");
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0003-armv7a-Add-missing-break-to-fix-fallthrough-warning.patch b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0003-armv7a-Add-missing-break-to-fix-fallthrough-warning.patch
deleted file mode 100644
index bcfbfc9..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0003-armv7a-Add-missing-break-to-fix-fallthrough-warning.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 8e5051e83fedb078170565a24d1f5de6c2ce4428 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 17 Jun 2017 00:01:51 -0700
-Subject: [PATCH 3/5] armv7a: Add missing break to fix fallthrough warning
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/target/armv7a.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/target/armv7a.c b/src/target/armv7a.c
-index 6021def4e..bad806b3d 100644
---- a/src/target/armv7a.c
-+++ b/src/target/armv7a.c
-@@ -355,6 +355,7 @@ int armv7a_mmu_translate_va_pa(struct target *target, uint32_t va,
- 				break;
- 			case 7:
- 				LOG_INFO("inner: Write-Back, no Write-Allocate");
-+				break;
- 
- 			default:
- 				LOG_INFO("inner: %" PRIx32 " ???", INNER);
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0004-Fix-overflow-warning.patch b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0004-Fix-overflow-warning.patch
deleted file mode 100644
index bfc5627..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0004-Fix-overflow-warning.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From d3ca56370a2be7e737d48bd14d474d790a0ab8ac Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 17 Jun 2017 00:04:00 -0700
-Subject: [PATCH 4/5] Fix overflow warning
-
-Remove an empty space which makes it fit into 11 byte string
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/target/nds32_cmd.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/target/nds32_cmd.c b/src/target/nds32_cmd.c
-index edb4872e4..73355073c 100644
---- a/src/target/nds32_cmd.c
-+++ b/src/target/nds32_cmd.c
-@@ -821,7 +821,7 @@ static int jim_nds32_bulk_read(Jim_Interp *interp, int argc, Jim_Obj * const *ar
- 	jim_wide i;
- 	Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- 	for (i = 0; i < count; i++) {
--		sprintf(data_str, "0x%08" PRIx32 " ", data[i]);
-+		sprintf(data_str, "0x%08" PRIx32 "", data[i]);
- 		Jim_AppendStrings(interp, Jim_GetResult(interp), data_str, NULL);
- 	}
- 
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0005-command-Move-the-fall-through-comment-to-right-scope.patch b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0005-command-Move-the-fall-through-comment-to-right-scope.patch
deleted file mode 100644
index 60f75da..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0005-command-Move-the-fall-through-comment-to-right-scope.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 29dbf92ffdbdda29662b4190a2f8eb09caad8b51 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 17 Jun 2017 00:06:32 -0700
-Subject: [PATCH 5/5] command: Move the fall through comment to right scope
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/helper/command.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/helper/command.c b/src/helper/command.c
-index 5deaee859..287c14857 100644
---- a/src/helper/command.c
-+++ b/src/helper/command.c
-@@ -1456,8 +1456,8 @@ COMMAND_HELPER(handle_command_parse_bool, bool *out, const char *label)
- 				LOG_ERROR("%s: argument '%s' is not valid", CMD_NAME, in);
- 				return ERROR_COMMAND_SYNTAX_ERROR;
- 			}
--			/* fall through */
- 		}
-+		/* fall through */
- 		case 0:
- 			LOG_INFO("%s is %s", label, *out ? "enabled" : "disabled");
- 			break;
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
index 1a15e53..21a86de 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
@@ -9,17 +9,14 @@
     git://repo.or.cz/r/git2cl.git;protocol=http;destsuffix=tools/git2cl;name=git2cl \
     git://repo.or.cz/r/jimtcl.git;protocol=http;destsuffix=git/jimtcl;name=jimtcl \
     git://repo.or.cz/r/libjaylink.git;protocol=http;destsuffix=git/src/jtag/drivers/libjaylink;name=libjaylink \
-    file://0001-Add-fallthrough-comments.patch \
-    file://0002-Workaround-new-warnings-generated-by-GCC-7.patch \
-    file://0003-armv7a-Add-missing-break-to-fix-fallthrough-warning.patch \
-    file://0004-Fix-overflow-warning.patch \
-    file://0005-command-Move-the-fall-through-comment-to-right-scope.patch \
+    file://0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch \
 "
+
 SRCREV_FORMAT = "openocd"
-SRCREV_openocd = "1025be363e2bf42f1613083223a2322cc3a9bd4c"
+SRCREV_openocd = "cdf1e826eb23c29de1019ce64125f644f01b0afe"
 SRCREV_git2cl = "8373c9f74993e218a08819cbcdbab3f3564bbeba"
 SRCREV_jimtcl = "a9bf5975fd0f89974d689a2d9ebd0873c8d64787"
-SRCREV_libjaylink = "699b7001d34a79c8e7064503dde1bede786fd7f0"
+SRCREV_libjaylink = "8645845c1abebd004e991ba9a7f808f4fd0c608b"
 
 PV = "0.10+gitr${SRCPV}"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pax-utils/pax-utils_1.2.2.bb b/meta-openembedded/meta-oe/recipes-devtools/pax-utils/pax-utils_1.2.2.bb
new file mode 100644
index 0000000..9635a5e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/pax-utils/pax-utils_1.2.2.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Security-focused ELF files checking tool"
+DESCRIPTION = "This is a small set of various PaX aware and related \
+utilities for ELF binaries. It can check ELF binary files and running \
+processes for issues that might be relevant when using ELF binaries \
+along with PaX, such as non-PIC code or executable stack and heap."
+HOMEPAGE = "http://www.gentoo.org/proj/en/hardened/pax-utils.xml"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+SRC_URI = "https://dev.gentoo.org/~vapier/dist/pax-utils-${PV}.tar.xz"
+SRC_URI[md5sum] = "a580468318f0ff42edf4a8cd314cc942"
+SRC_URI[sha256sum] = "7f4a7f8db6b4743adde7582fa48992ad01776796fcde030683732f56221337d9"
+
+RDEPENDS_${PN} += "bash"
+
+export GNULIB_OVERRIDES_WINT_T = "0"
+
+do_configure_prepend() {
+    touch ${S}/NEWS ${S}/AUTHORS ${S}/ChangeLog ${S}/README
+}
+
+do_install() {
+    oe_runmake PREFIX=${D}${prefix} DESTDIR=${D} install
+}
+
+BBCLASSEXTEND = "native"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[libcap] = "--with-caps, --without-caps, libcap"
+PACKAGECONFIG[libseccomp] = "--with-seccomp, --without-seccomp, libseccomp"
+PACKAGECONFIG[pyelftools] = "--with-python, --without-python,, pyelftools"
+
+EXTRA_OECONF += "--enable-largefile"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_0.96.bb b/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_20180523.0.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_0.96.bb
rename to meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_20180523.0.bb
index 08c966d..c812ae1 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_0.96.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/perl/ipc-run_20180523.0.bb
@@ -10,7 +10,7 @@
 DEPENDS = "perl"
 
 SRC_URI = "git://github.com/toddr/IPC-Run.git"
-SRCREV = "96066366ac8c401dff9c979d04f25dc8219ffcc1"
+SRCREV = "0b409702490729eeb97ae65f5b94d949ec083134"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php.inc b/meta-openembedded/meta-oe/recipes-devtools/php/php.inc
index 066b97c..bfd0ddf 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/php/php.inc
+++ b/meta-openembedded/meta-oe/recipes-devtools/php/php.inc
@@ -5,8 +5,7 @@
 LICENSE = "PHP-3.0"
 
 BBCLASSEXTEND = "native"
-DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native lemon-native \
-           openssl"
+DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native lemon-native"
 DEPENDS_class-native = "zlib-native libxml2-native"
 
 PHP_MAJOR_VERSION = "${@d.getVar('PV', True).split('.')[0]}"
@@ -59,7 +58,7 @@
                 ${COMMON_EXTRA_OECONF} \
 "
 
-CACHED_CONFIGUREVARS += "ac_cv_func_dlopen=yes ac_cv_lib_dl_dlopen=yes"
+CACHED_CONFIGUREVARS += "ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=yes"
 
 EXTRA_OECONF_class-native = " \
                 --with-zlib=${STAGING_LIBDIR_NATIVE}/.. \
@@ -67,7 +66,7 @@
                 ${COMMON_EXTRA_OECONF} \
 "
 
-PACKAGECONFIG ??= "mysql sqlite3 imap opcache \
+PACKAGECONFIG ??= "mysql sqlite3 imap opcache openssl \
                    ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} \
 "
 PACKAGECONFIG_class-native = ""
@@ -80,7 +79,7 @@
 
 PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
                           --with-pdo-sqlite=${STAGING_LIBDIR}/.. \
-                          , \
+                          ,--without-sqlite3 --without-pdo-sqlite \
                           ,sqlite3"
 PACKAGECONFIG[pgsql] = "--with-pgsql=${STAGING_DIR_TARGET}${exec_prefix},--without-pgsql,postgresql"
 PACKAGECONFIG[soap] = "--enable-libxml --enable-soap, --disable-soap, libxml2"
@@ -91,7 +90,8 @@
                        ,--without-imap --without-imap-ssl \
                        ,uw-imap"
 PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[opcache] = ",--disable-opcache"
+PACKAGECONFIG[opcache] = "--enable-opcache,--disable-opcache"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl"
 
 export PHP_NATIVE_DIR = "${STAGING_BINDIR_NATIVE}"
 export PHP_PEAR_PHP_BIN = "${STAGING_BINDIR_NATIVE}/php"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-PHP-5.6-LibSSL-1.1-compatibility.patch b/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-PHP-5.6-LibSSL-1.1-compatibility.patch
new file mode 100644
index 0000000..ac8365b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-PHP-5.6-LibSSL-1.1-compatibility.patch
@@ -0,0 +1,1285 @@
+Subject: [PATCH] PHP 5.6 - LibSSL 1.1 compatibility
+
+This patch does not try to backport the 7.1 openssl module, it is the
+improved version of the 5.6 original openssl module.
+
+https://github.com/oerdnj/deb.sury.org/issues/566
+http://zettasystem.com/PHP-5.6.31-OpenSSL-1.1.0-compatibility-20170801.patch
+
+Upstream-Status: Deny [https://github.com/php/php-src/pull/2667]
+Reason: As PHP 5.6 is no longer actively supported only security fixes
+may land on this branch. As this change does not fall in this category,
+I'm closing this PR. (All higher versions of PHP already have OpenSSL
+1.1 support.)
+
+Author: zsalab@github https://github.com/zsalab
+
+Only port source modification, do not include the test case
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ ext/openssl/openssl.c | 683 +++++++++++++++++++++++++++++++++++++-------------
+ ext/openssl/xp_ssl.c  |  18 +-
+ ext/phar/util.c       |  13 +-
+ 3 files changed, 527 insertions(+), 187 deletions(-)
+
+diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
+index a78a8fb..b53114c 100644
+--- a/ext/openssl/openssl.c
++++ b/ext/openssl/openssl.c
+@@ -42,6 +42,12 @@
+ 
+ /* OpenSSL includes */
+ #include <openssl/evp.h>
++#if OPENSSL_VERSION_NUMBER >= 0x10002000L
++#include <openssl/bn.h>
++#include <openssl/rsa.h>
++#include <openssl/dsa.h>
++#include <openssl/dh.h>
++#endif
+ #include <openssl/x509.h>
+ #include <openssl/x509v3.h>
+ #include <openssl/crypto.h>
+@@ -531,6 +537,133 @@ zend_module_entry openssl_module_entry = {
+ ZEND_GET_MODULE(openssl)
+ #endif
+ 
++/* {{{ OpenSSL compatibility functions and macros */
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined (LIBRESSL_VERSION_NUMBER)
++#define EVP_PKEY_get0_RSA(_pkey) _pkey->pkey.rsa
++#define EVP_PKEY_get0_DH(_pkey) _pkey->pkey.dh
++#define EVP_PKEY_get0_DSA(_pkey) _pkey->pkey.dsa
++#define EVP_PKEY_get0_EC_KEY(_pkey) _pkey->pkey.ec
++
++static int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
++{
++	r->n = n;
++	r->e = e;
++	r->d = d;
++
++	return 1;
++}
++
++static int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
++{
++	r->p = p;
++	r->q = q;
++
++	return 1;
++}
++
++static int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
++{
++	r->dmp1 = dmp1;
++	r->dmq1 = dmq1;
++	r->iqmp = iqmp;
++
++	return 1;
++}
++
++static void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
++{
++	*n = r->n;
++	*e = r->e;
++	*d = r->d;
++}
++
++static void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
++{
++	*p = r->p;
++	*q = r->q;
++}
++
++static void RSA_get0_crt_params(const RSA *r, const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp)
++{
++	*dmp1 = r->dmp1;
++	*dmq1 = r->dmq1;
++	*iqmp = r->iqmp;
++}
++
++static void DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
++{
++	*p = dh->p;
++	*q = dh->q;
++	*g = dh->g;
++}
++
++static int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
++{
++	dh->p = p;
++	dh->q = q;
++	dh->g = g;
++
++	return 1;
++}
++
++static void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
++{
++	*pub_key = dh->pub_key;
++	*priv_key = dh->priv_key;
++}
++
++static int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
++{
++	dh->pub_key = pub_key;
++	dh->priv_key = priv_key;
++
++	return 1;
++}
++
++static void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
++{
++	*p = d->p;
++	*q = d->q;
++	*g = d->g;
++}
++
++int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g)
++{
++	d->p = p;
++	d->q = q;
++	d->g = g;
++
++	return 1;
++}
++
++static void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key)
++{
++	*pub_key = d->pub_key;
++	*priv_key = d->priv_key;
++}
++
++int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key)
++{
++	d->pub_key = pub_key;
++	d->priv_key = priv_key;
++
++	return 1;
++}
++
++#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined (LIBRESSL_VERSION_NUMBER)
++#define EVP_PKEY_id(_pkey) _pkey->type
++#define EVP_PKEY_base_id(_key) EVP_PKEY_type(_key->type)
++
++static int X509_get_signature_nid(const X509 *x)
++{
++	return OBJ_obj2nid(x->sig_alg->algorithm);
++}
++
++#endif
++
++#endif
++/* }}} */
++
+ static int le_key;
+ static int le_x509;
+ static int le_csr;
+@@ -825,7 +958,7 @@ static int add_oid_section(struct php_x509_request * req TSRMLS_DC) /* {{{ */
+ 	}
+ 	for (i = 0; i < sk_CONF_VALUE_num(sktmp); i++) {
+ 		cnf = sk_CONF_VALUE_value(sktmp, i);
+-		if (OBJ_create(cnf->value, cnf->name, cnf->name) == NID_undef) {
++		if (OBJ_sn2nid(cnf->name) == NID_undef && OBJ_ln2nid(cnf->name) == NID_undef && OBJ_create(cnf->value, cnf->name, cnf->name) == NID_undef) {
+ 			php_error_docref(NULL TSRMLS_CC, E_WARNING, "problem creating object %s=%s", cnf->name, cnf->value);
+ 			return FAILURE;
+ 		}
+@@ -967,7 +1100,7 @@ static void php_openssl_dispose_config(struct php_x509_request * req TSRMLS_DC)
+ }
+ /* }}} */
+ 
+-#ifdef PHP_WIN32
++#if defined(PHP_WIN32) || (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER))
+ #define PHP_OPENSSL_RAND_ADD_TIME() ((void) 0)
+ #else
+ #define PHP_OPENSSL_RAND_ADD_TIME() php_openssl_rand_add_timeval()
+@@ -1053,9 +1186,11 @@ static EVP_MD * php_openssl_get_evp_md_from_algo(long algo) { /* {{{ */
+ 			mdtype = (EVP_MD *) EVP_md2();
+ 			break;
+ #endif
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined (LIBRESSL_VERSION_NUMBER)
+ 		case OPENSSL_ALGO_DSS1:
+ 			mdtype = (EVP_MD *) EVP_dss1();
+ 			break;
++#endif
+ #if OPENSSL_VERSION_NUMBER >= 0x0090708fL
+ 		case OPENSSL_ALGO_SHA224:
+ 			mdtype = (EVP_MD *) EVP_sha224();
+@@ -1146,6 +1281,12 @@ PHP_MINIT_FUNCTION(openssl)
+ 	OpenSSL_add_all_digests();
+ 	OpenSSL_add_all_algorithms();
+ 
++#if !defined(OPENSSL_NO_AES) && defined(EVP_CIPH_CCM_MODE) && OPENSSL_VERSION_NUMBER < 0x100020000
++	EVP_add_cipher(EVP_aes_128_ccm());
++	EVP_add_cipher(EVP_aes_192_ccm());
++	EVP_add_cipher(EVP_aes_256_ccm());
++#endif
++
+ 	SSL_load_error_strings();
+ 
+ 	/* register a resource id number with OpenSSL so that we can map SSL -> stream structures in
+@@ -1173,7 +1314,9 @@ PHP_MINIT_FUNCTION(openssl)
+ #ifdef HAVE_OPENSSL_MD2_H
+ 	REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD2", OPENSSL_ALGO_MD2, CONST_CS|CONST_PERSISTENT);
+ #endif
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined (LIBRESSL_VERSION_NUMBER)
+ 	REGISTER_LONG_CONSTANT("OPENSSL_ALGO_DSS1", OPENSSL_ALGO_DSS1, CONST_CS|CONST_PERSISTENT);
++#endif
+ #if OPENSSL_VERSION_NUMBER >= 0x0090708fL
+ 	REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA224", OPENSSL_ALGO_SHA224, CONST_CS|CONST_PERSISTENT);
+ 	REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA256", OPENSSL_ALGO_SHA256, CONST_CS|CONST_PERSISTENT);
+@@ -1251,7 +1394,9 @@ PHP_MINIT_FUNCTION(openssl)
+ 	}
+ 
+ 	php_stream_xport_register("ssl", php_openssl_ssl_socket_factory TSRMLS_CC);
++#ifndef OPENSSL_NO_SSL3
+ 	php_stream_xport_register("sslv3", php_openssl_ssl_socket_factory TSRMLS_CC);
++#endif
+ #ifndef OPENSSL_NO_SSL2
+ 	php_stream_xport_register("sslv2", php_openssl_ssl_socket_factory TSRMLS_CC);
+ #endif
+@@ -1308,7 +1453,9 @@ PHP_MSHUTDOWN_FUNCTION(openssl)
+ #ifndef OPENSSL_NO_SSL2
+ 	php_stream_xport_unregister("sslv2" TSRMLS_CC);
+ #endif
++#ifndef OPENSSL_NO_SSL3
+ 	php_stream_xport_unregister("sslv3" TSRMLS_CC);
++#endif
+ 	php_stream_xport_unregister("tls" TSRMLS_CC);
+ 	php_stream_xport_unregister("tlsv1.0" TSRMLS_CC);
+ #if OPENSSL_VERSION_NUMBER >= 0x10001001L
+@@ -1893,6 +2040,7 @@ static int openssl_x509v3_subjectAltName(BIO *bio, X509_EXTENSION *extension)
+ {
+ 	GENERAL_NAMES *names;
+ 	const X509V3_EXT_METHOD *method = NULL;
++	ASN1_OCTET_STRING *extension_data;
+ 	long i, length, num;
+ 	const unsigned char *p;
+ 
+@@ -1901,8 +2049,9 @@ static int openssl_x509v3_subjectAltName(BIO *bio, X509_EXTENSION *extension)
+ 		return -1;
+ 	}
+ 
+-	p = extension->value->data;
+-	length = extension->value->length;
++	extension_data = X509_EXTENSION_get_data(extension);
++	p = extension_data->data;
++	length = extension_data->length;
+ 	if (method->it) {
+ 		names = (GENERAL_NAMES*)(ASN1_item_d2i(NULL, &p, length,
+ 						       ASN1_ITEM_ptr(method->it)));
+@@ -1965,6 +2114,8 @@ PHP_FUNCTION(openssl_x509_parse)
+ 	char * tmpstr;
+ 	zval * subitem;
+ 	X509_EXTENSION *extension;
++	X509_NAME *subject_name;
++	char *cert_name;
+ 	char *extname;
+ 	BIO  *bio_out;
+ 	BUF_MEM *bio_buf;
+@@ -1979,10 +2130,10 @@ PHP_FUNCTION(openssl_x509_parse)
+ 	}
+ 	array_init(return_value);
+ 
+-	if (cert->name) {
+-		add_assoc_string(return_value, "name", cert->name, 1);
+-	}
+-/*	add_assoc_bool(return_value, "valid", cert->valid); */
++	subject_name = X509_get_subject_name(cert);
++	cert_name = X509_NAME_oneline(subject_name, NULL, 0);
++	add_assoc_string(return_value, "name", cert_name, 1);
++	OPENSSL_free(cert_name);
+ 
+ 	add_assoc_name_entry(return_value, "subject", 		X509_get_subject_name(cert), useshortnames TSRMLS_CC);
+ 	/* hash as used in CA directories to lookup cert by subject name */
+@@ -2008,7 +2159,7 @@ PHP_FUNCTION(openssl_x509_parse)
+ 		add_assoc_string(return_value, "alias", tmpstr, 1);
+ 	}
+ 
+-	sig_nid = OBJ_obj2nid((cert)->sig_alg->algorithm);
++	sig_nid = X509_get_signature_nid(cert);
+ 	add_assoc_string(return_value, "signatureTypeSN", (char*)OBJ_nid2sn(sig_nid), 1);
+ 	add_assoc_string(return_value, "signatureTypeLN", (char*)OBJ_nid2ln(sig_nid), 1);
+ 	add_assoc_long(return_value, "signatureTypeNID", sig_nid);
+@@ -3217,7 +3368,21 @@ PHP_FUNCTION(openssl_csr_get_public_key)
+ 		RETURN_FALSE;
+ 	}
+ 
+-	tpubkey=X509_REQ_get_pubkey(csr);
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
++	/* Due to changes in OpenSSL 1.1 related to locking when decoding CSR,
++	 * the pub key is not changed after assigning. It means if we pass
++	 * a private key, it will be returned including the private part.
++	 * If we duplicate it, then we get just the public part which is
++	 * the same behavior as for OpenSSL 1.0 */
++	csr = X509_REQ_dup(csr);
++#endif
++	/* Retrieve the public key from the CSR */
++	tpubkey = X509_REQ_get_pubkey(csr);
++
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
++	/* We need to free the CSR as it was duplicated */
++	X509_REQ_free(csr);
++#endif
+ 	RETVAL_RESOURCE(zend_list_insert(tpubkey, le_key TSRMLS_CC));
+ 	return;
+ }
+@@ -3482,13 +3647,20 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC)
+ {
+ 	assert(pkey != NULL);
+ 
+-	switch (pkey->type) {
++	switch (EVP_PKEY_id(pkey)) {
+ #ifndef NO_RSA
+ 		case EVP_PKEY_RSA:
+ 		case EVP_PKEY_RSA2:
+-			assert(pkey->pkey.rsa != NULL);
+-			if (pkey->pkey.rsa != NULL && (NULL == pkey->pkey.rsa->p || NULL == pkey->pkey.rsa->q)) {
+-				return 0;
++			{
++				RSA *rsa = EVP_PKEY_get0_RSA(pkey);
++				if (rsa != NULL) {
++					const BIGNUM *p, *q;
++
++					RSA_get0_factors(rsa, &p, &q);
++					 if (p == NULL || q == NULL) {
++						return 0;
++					 }
++				}
+ 			}
+ 			break;
+ #endif
+@@ -3498,28 +3670,51 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC)
+ 		case EVP_PKEY_DSA2:
+ 		case EVP_PKEY_DSA3:
+ 		case EVP_PKEY_DSA4:
+-			assert(pkey->pkey.dsa != NULL);
+-
+-			if (NULL == pkey->pkey.dsa->p || NULL == pkey->pkey.dsa->q || NULL == pkey->pkey.dsa->priv_key){ 
+-				return 0;
++			{
++				DSA *dsa = EVP_PKEY_get0_DSA(pkey);
++				if (dsa != NULL) {
++					const BIGNUM *p, *q, *g, *pub_key, *priv_key;
++
++					DSA_get0_pqg(dsa, &p, &q, &g);
++					if (p == NULL || q == NULL) {
++						return 0;
++					}
++ 
++					DSA_get0_key(dsa, &pub_key, &priv_key);
++					if (priv_key == NULL) {
++						return 0;
++					}
++				}
+ 			}
+ 			break;
+ #endif
+ #ifndef NO_DH
+ 		case EVP_PKEY_DH:
+-			assert(pkey->pkey.dh != NULL);
+-
+-			if (NULL == pkey->pkey.dh->p || NULL == pkey->pkey.dh->priv_key) {
+-				return 0;
++			{
++				DH *dh = EVP_PKEY_get0_DH(pkey);
++				if (dh != NULL) {
++					const BIGNUM *p, *q, *g, *pub_key, *priv_key;
++
++					DH_get0_pqg(dh, &p, &q, &g);
++					if (p == NULL) {
++						return 0;
++					}
++ 
++					DH_get0_key(dh, &pub_key, &priv_key);
++					if (priv_key == NULL) {
++						return 0;
++					}
++				}
+ 			}
+ 			break;
+ #endif
+ #ifdef HAVE_EVP_PKEY_EC
+ 		case EVP_PKEY_EC:
+-			assert(pkey->pkey.ec != NULL);
+-
+-			if ( NULL == EC_KEY_get0_private_key(pkey->pkey.ec)) {
+-				return 0;
++			{
++				EC_KEY *ec = EVP_PKEY_get0_EC_KEY(pkey);
++				if (ec != NULL && NULL == EC_KEY_get0_private_key(ec)) {
++					return 0;
++				}
+ 			}
+ 			break;
+ #endif
+@@ -3531,34 +3726,80 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC)
+ }
+ /* }}} */
+ 
+-#define OPENSSL_PKEY_GET_BN(_type, _name) do {							\
+-		if (pkey->pkey._type->_name != NULL) {							\
+-			int len = BN_num_bytes(pkey->pkey._type->_name);			\
+-			char *str = emalloc(len + 1);								\
+-			BN_bn2bin(pkey->pkey._type->_name, (unsigned char*)str);	\
+-			str[len] = 0;                                           	\
+-			add_assoc_stringl(_type, #_name, str, len, 0);				\
+-		}																\
+-	} while (0)
+-
+-#define OPENSSL_PKEY_SET_BN(_ht, _type, _name) do {						\
+-		zval **bn;														\
+-		if (zend_hash_find(_ht, #_name, sizeof(#_name),	(void**)&bn) == SUCCESS && \
+-				Z_TYPE_PP(bn) == IS_STRING) {							\
+-			_type->_name = BN_bin2bn(									\
+-				(unsigned char*)Z_STRVAL_PP(bn),						\
+-	 			Z_STRLEN_PP(bn), NULL);									\
+-	    }                                                               \
++#define OPENSSL_GET_BN(_array, _bn, _name) do { \
++		if (_bn != NULL) { \
++			int len = BN_num_bytes(_bn); \
++			char *str = emalloc(len + 1); \
++			BN_bn2bin(_bn, (unsigned char*)str); \
++			str[len] = 0; \
++			add_assoc_stringl(_array, #_name, str, len, 0); \
++		} \
+ 	} while (0);
+ 
++#define OPENSSL_PKEY_GET_BN(_type, _name) OPENSSL_GET_BN(_type, _name, _name)
++
++#define OPENSSL_PKEY_SET_BN(_data, _name) do { \
++		zval **bn; \
++		if (zend_hash_find(Z_ARRVAL_P(_data), #_name, sizeof(#_name),(void**)&bn) == SUCCESS && \
++				Z_TYPE_PP(bn) == IS_STRING) { \
++			_name = BN_bin2bn( \
++				(unsigned char*)Z_STRVAL_PP(bn), \
++				Z_STRLEN_PP(bn), NULL); \
++		} else { \
++			_name = NULL; \
++		} \
++ 	} while (0);
++
++/* {{{ php_openssl_pkey_init_rsa */
++zend_bool php_openssl_pkey_init_and_assign_rsa(EVP_PKEY *pkey, RSA *rsa, zval *data)
++{
++	BIGNUM *n, *e, *d, *p, *q, *dmp1, *dmq1, *iqmp;
++
++	OPENSSL_PKEY_SET_BN(data, n);
++	OPENSSL_PKEY_SET_BN(data, e);
++	OPENSSL_PKEY_SET_BN(data, d);
++	if (!n || !d || !RSA_set0_key(rsa, n, e, d)) {
++		return 0;
++	}
++
++	OPENSSL_PKEY_SET_BN(data, p);
++	OPENSSL_PKEY_SET_BN(data, q);
++	if ((p || q) && !RSA_set0_factors(rsa, p, q)) {
++		return 0;
++	}
++
++	OPENSSL_PKEY_SET_BN(data, dmp1);
++	OPENSSL_PKEY_SET_BN(data, dmq1);
++	OPENSSL_PKEY_SET_BN(data, iqmp);
++	if ((dmp1 || dmq1 || iqmp) && !RSA_set0_crt_params(rsa, dmp1, dmq1, iqmp)) {
++		return 0;
++	}
++
++	if (!EVP_PKEY_assign_RSA(pkey, rsa)) {
++		return 0;
++	}
++
++	return 1;
++}
++/* }}} */
++
+ /* {{{ php_openssl_pkey_init_dsa */
+-zend_bool php_openssl_pkey_init_dsa(DSA *dsa)
++zend_bool php_openssl_pkey_init_dsa(DSA *dsa, zval *data)
+ {
+-	if (!dsa->p || !dsa->q || !dsa->g) {
++	BIGNUM *p, *q, *g, *priv_key, *pub_key;
++	const BIGNUM *priv_key_const, *pub_key_const;
++
++	OPENSSL_PKEY_SET_BN(data, p);
++	OPENSSL_PKEY_SET_BN(data, q);
++	OPENSSL_PKEY_SET_BN(data, g);
++	if (!p || !q || !g || !DSA_set0_pqg(dsa, p, q, g)) {
+ 		return 0;
+ 	}
+-	if (dsa->priv_key || dsa->pub_key) {
+-		return 1;
++
++	OPENSSL_PKEY_SET_BN(data, pub_key);
++	OPENSSL_PKEY_SET_BN(data, priv_key);
++	if (pub_key) {
++		return DSA_set0_key(dsa, pub_key, priv_key);
+ 	}
+ 	PHP_OPENSSL_RAND_ADD_TIME();
+ 	if (!DSA_generate_key(dsa)) {
+@@ -3566,7 +3807,8 @@ zend_bool php_openssl_pkey_init_dsa(DSA *dsa)
+ 	}
+ 	/* if BN_mod_exp return -1, then DSA_generate_key succeed for failed key
+ 	 * so we need to double check that public key is created */
+-	if (!dsa->pub_key || BN_is_zero(dsa->pub_key)) {
++	DSA_get0_key(dsa, &pub_key_const, &priv_key_const);
++	if (!pub_key_const || BN_is_zero(pub_key_const)) {
+ 		return 0;
+ 	}
+ 	/* all good */
+@@ -3574,14 +3816,66 @@ zend_bool php_openssl_pkey_init_dsa(DSA *dsa)
+ }
+ /* }}} */
+ 
++/* {{{ php_openssl_dh_pub_from_priv */
++static BIGNUM *php_openssl_dh_pub_from_priv(BIGNUM *priv_key, BIGNUM *g, BIGNUM *p)
++{
++	BIGNUM *pub_key, *priv_key_const_time;
++	BN_CTX *ctx;
++
++	pub_key = BN_new();
++	if (pub_key == NULL) {
++		return NULL;
++	}
++
++	priv_key_const_time = BN_new();
++	if (priv_key_const_time == NULL) {
++		BN_free(pub_key);
++		return NULL;
++	}
++	ctx = BN_CTX_new();
++	if (ctx == NULL) {
++		BN_free(pub_key);
++		BN_free(priv_key_const_time);
++		return NULL;
++	}
++
++	BN_with_flags(priv_key_const_time, priv_key, BN_FLG_CONSTTIME);
++
++	if (!BN_mod_exp_mont(pub_key, g, priv_key_const_time, p, ctx, NULL)) {
++		BN_free(pub_key);
++		pub_key = NULL;
++	}
++
++	BN_free(priv_key_const_time);
++	BN_CTX_free(ctx);
++
++	return pub_key;
++}
++/* }}} */
++
+ /* {{{ php_openssl_pkey_init_dh */
+-zend_bool php_openssl_pkey_init_dh(DH *dh)
++zend_bool php_openssl_pkey_init_dh(DH *dh, zval *data)
+ {
+-	if (!dh->p || !dh->g) {
++	BIGNUM *p, *q, *g, *priv_key, *pub_key;
++
++	OPENSSL_PKEY_SET_BN(data, p);
++	OPENSSL_PKEY_SET_BN(data, q);
++	OPENSSL_PKEY_SET_BN(data, g);
++	if (!p || !g || !DH_set0_pqg(dh, p, q, g)) {
+ 		return 0;
+ 	}
+-	if (dh->pub_key) {
+-		return 1;
++
++	OPENSSL_PKEY_SET_BN(data, priv_key);
++	OPENSSL_PKEY_SET_BN(data, pub_key);
++	if (pub_key) {
++		return DH_set0_key(dh, pub_key, priv_key);
++	}
++	if (priv_key) {
++		pub_key = php_openssl_dh_pub_from_priv(priv_key, g, p);
++		if (pub_key == NULL) {
++			return 0;
++		}
++		return DH_set0_key(dh, pub_key, priv_key);
+ 	}
+ 	PHP_OPENSSL_RAND_ADD_TIME();
+ 	if (!DH_generate_key(dh)) {
+@@ -3614,18 +3908,8 @@ PHP_FUNCTION(openssl_pkey_new)
+ 		    if (pkey) {
+ 				RSA *rsa = RSA_new();
+ 				if (rsa) {
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, n);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, e);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, d);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, p);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, q);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, dmp1);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, dmq1);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, iqmp);
+-					if (rsa->n && rsa->d) {
+-						if (EVP_PKEY_assign_RSA(pkey, rsa)) {
+-							RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC));
+-						}
++					if (php_openssl_pkey_init_and_assign_rsa(pkey, rsa, *data)) {
++						RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC));
+ 					}
+ 					RSA_free(rsa);
+ 				}
+@@ -3638,12 +3922,7 @@ PHP_FUNCTION(openssl_pkey_new)
+ 		    if (pkey) {
+ 				DSA *dsa = DSA_new();
+ 				if (dsa) {
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, p);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, q);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, g);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, priv_key);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, pub_key);
+-					if (php_openssl_pkey_init_dsa(dsa)) {
++					if (php_openssl_pkey_init_dsa(dsa, *data)) {
+ 						if (EVP_PKEY_assign_DSA(pkey, dsa)) {
+ 							RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC));
+ 						}
+@@ -3659,11 +3938,7 @@ PHP_FUNCTION(openssl_pkey_new)
+ 		    if (pkey) {
+ 				DH *dh = DH_new();
+ 				if (dh) {
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, p);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, g);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, priv_key);
+-					OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, pub_key);
+-					if (php_openssl_pkey_init_dh(dh)) {
++					if (php_openssl_pkey_init_dh(dh, *data)) {
+ 						if (EVP_PKEY_assign_DH(pkey, dh)) {
+ 							RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC));
+ 						}
+@@ -3738,10 +4013,10 @@ PHP_FUNCTION(openssl_pkey_export_to_file)
+ 			cipher = NULL;
+ 		}
+ 
+-		switch (EVP_PKEY_type(key->type)) {
++		switch (EVP_PKEY_base_id(key)) {
+ #ifdef HAVE_EVP_PKEY_EC
+ 			case EVP_PKEY_EC:
+-				pem_write = PEM_write_bio_ECPrivateKey(bio_out, EVP_PKEY_get1_EC_KEY(key), cipher, (unsigned char *)passphrase, passphrase_len, NULL, NULL);
++				pem_write = PEM_write_bio_ECPrivateKey(bio_out, EVP_PKEY_get0_EC_KEY(key), cipher, (unsigned char *)passphrase, passphrase_len, NULL, NULL);
+ 				break;
+ #endif
+ 			default:
+@@ -3807,7 +4082,7 @@ PHP_FUNCTION(openssl_pkey_export)
+ 			cipher = NULL;
+ 		}
+ 
+-		switch (EVP_PKEY_type(key->type)) {
++		switch (EVP_PKEY_base_id(key)) {
+ #ifdef HAVE_EVP_PKEY_EC
+ 			case EVP_PKEY_EC:
+ 				pem_write = PEM_write_bio_ECPrivateKey(bio_out, EVP_PKEY_get1_EC_KEY(key), cipher, (unsigned char *)passphrase, passphrase_len, NULL, NULL);
+@@ -3928,25 +4203,33 @@ PHP_FUNCTION(openssl_pkey_get_details)
+ 	/*TODO: Use the real values once the openssl constants are used 
+ 	 * See the enum at the top of this file
+ 	 */
+-	switch (EVP_PKEY_type(pkey->type)) {
++	switch (EVP_PKEY_base_id(pkey)) {
+ 		case EVP_PKEY_RSA:
+ 		case EVP_PKEY_RSA2:
+-			ktype = OPENSSL_KEYTYPE_RSA;
+-
+-			if (pkey->pkey.rsa != NULL) {
+-				zval *rsa;
+-
+-				ALLOC_INIT_ZVAL(rsa);
+-				array_init(rsa);
+-				OPENSSL_PKEY_GET_BN(rsa, n);
+-				OPENSSL_PKEY_GET_BN(rsa, e);
+-				OPENSSL_PKEY_GET_BN(rsa, d);
+-				OPENSSL_PKEY_GET_BN(rsa, p);
+-				OPENSSL_PKEY_GET_BN(rsa, q);
+-				OPENSSL_PKEY_GET_BN(rsa, dmp1);
+-				OPENSSL_PKEY_GET_BN(rsa, dmq1);
+-				OPENSSL_PKEY_GET_BN(rsa, iqmp);
+-				add_assoc_zval(return_value, "rsa", rsa);
++			{
++				RSA *rsa = EVP_PKEY_get0_RSA(pkey);
++				ktype = OPENSSL_KEYTYPE_RSA;
++
++				if (rsa != NULL) {
++					zval *z_rsa;
++					const BIGNUM *n, *e, *d, *p, *q, *dmp1, *dmq1, *iqmp;
++
++					RSA_get0_key(rsa, &n, &e, &d);
++					RSA_get0_factors(rsa, &p, &q);
++					RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp);
++
++					ALLOC_INIT_ZVAL(z_rsa);
++					array_init(z_rsa);
++					OPENSSL_PKEY_GET_BN(z_rsa, n);
++					OPENSSL_PKEY_GET_BN(z_rsa, e);
++					OPENSSL_PKEY_GET_BN(z_rsa, d);
++					OPENSSL_PKEY_GET_BN(z_rsa, p);
++					OPENSSL_PKEY_GET_BN(z_rsa, q);
++					OPENSSL_PKEY_GET_BN(z_rsa, dmp1);
++					OPENSSL_PKEY_GET_BN(z_rsa, dmq1);
++					OPENSSL_PKEY_GET_BN(z_rsa, iqmp);
++					add_assoc_zval(return_value, "rsa", z_rsa);
++				}
+ 			}
+ 
+ 			break;	
+@@ -3954,42 +4237,55 @@ PHP_FUNCTION(openssl_pkey_get_details)
+ 		case EVP_PKEY_DSA2:
+ 		case EVP_PKEY_DSA3:
+ 		case EVP_PKEY_DSA4:
+-			ktype = OPENSSL_KEYTYPE_DSA;
+-
+-			if (pkey->pkey.dsa != NULL) {
+-				zval *dsa;
+-
+-				ALLOC_INIT_ZVAL(dsa);
+-				array_init(dsa);
+-				OPENSSL_PKEY_GET_BN(dsa, p);
+-				OPENSSL_PKEY_GET_BN(dsa, q);
+-				OPENSSL_PKEY_GET_BN(dsa, g);
+-				OPENSSL_PKEY_GET_BN(dsa, priv_key);
+-				OPENSSL_PKEY_GET_BN(dsa, pub_key);
+-				add_assoc_zval(return_value, "dsa", dsa);
++			{
++				DSA *dsa = EVP_PKEY_get0_DSA(pkey);
++				ktype = OPENSSL_KEYTYPE_DSA;
++
++				if (dsa != NULL) {
++					zval *z_dsa;
++					const BIGNUM *p, *q, *g, *priv_key, *pub_key;
++
++					DSA_get0_pqg(dsa, &p, &q, &g);
++					DSA_get0_key(dsa, &pub_key, &priv_key);
++
++					ALLOC_INIT_ZVAL(z_dsa);
++					array_init(z_dsa);
++					OPENSSL_PKEY_GET_BN(z_dsa, p);
++					OPENSSL_PKEY_GET_BN(z_dsa, q);
++					OPENSSL_PKEY_GET_BN(z_dsa, g);
++					OPENSSL_PKEY_GET_BN(z_dsa, priv_key);
++					OPENSSL_PKEY_GET_BN(z_dsa, pub_key);
++					add_assoc_zval(return_value, "dsa", z_dsa);
++				}
+ 			}
+ 			break;
+ 		case EVP_PKEY_DH:
+-			
+-			ktype = OPENSSL_KEYTYPE_DH;
+-
+-			if (pkey->pkey.dh != NULL) {
+-				zval *dh;
+-
+-				ALLOC_INIT_ZVAL(dh);
+-				array_init(dh);
+-				OPENSSL_PKEY_GET_BN(dh, p);
+-				OPENSSL_PKEY_GET_BN(dh, g);
+-				OPENSSL_PKEY_GET_BN(dh, priv_key);
+-				OPENSSL_PKEY_GET_BN(dh, pub_key);
+-				add_assoc_zval(return_value, "dh", dh);
++			{
++				DH *dh = EVP_PKEY_get0_DH(pkey);
++				ktype = OPENSSL_KEYTYPE_DH;
++
++				if (dh != NULL) {
++					zval *z_dh;
++					const BIGNUM *p, *q, *g, *priv_key, *pub_key;
++
++					DH_get0_pqg(dh, &p, &q, &g);
++					DH_get0_key(dh, &pub_key, &priv_key);
++
++					ALLOC_INIT_ZVAL(z_dh);
++					array_init(z_dh);
++					OPENSSL_PKEY_GET_BN(z_dh, p);
++					OPENSSL_PKEY_GET_BN(z_dh, g);
++					OPENSSL_PKEY_GET_BN(z_dh, priv_key);
++					OPENSSL_PKEY_GET_BN(z_dh, pub_key);
++					add_assoc_zval(return_value, "dh", z_dh);
++				}
+ 			}
+ 
+ 			break;
+ #ifdef HAVE_EVP_PKEY_EC
+ 		case EVP_PKEY_EC:
+ 			ktype = OPENSSL_KEYTYPE_EC;
+-			if (pkey->pkey.ec != NULL) {
++			if (EVP_PKEY_get0_EC_KEY(pkey) != NULL) {
+ 				zval *ec;
+ 				const EC_GROUP *ec_group;
+ 				int nid;
+@@ -4546,13 +4842,13 @@ PHP_FUNCTION(openssl_private_encrypt)
+ 	cryptedlen = EVP_PKEY_size(pkey);
+ 	cryptedbuf = emalloc(cryptedlen + 1);
+ 
+-	switch (pkey->type) {
++	switch (EVP_PKEY_id(pkey)) {
+ 		case EVP_PKEY_RSA:
+ 		case EVP_PKEY_RSA2:
+ 			successful =  (RSA_private_encrypt(data_len, 
+ 						(unsigned char *)data, 
+ 						cryptedbuf, 
+-						pkey->pkey.rsa, 
++						EVP_PKEY_get0_RSA(pkey), 
+ 						padding) == cryptedlen);
+ 			break;
+ 		default:
+@@ -4604,13 +4900,13 @@ PHP_FUNCTION(openssl_private_decrypt)
+ 	cryptedlen = EVP_PKEY_size(pkey);
+ 	crypttemp = emalloc(cryptedlen + 1);
+ 
+-	switch (pkey->type) {
++	switch (EVP_PKEY_id(pkey)) {
+ 		case EVP_PKEY_RSA:
+ 		case EVP_PKEY_RSA2:
+ 			cryptedlen = RSA_private_decrypt(data_len, 
+ 					(unsigned char *)data, 
+ 					crypttemp, 
+-					pkey->pkey.rsa, 
++					EVP_PKEY_get0_RSA(pkey), 
+ 					padding);
+ 			if (cryptedlen != -1) {
+ 				cryptedbuf = emalloc(cryptedlen + 1);
+@@ -4669,13 +4965,13 @@ PHP_FUNCTION(openssl_public_encrypt)
+ 	cryptedlen = EVP_PKEY_size(pkey);
+ 	cryptedbuf = emalloc(cryptedlen + 1);
+ 
+-	switch (pkey->type) {
++	switch (EVP_PKEY_id(pkey)) {
+ 		case EVP_PKEY_RSA:
+ 		case EVP_PKEY_RSA2:
+ 			successful = (RSA_public_encrypt(data_len, 
+ 						(unsigned char *)data, 
+ 						cryptedbuf, 
+-						pkey->pkey.rsa, 
++						EVP_PKEY_get0_RSA(pkey), 
+ 						padding) == cryptedlen);
+ 			break;
+ 		default:
+@@ -4728,13 +5024,13 @@ PHP_FUNCTION(openssl_public_decrypt)
+ 	cryptedlen = EVP_PKEY_size(pkey);
+ 	crypttemp = emalloc(cryptedlen + 1);
+ 
+-	switch (pkey->type) {
++	switch (EVP_PKEY_id(pkey)) {
+ 		case EVP_PKEY_RSA:
+ 		case EVP_PKEY_RSA2:
+ 			cryptedlen = RSA_public_decrypt(data_len, 
+ 					(unsigned char *)data, 
+ 					crypttemp, 
+-					pkey->pkey.rsa, 
++					EVP_PKEY_get0_RSA(pkey), 
+ 					padding);
+ 			if (cryptedlen != -1) {
+ 				cryptedbuf = emalloc(cryptedlen + 1);
+@@ -4798,7 +5094,7 @@ PHP_FUNCTION(openssl_sign)
+ 	long keyresource = -1;
+ 	char * data;
+ 	int data_len;
+-	EVP_MD_CTX md_ctx;
++	EVP_MD_CTX *md_ctx;
+ 	zval *method = NULL;
+ 	long signature_algo = OPENSSL_ALGO_SHA1;
+ 	const EVP_MD *mdtype;
+@@ -4831,9 +5127,10 @@ PHP_FUNCTION(openssl_sign)
+ 	siglen = EVP_PKEY_size(pkey);
+ 	sigbuf = emalloc(siglen + 1);
+ 
+-	EVP_SignInit(&md_ctx, mdtype);
+-	EVP_SignUpdate(&md_ctx, data, data_len);
+-	if (EVP_SignFinal (&md_ctx, sigbuf,(unsigned int *)&siglen, pkey)) {
++	md_ctx = EVP_MD_CTX_create();
++	EVP_SignInit(md_ctx, mdtype);
++	EVP_SignUpdate(md_ctx, data, data_len);
++	if (EVP_SignFinal (md_ctx, sigbuf,(unsigned int *)&siglen, pkey)) {
+ 		zval_dtor(signature);
+ 		sigbuf[siglen] = '\0';
+ 		ZVAL_STRINGL(signature, (char *)sigbuf, siglen, 0);
+@@ -4842,7 +5139,7 @@ PHP_FUNCTION(openssl_sign)
+ 		efree(sigbuf);
+ 		RETVAL_FALSE;
+ 	}
+-	EVP_MD_CTX_cleanup(&md_ctx);
++	EVP_MD_CTX_destroy(md_ctx);
+ 	if (keyresource == -1) {
+ 		EVP_PKEY_free(pkey);
+ 	}
+@@ -4856,7 +5153,7 @@ PHP_FUNCTION(openssl_verify)
+ 	zval **key;
+ 	EVP_PKEY *pkey;
+ 	int err;
+-	EVP_MD_CTX     md_ctx;
++	EVP_MD_CTX     *md_ctx;
+ 	const EVP_MD *mdtype;
+ 	long keyresource = -1;
+ 	char * data;	int data_len;
+@@ -4890,10 +5187,11 @@ PHP_FUNCTION(openssl_verify)
+ 		RETURN_FALSE;
+ 	}
+ 
+-	EVP_VerifyInit   (&md_ctx, mdtype);
+-	EVP_VerifyUpdate (&md_ctx, data, data_len);
+-	err = EVP_VerifyFinal (&md_ctx, (unsigned char *)signature, signature_len, pkey);
+-	EVP_MD_CTX_cleanup(&md_ctx);
++	md_ctx = EVP_MD_CTX_create();
++	EVP_VerifyInit   (md_ctx, mdtype);
++	EVP_VerifyUpdate (md_ctx, data, data_len);
++	err = EVP_VerifyFinal (md_ctx, (unsigned char *)signature, signature_len, pkey);
++	EVP_MD_CTX_destroy(md_ctx);
+ 
+ 	if (keyresource == -1) {
+ 		EVP_PKEY_free(pkey);
+@@ -4917,7 +5215,7 @@ PHP_FUNCTION(openssl_seal)
+ 	char *method =NULL;
+ 	int method_len = 0;
+ 	const EVP_CIPHER *cipher;
+-	EVP_CIPHER_CTX ctx;
++	EVP_CIPHER_CTX *ctx;
+ 
+ 	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "szza/|s", &data, &data_len, &sealdata, &ekeys, &pubkeys, &method, &method_len) == FAILURE) {
+ 		return;
+@@ -4950,6 +5248,7 @@ PHP_FUNCTION(openssl_seal)
+ 	memset(eks, 0, sizeof(*eks) * nkeys);
+ 	key_resources = safe_emalloc(nkeys, sizeof(long), 0);
+ 	memset(key_resources, 0, sizeof(*key_resources) * nkeys);
++	memset(pkeys, 0, sizeof(*pkeys) * nkeys);
+ 
+ 	/* get the public keys we are using to seal this data */
+ 	zend_hash_internal_pointer_reset_ex(pubkeysht, &pos);
+@@ -4967,27 +5266,28 @@ PHP_FUNCTION(openssl_seal)
+ 		i++;
+ 	}
+ 
+-	if (!EVP_EncryptInit(&ctx,cipher,NULL,NULL)) {
++	ctx = EVP_CIPHER_CTX_new();
++	if (ctx == NULL || !EVP_EncryptInit(ctx,cipher,NULL,NULL)) {
+ 		RETVAL_FALSE;
+-		EVP_CIPHER_CTX_cleanup(&ctx);
++		EVP_CIPHER_CTX_free(ctx);
+ 		goto clean_exit;
+ 	}
+ 
+ #if 0
+ 	/* Need this if allow ciphers that require initialization vector */
+-	ivlen = EVP_CIPHER_CTX_iv_length(&ctx);
++	ivlen = EVP_CIPHER_CTX_iv_length(ctx);
+ 	iv = ivlen ? emalloc(ivlen + 1) : NULL;
+ #endif
+ 	/* allocate one byte extra to make room for \0 */
+-	buf = emalloc(data_len + EVP_CIPHER_CTX_block_size(&ctx));
+-	EVP_CIPHER_CTX_cleanup(&ctx);
++	buf = emalloc(data_len + EVP_CIPHER_CTX_block_size(ctx));
++	EVP_CIPHER_CTX_cleanup(ctx);
+ 
+-	if (EVP_SealInit(&ctx, cipher, eks, eksl, NULL, pkeys, nkeys) <= 0 ||
+-			!EVP_SealUpdate(&ctx, buf, &len1, (unsigned char *)data, data_len) ||
+-			!EVP_SealFinal(&ctx, buf + len1, &len2)) {
++	if (EVP_SealInit(ctx, cipher, eks, eksl, NULL, pkeys, nkeys) <= 0 ||
++			!EVP_SealUpdate(ctx, buf, &len1, (unsigned char *)data, data_len) ||
++			!EVP_SealFinal(ctx, buf + len1, &len2)) {
+ 		RETVAL_FALSE;
+ 		efree(buf);
+-		EVP_CIPHER_CTX_cleanup(&ctx);
++		EVP_CIPHER_CTX_free(ctx);
+ 		goto clean_exit;
+ 	}
+ 
+@@ -5018,7 +5318,7 @@ PHP_FUNCTION(openssl_seal)
+ 		efree(buf);
+ 	}
+ 	RETVAL_LONG(len1 + len2);
+-	EVP_CIPHER_CTX_cleanup(&ctx);
++	EVP_CIPHER_CTX_free(ctx);
+ 
+ clean_exit:
+ 	for (i=0; i<nkeys; i++) {
+@@ -5045,7 +5345,7 @@ PHP_FUNCTION(openssl_open)
+ 	int len1, len2;
+ 	unsigned char *buf;
+ 	long keyresource = -1;
+-	EVP_CIPHER_CTX ctx;
++	EVP_CIPHER_CTX *ctx;
+ 	char * data;	int data_len;
+ 	char * ekey;	int ekey_len;
+ 	char *method =NULL;
+@@ -5074,8 +5374,9 @@ PHP_FUNCTION(openssl_open)
+ 	
+ 	buf = emalloc(data_len + 1);
+ 
+-	if (EVP_OpenInit(&ctx, cipher, (unsigned char *)ekey, ekey_len, NULL, pkey) && EVP_OpenUpdate(&ctx, buf, &len1, (unsigned char *)data, data_len)) {
+-		if (!EVP_OpenFinal(&ctx, buf + len1, &len2) || (len1 + len2 == 0)) {
++	ctx = EVP_CIPHER_CTX_new();
++	if (EVP_OpenInit(ctx, cipher, (unsigned char *)ekey, ekey_len, NULL, pkey) && EVP_OpenUpdate(ctx, buf, &len1, (unsigned char *)data, data_len)) {
++		if (!EVP_OpenFinal(ctx, buf + len1, &len2) || (len1 + len2 == 0)) {
+ 			efree(buf);
+ 			RETVAL_FALSE;
+ 		} else {
+@@ -5091,7 +5392,7 @@ PHP_FUNCTION(openssl_open)
+ 	if (keyresource == -1) {
+ 		EVP_PKEY_free(pkey);
+ 	}
+-	EVP_CIPHER_CTX_cleanup(&ctx);
++	EVP_CIPHER_CTX_free(ctx);
+ }
+ /* }}} */
+ 
+@@ -5151,7 +5452,7 @@ PHP_FUNCTION(openssl_digest)
+ 	char *data, *method;
+ 	int data_len, method_len;
+ 	const EVP_MD *mdtype;
+-	EVP_MD_CTX md_ctx;
++	EVP_MD_CTX *md_ctx;
+ 	int siglen;
+ 	unsigned char *sigbuf;
+ 
+@@ -5167,9 +5468,10 @@ PHP_FUNCTION(openssl_digest)
+ 	siglen = EVP_MD_size(mdtype);
+ 	sigbuf = emalloc(siglen + 1);
+ 
+-	EVP_DigestInit(&md_ctx, mdtype);
+-	EVP_DigestUpdate(&md_ctx, (unsigned char *)data, data_len);
+-	if (EVP_DigestFinal (&md_ctx, (unsigned char *)sigbuf, (unsigned int *)&siglen)) {
++	md_ctx = EVP_MD_CTX_create();
++	EVP_DigestInit(md_ctx, mdtype);
++	EVP_DigestUpdate(md_ctx, (unsigned char *)data, data_len);
++	if (EVP_DigestFinal (md_ctx, (unsigned char *)sigbuf, (unsigned int *)&siglen)) {
+ 		if (raw_output) {
+ 			sigbuf[siglen] = '\0';
+ 			RETVAL_STRINGL((char *)sigbuf, siglen, 0);
+@@ -5185,6 +5487,8 @@ PHP_FUNCTION(openssl_digest)
+ 		efree(sigbuf);
+ 		RETVAL_FALSE;
+ 	}
++
++	EVP_MD_CTX_destroy(md_ctx);
+ }
+ /* }}} */
+ 
+@@ -5230,7 +5534,7 @@ PHP_FUNCTION(openssl_encrypt)
+ 	char *data, *method, *password, *iv = "";
+ 	int data_len, method_len, password_len, iv_len = 0, max_iv_len;
+ 	const EVP_CIPHER *cipher_type;
+-	EVP_CIPHER_CTX cipher_ctx;
++	EVP_CIPHER_CTX *cipher_ctx;
+ 	int i=0, outlen, keylen;
+ 	unsigned char *outbuf, *key;
+ 	zend_bool free_iv;
+@@ -5262,19 +5566,24 @@ PHP_FUNCTION(openssl_encrypt)
+ 	outlen = data_len + EVP_CIPHER_block_size(cipher_type);
+ 	outbuf = safe_emalloc(outlen, 1, 1);
+ 
+-	EVP_EncryptInit(&cipher_ctx, cipher_type, NULL, NULL);
++	cipher_ctx = EVP_CIPHER_CTX_new();
++	if (!cipher_ctx) {
++		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to create cipher context");
++		RETURN_FALSE;
++	}
++	EVP_EncryptInit(cipher_ctx, cipher_type, NULL, NULL);
+ 	if (password_len > keylen) {
+-		EVP_CIPHER_CTX_set_key_length(&cipher_ctx, password_len);
++		EVP_CIPHER_CTX_set_key_length(cipher_ctx, password_len);
+ 	}
+-	EVP_EncryptInit_ex(&cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
++	EVP_EncryptInit_ex(cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
+ 	if (options & OPENSSL_ZERO_PADDING) {
+-		EVP_CIPHER_CTX_set_padding(&cipher_ctx, 0);
++		EVP_CIPHER_CTX_set_padding(cipher_ctx, 0);
+ 	}
+ 	if (data_len > 0) {
+-		EVP_EncryptUpdate(&cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
++		EVP_EncryptUpdate(cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
+ 	}
+ 	outlen = i;
+-	if (EVP_EncryptFinal(&cipher_ctx, (unsigned char *)outbuf + i, &i)) {
++	if (EVP_EncryptFinal(cipher_ctx, (unsigned char *)outbuf + i, &i)) {
+ 		outlen += i;
+ 		if (options & OPENSSL_RAW_DATA) {
+ 			outbuf[outlen] = '\0';
+@@ -5301,7 +5610,8 @@ PHP_FUNCTION(openssl_encrypt)
+ 	if (free_iv) {
+ 		efree(iv);
+ 	}
+-	EVP_CIPHER_CTX_cleanup(&cipher_ctx);
++	EVP_CIPHER_CTX_cleanup(cipher_ctx);
++	EVP_CIPHER_CTX_free(cipher_ctx);
+ }
+ /* }}} */
+ 
+@@ -5313,7 +5623,7 @@ PHP_FUNCTION(openssl_decrypt)
+ 	char *data, *method, *password, *iv = "";
+ 	int data_len, method_len, password_len, iv_len = 0;
+ 	const EVP_CIPHER *cipher_type;
+-	EVP_CIPHER_CTX cipher_ctx;
++	EVP_CIPHER_CTX *cipher_ctx;
+ 	int i, outlen, keylen;
+ 	unsigned char *outbuf, *key;
+ 	int base64_str_len;
+@@ -5359,17 +5669,23 @@ PHP_FUNCTION(openssl_decrypt)
+ 	outlen = data_len + EVP_CIPHER_block_size(cipher_type);
+ 	outbuf = emalloc(outlen + 1);
+ 
+-	EVP_DecryptInit(&cipher_ctx, cipher_type, NULL, NULL);
++	cipher_ctx = EVP_CIPHER_CTX_new();
++	if (!cipher_ctx) {
++		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to create cipher context");
++		RETURN_FALSE;
++	}
++
++	EVP_DecryptInit(cipher_ctx, cipher_type, NULL, NULL);
+ 	if (password_len > keylen) {
+-		EVP_CIPHER_CTX_set_key_length(&cipher_ctx, password_len);
++		EVP_CIPHER_CTX_set_key_length(cipher_ctx, password_len);
+ 	}
+-	EVP_DecryptInit_ex(&cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
++	EVP_DecryptInit_ex(cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
+ 	if (options & OPENSSL_ZERO_PADDING) {
+-		EVP_CIPHER_CTX_set_padding(&cipher_ctx, 0);
++		EVP_CIPHER_CTX_set_padding(cipher_ctx, 0);
+ 	}
+-	EVP_DecryptUpdate(&cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
++	EVP_DecryptUpdate(cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
+ 	outlen = i;
+-	if (EVP_DecryptFinal(&cipher_ctx, (unsigned char *)outbuf + i, &i)) {
++	if (EVP_DecryptFinal(cipher_ctx, (unsigned char *)outbuf + i, &i)) {
+ 		outlen += i;
+ 		outbuf[outlen] = '\0';
+ 		RETVAL_STRINGL((char *)outbuf, outlen, 0);
+@@ -5386,7 +5702,8 @@ PHP_FUNCTION(openssl_decrypt)
+ 	if (base64_str) {
+ 		efree(base64_str);
+ 	}
+- 	EVP_CIPHER_CTX_cleanup(&cipher_ctx);
++ 	EVP_CIPHER_CTX_cleanup(cipher_ctx);
++ 	EVP_CIPHER_CTX_free(cipher_ctx);
+ }
+ /* }}} */
+ 
+@@ -5424,6 +5741,7 @@ PHP_FUNCTION(openssl_dh_compute_key)
+ 	zval *key;
+ 	char *pub_str;
+ 	int pub_len;
++	DH *dh;
+ 	EVP_PKEY *pkey;
+ 	BIGNUM *pub;
+ 	char *data;
+@@ -5433,14 +5751,21 @@ PHP_FUNCTION(openssl_dh_compute_key)
+ 		return;
+ 	}
+ 	ZEND_FETCH_RESOURCE(pkey, EVP_PKEY *, &key, -1, "OpenSSL key", le_key);
+-	if (!pkey || EVP_PKEY_type(pkey->type) != EVP_PKEY_DH || !pkey->pkey.dh) {
++	if (pkey == NULL) {
++		RETURN_FALSE;
++	}
++	if (EVP_PKEY_base_id(pkey) != EVP_PKEY_DH) {
++		RETURN_FALSE;
++	}
++	dh = EVP_PKEY_get0_DH(pkey);
++	if (dh == NULL) {
+ 		RETURN_FALSE;
+ 	}
+ 
+ 	pub = BN_bin2bn((unsigned char*)pub_str, pub_len, NULL);
+ 
+-	data = emalloc(DH_size(pkey->pkey.dh) + 1);
+-	len = DH_compute_key((unsigned char*)data, pub, pkey->pkey.dh);
++	data = emalloc(DH_size(dh) + 1);
++	len = DH_compute_key((unsigned char*)data, pub, dh);
+ 
+ 	if (len >= 0) {
+ 		data[len] = 0;
+diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
+index d549033..c2d477c 100644
+--- a/ext/openssl/xp_ssl.c
++++ b/ext/openssl/xp_ssl.c
+@@ -935,7 +935,7 @@ static int set_local_cert(SSL_CTX *ctx, php_stream *stream TSRMLS_DC) /* {{{ */
+ static const SSL_METHOD *php_select_crypto_method(long method_value, int is_client TSRMLS_DC) /* {{{ */
+ {
+ 	if (method_value == STREAM_CRYPTO_METHOD_SSLv2) {
+-#ifndef OPENSSL_NO_SSL2
++#if !defined(OPENSSL_NO_SSL2) && OPENSSL_VERSION_NUMBER < 0x10100000L
+ 		return is_client ? SSLv2_client_method() : SSLv2_server_method();
+ #else
+ 		php_error_docref(NULL TSRMLS_CC, E_WARNING,
+@@ -1588,12 +1588,26 @@ int php_openssl_setup_crypto(php_stream *stream,
+ }
+ /* }}} */
+ 
++#define PHP_SSL_MAX_VERSION_LEN 32
++
++static char *php_ssl_cipher_get_version(const SSL_CIPHER *c, char *buffer, size_t max_len) /* {{{ */
++{
++	const char *version = SSL_CIPHER_get_version(c);
++	strncpy(buffer, version, max_len);
++	if (max_len <= strlen(version)) {
++		buffer[max_len - 1] = 0;
++	}
++	return buffer;
++}
++/* }}} */
++
+ static zval *capture_session_meta(SSL *ssl_handle) /* {{{ */
+ {
+ 	zval *meta_arr;
+ 	char *proto_str;
+ 	long proto = SSL_version(ssl_handle);
+ 	const SSL_CIPHER *cipher = SSL_get_current_cipher(ssl_handle);
++	char version_str[PHP_SSL_MAX_VERSION_LEN];
+ 
+ 	switch (proto) {
+ #if OPENSSL_VERSION_NUMBER >= 0x10001001L
+@@ -1611,7 +1625,7 @@ static zval *capture_session_meta(SSL *ssl_handle) /* {{{ */
+ 	add_assoc_string(meta_arr, "protocol", proto_str, 1);
+ 	add_assoc_string(meta_arr, "cipher_name", (char *) SSL_CIPHER_get_name(cipher), 1);
+ 	add_assoc_long(meta_arr, "cipher_bits", SSL_CIPHER_get_bits(cipher, NULL));
+-	add_assoc_string(meta_arr, "cipher_version", SSL_CIPHER_get_version(cipher), 1);
++	add_assoc_string(meta_arr, "cipher_version", php_ssl_cipher_get_version(cipher, version_str, PHP_SSL_MAX_VERSION_LEN), 1);
+ 
+ 	return meta_arr;
+ }
+diff --git a/ext/phar/util.c b/ext/phar/util.c
+index 828be8f..06e4e55 100644
+--- a/ext/phar/util.c
++++ b/ext/phar/util.c
+@@ -1531,7 +1531,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
+ 			BIO *in;
+ 			EVP_PKEY *key;
+ 			EVP_MD *mdtype = (EVP_MD *) EVP_sha1();
+-			EVP_MD_CTX md_ctx;
++			EVP_MD_CTX *md_ctx;
+ #else
+ 			int tempsig;
+ #endif
+@@ -1608,7 +1608,8 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
+ 				return FAILURE;
+ 			}
+ 
+-			EVP_VerifyInit(&md_ctx, mdtype);
++			md_ctx = EVP_MD_CTX_create();
++			EVP_VerifyInit(md_ctx, mdtype);
+ 			read_len = end_of_phar;
+ 
+ 			if (read_len > sizeof(buf)) {
+@@ -1620,7 +1621,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
+ 			php_stream_seek(fp, 0, SEEK_SET);
+ 
+ 			while (read_size && (len = php_stream_read(fp, (char*)buf, read_size)) > 0) {
+-				EVP_VerifyUpdate (&md_ctx, buf, len);
++				EVP_VerifyUpdate (md_ctx, buf, len);
+ 				read_len -= (off_t)len;
+ 
+ 				if (read_len < read_size) {
+@@ -1628,9 +1629,9 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
+ 				}
+ 			}
+ 
+-			if (EVP_VerifyFinal(&md_ctx, (unsigned char *)sig, sig_len, key) != 1) {
++			if (EVP_VerifyFinal(md_ctx, (unsigned char *)sig, sig_len, key) != 1) {
+ 				/* 1: signature verified, 0: signature does not match, -1: failed signature operation */
+-				EVP_MD_CTX_cleanup(&md_ctx);
++				EVP_MD_CTX_destroy(md_ctx);
+ 
+ 				if (error) {
+ 					spprintf(error, 0, "broken openssl signature");
+@@ -1639,7 +1640,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
+ 				return FAILURE;
+ 			}
+ 
+-			EVP_MD_CTX_cleanup(&md_ctx);
++			EVP_MD_CTX_destroy(md_ctx);
+ #endif
+ 
+ 			*signature_len = phar_hex_str((const char*)sig, sig_len, signature TSRMLS_CC);
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php/CVE-2017-9120.patch b/meta-openembedded/meta-oe/recipes-devtools/php/php/CVE-2017-9120.patch
new file mode 100644
index 0000000..728f25b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/php/php/CVE-2017-9120.patch
@@ -0,0 +1,21 @@
+php: patch for CVE-2017-9120
+
+Upstream-Status: Backport [https://bugs.php.net/bug.php?id=74544]
+
+CVE: CVE-2017-9120
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
+index 03a39d7..7b88731 100644
+--- a/ext/mysqli/mysqli_api.c
++++ b/ext/mysqli/mysqli_api.c
+@@ -1965,7 +1965,7 @@ PHP_FUNCTION(mysqli_real_escape_string) {
+ 	}
+ 	MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
+ 
+-	newstr = zend_string_alloc(2 * escapestr_len, 0);
++	newstr = zend_string_safe_alloc(2, escapestr_len, 0, 0);
+ 	ZSTR_LEN(newstr) = mysql_real_escape_string(mysql->mysql, ZSTR_VAL(newstr), escapestr, escapestr_len);
+ 	newstr = zend_string_truncate(newstr, ZSTR_LEN(newstr), 0);
+ 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.35.bb b/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.38.bb
similarity index 79%
rename from meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.35.bb
rename to meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.38.bb
index c17c0d6..d6f5145 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.35.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.38.bb
@@ -7,6 +7,7 @@
             file://0001-Add-lpthread-to-link.patch \
             file://acinclude-xml2-config.patch \
             file://0001-acinclude-use-pkgconfig-for-libxml2-config.patch \
+            file://0001-PHP-5.6-LibSSL-1.1-compatibility.patch \
             "
 
 SRC_URI_append_class-target = " \
@@ -15,8 +16,8 @@
                                 file://php5-0001-opcache-config.m4-enable-opcache.patch \
                                 "
 
-SRC_URI[md5sum] = "905ae5f586351f3ca29d044c9484d475"
-SRC_URI[sha256sum] = "ee78a7e9ca21d8ea394d037c55effff477a49dbae31c7753c547036f5bd73b92"
+SRC_URI[md5sum] = "5b98aa066567eca8e5738b8ef4a3545c"
+SRC_URI[sha256sum] = "d65b231bbdd63be4439ef5ced965cfd63e62983429dbd4dfcfb49981593ebc03"
 
 DEPENDS += "libmcrypt"
 EXTRA_OECONF += "--with-mcrypt=${STAGING_DIR_TARGET}${exec_prefix} \
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.7.bb b/meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.10.bb
similarity index 76%
rename from meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.7.bb
rename to meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.10.bb
index a256cd7..8dc64bb 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.7.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.10.bb
@@ -5,6 +5,7 @@
 SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
             file://0001-acinclude.m4-skip-binconfig-check-for-libxml.patch \
             file://0001-fix-error-caused-by-a-new-variable-is-declared-after.patch \
+            file://CVE-2017-9120.patch \
            "
 SRC_URI_append_class-target = " \
                                 file://pear-makefile.patch \
@@ -12,12 +13,13 @@
                                 file://0001-opcache-config.m4-enable-opcache.patch \
                                 "
 
-SRC_URI[md5sum] = "4b5698c8c6c2b9cbff3a5706da67bb0f"
-SRC_URI[sha256sum] = "cc81675a96af4dd18d8ffc02f26a36c622abadf86af7ecfea7bcde8d3c96d5a3"
+SRC_URI[md5sum] = "0ce8ff615bfb9de7a89bab8d742c11c0"
+SRC_URI[sha256sum] = "01b6129a0921a1636b07da9bc598a876669e45a462cef4b5844fc26862dbda9d"
 
 PACKAGECONFIG[mysql] = "--with-mysqli=${STAGING_BINDIR_CROSS}/mysql_config \
                         --with-pdo-mysql=${STAGING_BINDIR_CROSS}/mysql_config \
                         ,--without-mysqli --without-pdo-mysql \
                         ,mysql5"
+PACKAGECONFIG[valgrind] = "--with-valgrind=${STAGING_DIR_TARGET}/usr,--with-valgrind=no,valgrind"
 
 FILES_${PN}-fpm += "${sysconfdir}/php-fpm.d/www.conf.default"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.0.bb b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.1.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.1.bb
index fe1e6e5..7ef0300 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.1.bb
@@ -8,24 +8,28 @@
 HOMEPAGE = "https://github.com/protobuf-c/protobuf-c"
 SECTION = "console/tools"
 LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cb901168715f4782a2b06c3ddaefa558"
 
 DEPENDS = "protobuf-native protobuf"
 
-PACKAGE_BEFORE_PN = "${PN}-compiler"
-RDEPENDS_${PN}-compiler = "protobuf-compiler"
-RDEPENDS_${PN}-dev += "${PN}-compiler"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=cb901168715f4782a2b06c3ddaefa558"
-
 PV .= "+git${SRCPV}"
-SRCREV = "dac1a65feac4ad72f612aab99f487056fbcf5c1a"
+SRCREV = "269771b4b45d3aba04e59569f53600003db8d9ff"
 
 SRC_URI = "git://github.com/protobuf-c/protobuf-c.git"
 
 S = "${WORKDIR}/git"
 
+#make sure c++11 is used
+CXXFLAGS += "-std=c++11"
+BUILD_CXXFLAGS += "-std=c++11"
+
 inherit autotools pkgconfig
 
+PACKAGE_BEFORE_PN = "${PN}-compiler"
+
 FILES_${PN}-compiler = "${bindir}"
 
+RDEPENDS_${PN}-compiler = "protobuf-compiler"
+RDEPENDS_${PN}-dev += "${PN}-compiler"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-protobuf-fix-configure-error.patch b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-protobuf-fix-configure-error.patch
new file mode 100644
index 0000000..a2f7a4b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-protobuf-fix-configure-error.patch
@@ -0,0 +1,33 @@
+From 52959e8e01e39139d18f752e97283e45b4b7a426 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 18 Jul 2018 17:52:34 +0800
+Subject: [PATCH] protobuf: fix configure error
+
+fix below error:
+gnu-configize: 'configure.ac' or 'configure.in' is required
+
+third_party/googletest is git submodule of protobuf. Above error
+caused by missing submodule googletest.
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index aec10cf..7fbe57d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -214,7 +214,6 @@ AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
+ #   too.
+ export CFLAGS
+ export CXXFLAGS
+-AC_CONFIG_SUBDIRS([third_party/googletest])
+ 
+ AC_CONFIG_FILES([Makefile src/Makefile benchmarks/Makefile conformance/Makefile protobuf.pc protobuf-lite.pc])
+ AC_OUTPUT
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.5.1.bb b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.6.1.bb
similarity index 79%
rename from meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.5.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.6.1.bb
index 073dfae..cf72d9c 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.5.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.6.1.bb
@@ -5,34 +5,29 @@
 HOMEPAGE = "https://github.com/google/protobuf"
 SECTION = "console/tools"
 LICENSE = "BSD-3-Clause"
-
-PACKAGE_BEFORE_PN = "${PN}-compiler ${PN}-lite"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=37b5762e07f0af8c74ce80a8bda4266b"
 
 DEPENDS = "zlib"
-DEPENDS_append_class-target  = " protobuf-native"
-RDEPENDS_${PN}-compiler = "${PN}"
-RDEPENDS_${PN}-dev += "${PN}-compiler"
-RDEPENDS_${PN}-ptest = "bash ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python-protobuf', '', d)}"
+DEPENDS_append_class-target = " protobuf-native"
 
-LIC_FILES_CHKSUM = "file://LICENSE;md5=35953c752efc9299b184f91bef540095"
+PV .= "+git${SRCPV}"
 
-SRCREV = "106ffc04be1abf3ff3399f54ccf149815b287dd9"
+SRCREV = "48cb18e5c419ddd23d9badcfe4e9df7bde1979b2"
 
-PV = "3.5.1+git${SRCPV}"
+SRC_URI = "git://github.com/google/protobuf.git;branch=3.6.x \
+           file://run-ptest \
+           file://0001-protobuf-fix-configure-error.patch \
+"
+S = "${WORKDIR}/git"
 
-SRC_URI = "git://github.com/google/protobuf.git;branch=3.5.x \
-	   file://run-ptest \
-          "
+inherit autotools-brokensep pkgconfig ptest
 
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[python] = ",,"
 
-EXTRA_OECONF += " --with-protoc=echo"
+EXTRA_OECONF += "--with-protoc=echo"
 
-inherit autotools-brokensep pkgconfig ptest
-
-S = "${WORKDIR}/git"
-TEST_SRC_DIR="examples"
+TEST_SRC_DIR = "examples"
 LANG_SUPPORT = "cpp ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python', '', d)}"
 
 do_compile_ptest() {
@@ -79,9 +74,20 @@
 	cd "$olddir"
 }
 
+PACKAGE_BEFORE_PN = "${PN}-compiler ${PN}-lite"
+
 FILES_${PN}-compiler = "${bindir} ${libdir}/libprotoc${SOLIBS}"
-FILES_${PN}-lite = "${bindir} ${libdir}/libprotobuf-lite${SOLIBS}"
+FILES_${PN}-lite = "${libdir}/libprotobuf-lite${SOLIBS}"
+
+RDEPENDS_${PN}-compiler = "${PN}"
+RDEPENDS_${PN}-dev += "${PN}-compiler"
+RDEPENDS_${PN}-ptest = "bash ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python-protobuf', '', d)}"
 
 MIPS_INSTRUCTION_SET = "mips"
 
 BBCLASSEXTEND = "native nativesdk"
+
+LDFLAGS_append_arm = " -latomic"
+LDFLAGS_append_mips = " -latomic"
+LDFLAGS_append_powerpc = " -latomic"
+LDFLAGS_append_mipsel = " -latomic"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.bb b/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.bb
index 56dd33d..eb84f74 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.bb
@@ -2,8 +2,6 @@
 
 inherit setuptools
 
-DISTUTILS_INSTALL_ARGS += "--install-lib=${libdir}/${PYTHON_DIR}/site-packages"
-
 RDEPENDS_${PN} = "\
     python-distutils \
 "
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.0.bb b/meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.3.bb
similarity index 86%
rename from meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.3.bb
index ab65ba1..c444fbf 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.3.bb
@@ -17,8 +17,8 @@
     file://0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch \
 "
 
-SRC_URI[md5sum] = "b29d69edb63ae1f555afeb19f90b9996"
-SRC_URI[sha256sum] = "42b47b261b45aedfc77e02e3c90a01cd74d6f86c3273c1860a054d531d606e5a"
+SRC_URI[md5sum] = "3bac63c86bb963aa401f97859464aa90"
+SRC_URI[sha256sum] = "3dd3e21015d06e00482ea665fc1733b77e754a6ab656a5db5d7f7bfaf31ad0b0"
 
 S = "${WORKDIR}/${SRCNAME}-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra.bb b/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra.bb
index af242b8..5836b09 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra.bb
@@ -4,8 +4,6 @@
 
 S = "${WORKDIR}/python-distutils-extra-${PV}"
 
-DISTUTILS_INSTALL_ARGS += "--install-lib=${libdir}/${PYTHON_DIR}/site-packages"
-
 RDEPENDS_${PN} = "\
     python3-setuptools \
 "
diff --git a/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb b/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
index 8ab35d2..c90eab0 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
@@ -4,11 +4,9 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://license.txt;md5=ba04aa8f65de1396a7e59d1d746c2125"
 
-SRC_URI = "git://github.com/miloyip/rapidjson.git;nobranch=1 \
-           file://remove-march-native-from-CMAKE_CXX_FLAGS.patch \
-"
+SRC_URI = "git://github.com/miloyip/rapidjson.git;nobranch=1"
 
-SRCREV = "e5635fb27feab7f6e8d7b916aa20ad799045a641"
+SRCREV = "6a905f9311f82d306da77bd963ec5aa5da07da9c"
 
 PV = "1.1.0+git${SRCPV}"
 
@@ -20,7 +18,6 @@
 
 # RapidJSON is a header-only C++ library, so the main package will be empty.
 
-FILES_${PN}-dev += "${libdir}/cmake"
-RDEPENDS_${PN}-dev = ""
+ALLOW_EMPTY_${PN} = "1"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/sip/sip.inc b/meta-openembedded/meta-oe/recipes-devtools/sip/sip.inc
new file mode 100644
index 0000000..d079545
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/sip/sip.inc
@@ -0,0 +1,36 @@
+SUMMARY = "SIP is a C++/Python Wrapper Generator"
+HOMEPAGE = "http://www.riverbankcomputing.co.uk/sip"
+SECTION = "devel"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE-GPL2;md5=e91355d8a6f8bd8f7c699d62863c7303"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/pyqt/sip/sip-${PV}/sip-${PV}.tar.gz \
+          "
+SRC_URI[md5sum] = "9124cb8978742685747a5415179a9890"                           
+SRC_URI[sha256sum] = "e353a7056599bf5fbd5d3ff9842a6ab2ea3cf4e0304a0f925ec5862907c0d15e"
+
+S = "${WORKDIR}/sip-${PV}"
+
+BBCLASSEXTEND = "native"
+
+do_configure_prepend_class-target() {
+    echo "py_platform = linux" > sip.cfg
+    echo "py_inc_dir = %(sysroot)/${includedir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> sip.cfg
+    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
+    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
+    echo "sip_module_dir = ${D}/${libdir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}/site-packages" >> sip.cfg
+    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
+    ${PYTHON} configure.py --configuration sip.cfg --sip-module PyQt5.sip --sysroot ${STAGING_DIR_HOST} CC="${CC}" CXX="${CXX}" LINK="${CXX}" STRIP="" LINK_SHLIB="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LFLAGS="${LDFLAGS}"
+}
+do_configure_prepend_class-native() {
+    echo "py_platform = linux" > sip.cfg
+    echo "py_inc_dir = ${includedir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> sip.cfg
+    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
+    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
+    echo "sip_module_dir = ${D}/${libdir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}/site-packages" >> sip.cfg
+    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
+    ${PYTHON} configure.py --configuration sip.cfg --sip-module PyQt5.sip --sysroot=${STAGING_DIR_NATIVE}
+}
+do_install() {
+    oe_runmake install
+}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb b/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb
new file mode 100644
index 0000000..dc15bc2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb
@@ -0,0 +1,11 @@
+require sip.inc
+
+DEPENDS = "python3"
+
+inherit python3-dir python3native
+
+PACKAGES += "python3-sip3"
+
+FILES_python3-sip3 = "${libdir}/${PYTHON_DIR}${PYTHON_ABI}/site-packages/"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}${PYTHON_ABI}/site-packages/.debug"
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.13.bb b/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
new file mode 100644
index 0000000..3da15b8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
@@ -0,0 +1,11 @@
+require sip.inc
+
+DEPENDS = "python"
+
+inherit python-dir pythonnative
+
+PACKAGES += "python-sip"
+
+FILES_python-sip = "${libdir}/${PYTHON_DIR}/site-packages/"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.8.bb b/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.8.bb
deleted file mode 100644
index ea944b3..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.8.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "SIP is a C++/Python Wrapper Generator"
-HOMEPAGE = "http://www.riverbankcomputing.co.uk/sip"
-SECTION = "devel"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://LICENSE-GPL2;md5=e91355d8a6f8bd8f7c699d62863c7303"
-
-inherit python-dir
-
-DEPENDS = "python"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/pyqt/sip/sip-${PV}/sip-${PV}.tar.gz"
-SRC_URI[md5sum] = "0625fb20347d4ff1b5da551539be0727"
-SRC_URI[sha256sum] = "7eaf7a2ea7d4d38a56dd6d2506574464bddf7cf284c960801679942377c297bc"
-
-BBCLASSEXTEND = "native"
-
-PACKAGES += "python-sip"
-
-do_configure_prepend_class-target() {
-    echo "py_platform = linux" > sip.cfg
-    echo "py_inc_dir = %(sysroot)/${includedir}/python%(py_major).%(py_minor)" >> sip.cfg
-    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
-    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
-    echo "sip_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> sip.cfg
-    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
-    python configure.py --configuration sip.cfg --sysroot ${STAGING_DIR_HOST} CC="${CC}" CXX="${CXX}" LINK="${CXX}" STRIP="" LINK_SHLIB="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LFLAGS="${LDFLAGS}"
-}
-do_configure_prepend_class-native() {
-    echo "py_platform = linux" > sip.cfg
-    echo "py_inc_dir = ${includedir}/python%(py_major).%(py_minor)" >> sip.cfg
-    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
-    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
-    echo "sip_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> sip.cfg
-    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
-    python configure.py --configuration sip.cfg --sysroot ${STAGING_DIR_NATIVE}
-}
-do_install() {
-    oe_runmake install
-}
-
-FILES_python-sip = "${libdir}/${PYTHON_DIR}/site-packages/"
-FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.1.bb b/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.2.bb
similarity index 70%
rename from meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.2.bb
index 3eadbe4..46a9408 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/tclap/tclap_1.2.2.bb
@@ -1,9 +1,9 @@
 SUMMARY = "Templatized C++ Command Line Parser"
 HOMEPAGE = "http://tclap.sourceforge.net/"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c8ab0ff134bcc584d0e6b5b9f8732453"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0ca8b9c5c5445cfa7af7e78fd27e60ed"
 
-SRCREV = "3627d9402e529770df9b0edf2aa8c0e0d6c6bb41"
+SRCREV = "75f440bcac1276c847f5351e14216f6e91def44d"
 SRC_URI = "git://git.code.sf.net/p/tclap/code \
     file://Makefile.am-disable-docs.patch \
 "
diff --git a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.8.bb b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.8.bb
index 13dc4d7..4e38525 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.8.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.8.bb
@@ -42,22 +42,14 @@
 EXTRA_OECONF = "\
     --enable-threads \
     --with-x \
-    --with-tcl=${STAGING_BINDIR_CROSS} \
+    --with-tcl=${STAGING_BINDIR}/crossscripts \
     --libdir=${libdir} \
 "
-
+export TK_LIBRARY='${libdir}/tk${VER}'
 do_install_append() {
     ln -sf libtk${VER}.so ${D}${libdir}/libtk${VER}.so.0
     oe_libinstall -so libtk${VER} ${D}${libdir}
     ln -sf wish${VER} ${D}${bindir}/wish
-
-    # 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"
@@ -73,7 +65,7 @@
 RDEPENDS_${PN} += "tk-lib"
 RDEPENDS_${PN}_class-native = ""
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
 
 # Fix the path in sstate
 SSTATE_SCAN_FILES += "*Config.sh"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-dlfcn.h-for-RTLD_DEFAULT.patch b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-dlfcn.h-for-RTLD_DEFAULT.patch
new file mode 100644
index 0000000..fe7aac9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-dlfcn.h-for-RTLD_DEFAULT.patch
@@ -0,0 +1,39 @@
+From cdf7f2e394fcfb93a61f509ae3388f29540a6b35 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 8 Sep 2018 11:56:13 -0700
+Subject: [PATCH] include dlfcn.h for RTLD_DEFAULT
+
+Fixes
+plthook.c:128:41: error: use of undeclared identifier 'RTLD_DEFAULT'
+
+Upstream-Status: Submitted [https://github.com/namhyung/uftrace/pull/487]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libmcount/plthook.c | 1 +
+ utils/debug.c       | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/libmcount/plthook.c b/libmcount/plthook.c
+index d9d84f0..d54f5e8 100644
+--- a/libmcount/plthook.c
++++ b/libmcount/plthook.c
+@@ -6,6 +6,7 @@
+ #include <sys/mman.h>
+ #include <pthread.h>
+ #include <assert.h>
++#include <dlfcn.h>
+ 
+ /* This should be defined before #include "utils.h" */
+ #define PR_FMT     "mcount"
+diff --git a/utils/debug.c b/utils/debug.c
+index 2134b09..5460def 100644
+--- a/utils/debug.c
++++ b/utils/debug.c
+@@ -13,6 +13,7 @@
+ #include <assert.h>
+ #include <limits.h>
+ #include <inttypes.h>
++#include <dlfcn.h>
+ 
+ #include "utils/utils.h"
+ 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.3.bb b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.3.bb
new file mode 100644
index 0000000..ca38e6a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.3.bb
@@ -0,0 +1,44 @@
+SUMMARY = "Trace and analyze execution of a program written in C/C++"
+HOMEPAGE = "https://github.com/namhyung/uftrace"
+BUGTRACKER = "https://github.com/namhyung/uftrace/issues"
+SECTION = "devel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "elfutils"
+DEPENDS_append_libc-musl = " argp-standalone"
+
+inherit autotools
+
+# v0.8.3
+SRCREV = "8b723a6fae2ef30495cd6279774fba9c95cd9c88"
+SRC_URI = "git://github.com/namhyung/${BPN} \
+           file://0001-include-dlfcn.h-for-RTLD_DEFAULT.patch \
+           "
+S = "${WORKDIR}/git"
+
+LDFLAGS_append_libc-musl = " -largp"
+
+def set_target_arch(d):
+    import re
+    arch = d.getVar('TARGET_ARCH', True)
+    if re.match(r'i.86', arch, re.I):
+        return 'i386'
+    else:
+        return arch
+
+EXTRA_UFTRACE_OECONF = "ARCH=${@set_target_arch(d)} \
+                        with_elfutils=/use/libelf/from/sysroot"
+
+do_configure() {
+    ${S}/configure ${EXTRA_UFTRACE_OECONF}
+}
+
+FILES_SOLIBSDEV = ""
+FILES_${PN} += "${libdir}/*.so"
+
+COMPATIBLE_HOST = "(i.86|x86_64|aarch64|arm)"
+
+# uftrace supports armv6 and above
+COMPATIBLE_HOST_armv4 = 'null'
+COMPATIBLE_HOST_armv5 = 'null'
diff --git a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.bb b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.bb
deleted file mode 100644
index 82b1795..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Trace and analyze execution of a program written in C/C++"
-HOMEPAGE = "https://github.com/namhyung/uftrace"
-BUGTRACKER = "https://github.com/namhyung/uftrace/issues"
-SECTION = "devel"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = "elfutils"
-DEPENDS_append_libc-musl = " argp-standalone"
-
-inherit autotools
-
-SRCREV = "5af9ff9fa89c340617e52c8ed05798b352a7145c"
-SRC_URI = "git://github.com/namhyung/${BPN}"
-S = "${WORKDIR}/git"
-
-LDFLAGS_append_libc-musl = " -largp"
-EXTRA_OECONF = "ARCH=${TARGET_ARCH}"
-
-do_configure() {
-    ${S}/configure ${EXTRA_OECONF}
-}
-
-FILES_SOLIBSDEV = ""
-FILES_${PN} += "${libdir}/*.so"
-
-COMPATIBLE_HOST = "(x86_64|aarch64|arm)"
-
-# uftrace supports armv6 and above
-COMPATIBLE_HOST_armv4 = 'null'
-COMPATIBLE_HOST_armv5 = 'null'
diff --git a/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/0001-Support-OpenSSL-1.1.patch b/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/0001-Support-OpenSSL-1.1.patch
new file mode 100644
index 0000000..d5610bb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap/0001-Support-OpenSSL-1.1.patch
@@ -0,0 +1,71 @@
+From 4c684542816a08b95444b8e2515f24d084e6e3c3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 4 Sep 2018 22:05:17 -0700
+Subject: [PATCH] Support OpenSSL 1.1
+
+When building with OpenSSL 1.1 and newer, use the new built-in
+ hostname verification instead of code that doesn't compile due to
+ structs having been made opaque.
+Bug-Debian: https://bugs.debian.org/828589
+
+Upstream-Status: Unknown
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/osdep/unix/ssl_unix.c | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/src/osdep/unix/ssl_unix.c b/src/osdep/unix/ssl_unix.c
+index 3bfdff3..dec9467 100644
+--- a/src/osdep/unix/ssl_unix.c
++++ b/src/osdep/unix/ssl_unix.c
+@@ -227,8 +227,16 @@ static char *ssl_start_work (SSLSTREAM *stream,char *host,unsigned long flags)
+ 				/* disable certificate validation? */
+   if (flags & NET_NOVALIDATECERT)
+     SSL_CTX_set_verify (stream->context,SSL_VERIFY_NONE,NIL);
+-  else SSL_CTX_set_verify (stream->context,SSL_VERIFY_PEER,ssl_open_verify);
++  else {
++#if OPENSSL_VERSION_NUMBER >= 0x10100000      
++      X509_VERIFY_PARAM *param = SSL_CTX_get0_param(stream->context);
++      X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
++      X509_VERIFY_PARAM_set1_host(param, host, 0);
++#endif
++
++      SSL_CTX_set_verify (stream->context,SSL_VERIFY_PEER,ssl_open_verify);
+ 				/* set default paths to CAs... */
++  }
+   SSL_CTX_set_default_verify_paths (stream->context);
+ 				/* ...unless a non-standard path desired */
+   if (s = (char *) mail_parameters (NIL,GET_SSLCAPATH,NIL))
+@@ -266,6 +274,7 @@ static char *ssl_start_work (SSLSTREAM *stream,char *host,unsigned long flags)
+   if (SSL_write (stream->con,"",0) < 0)
+     return ssl_last_error ? ssl_last_error : "SSL negotiation failed";
+ 				/* need to validate host names? */
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+   if (!(flags & NET_NOVALIDATECERT) &&
+       (err = ssl_validate_cert (cert = SSL_get_peer_certificate (stream->con),
+ 				host))) {
+@@ -275,6 +284,7 @@ static char *ssl_start_work (SSLSTREAM *stream,char *host,unsigned long flags)
+     sprintf (tmp,"*%.128s: %.255s",err,cert ? cert->name : "???");
+     return ssl_last_error = cpystr (tmp);
+   }
++#endif
+   return NIL;
+ }
+ 
+@@ -313,6 +323,7 @@ static int ssl_open_verify (int ok,X509_STORE_CTX *ctx)
+  * Returns: NIL if validated, else string of error message
+  */
+ 
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+ static char *ssl_validate_cert (X509 *cert,char *host)
+ {
+   int i,n;
+@@ -342,6 +353,7 @@ static char *ssl_validate_cert (X509 *cert,char *host)
+   else ret = "Unable to locate common name in certificate";
+   return ret;
+ }
++#endif
+ 
+ /* Case-independent wildcard pattern match
+  * Accepts: base string
diff --git a/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap_2007f.bb b/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap_2007f.bb
index 91003f6..0000f05 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap_2007f.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/uw-imap/uw-imap_2007f.bb
@@ -4,12 +4,13 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a6a4ddbb7cd2999f6827ee143f6fcd97"
 
-DEPENDS = "openssl"
+DEPENDS = "openssl virtual/crypt"
 
 SRC_URI = "https://fossies.org/linux/misc/old/imap-${PV}.tar.gz \
            file://quote_cctype.patch \
            file://imap-2007e-shared.patch \
            file://imap-2007f-format-security.patch \
+           file://0001-Support-OpenSSL-1.1.patch \
            "
 
 SRC_URI[md5sum] = "2126fd125ea26b73b20f01fcd5940369"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/xerces-c/xerces-c_3.1.4.bb b/meta-openembedded/meta-oe/recipes-devtools/xerces-c/xerces-c_3.1.4.bb
index 64ac747..0951307 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/xerces-c/xerces-c_3.1.4.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/xerces-c/xerces-c_3.1.4.bb
@@ -9,7 +9,7 @@
 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 = "http://archive.apache.org/dist/xerces/c/3/sources/${BP}.tar.bz2"
 SRC_URI[md5sum] = "d04ae9d8b2dee2157c6db95fa908abfd"
 SRC_URI[sha256sum] = "9408f12c1628ecf80730bedbe8b2caad810edd01bb4c66f77b60c873e8cc6891"
 
@@ -24,24 +24,21 @@
 }
 
 PACKAGES = "libxerces-c \
-    libxerces-c-dbg \
     libxerces-c-dev \
     xerces-c-samples \
-    xerces-c-samples-dbg \
     libxerces-c-staticdev \
+    ${PN}-dbg \
 "
 
+RPROVIDES_${PN}-dbg += "libxerces-c-dbg xerces-c-samples-dbg"
+
 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/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm_git.bb b/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm_git.bb
new file mode 100644
index 0000000..b20d4c0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "x86 (SSE) assembler supporting NASM and GAS-syntaxes"
+LICENSE = "BSD"
+HOMEPAGE = "http://www.tortall.net/projects/yasm/"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a12d8903508fb6bfd49d8d82c6170dd9"
+
+DEPENDS += "flex-native bison-native xmlto-native"
+
+PV = "1.3.0+git${SRCPV}"
+# v1.3.0
+SRCREV = "ba463d3c26c0ece2e797b8d6381b161633b5971a"
+SRC_URI = "git://github.com/yasm/yasm.git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools gettext pythonnative
+
+CACHED_CONFIGUREVARS = "CCLD_FOR_BUILD='${CC_FOR_BUILD}'"
+
+BBCLASSEXTEND = "native"
+
+PARALLEL_MAKE = ""
diff --git a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/cross-compile.patch b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/cross-compile.patch
deleted file mode 100644
index 287391a..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/cross-compile.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-Remove rpath, its bad for cross compiling to encode
-build time rpaths
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: boinc-client_release-7.6-7.6.33/api/Makefile.am
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/api/Makefile.am
-+++ boinc-client_release-7.6-7.6.33/api/Makefile.am
-@@ -43,18 +43,18 @@ endif
- 
- lib_LTLIBRARIES = libboinc_api.la
- libboinc_api_la_SOURCES = $(api_files)
--libboinc_api_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -version-number $(LIBBOINC_VERSION)
-+libboinc_api_la_LDFLAGS = -version-number $(LIBBOINC_VERSION)
- 
- if BUILD_GRAPHICS_API
- lib_LTLIBRARIES += libboinc_graphics2.la
- libboinc_graphics2_la_SOURCES = $(graphics2_files)
- libboinc_graphics2_la_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_srcdir)/samples/image_libs
--libboinc_graphics2_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -version-number $(LIBBOINC_VERSION) -ljpeg
-+libboinc_graphics2_la_LDFLAGS = -version-number $(LIBBOINC_VERSION) -ljpeg
- endif #BUILD_GRAPHICS_API
- 
- lib_LTLIBRARIES += libboinc_opencl.la
- libboinc_opencl_la_SOURCES = $(opencl_files)
--libboinc_opencl_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -version-number $(LIBBOINC_VERSION)
-+libboinc_opencl_la_LDFLAGS = -version-number $(LIBBOINC_VERSION)
- 
- if INSTALL_HEADERS
- ## install only headers that are meant for exporting the API !!
-Index: boinc-client_release-7.6-7.6.33/lib/Makefile.am
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/lib/Makefile.am
-+++ boinc-client_release-7.6-7.6.33/lib/Makefile.am
-@@ -173,7 +173,7 @@ lib_LTLIBRARIES = libboinc.la
- libboinc_la_SOURCES = $(generic_sources) $(mac_sources) $(win_sources)
- libboinc_la_CFLAGS = $(AM_CFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS)
- libboinc_la_CXXFLAGS = $(AM_CXXFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS)
--libboinc_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -static -version-number $(LIBBOINC_VERSION)
-+libboinc_la_LDFLAGS = -static -version-number $(LIBBOINC_VERSION)
- libboinc_la_LIBADD =
- 
- if ENABLE_BOINCCRYPT
-@@ -181,7 +181,7 @@ lib_LTLIBRARIES += libboinc_crypt.la
- libboinc_crypt_la_SOURCES = crypt.cpp
- libboinc_crypt_la_CFLAGS = $(AM_CFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS) $(SSL_CFLAGS)
- libboinc_crypt_la_CXXFLAGS = $(AM_CXXFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS) $(SSL_CXXFLAGS)
--libboinc_crypt_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -static -version-number $(LIBBOINC_VERSION)
-+libboinc_crypt_la_LDFLAGS = -static -version-number $(LIBBOINC_VERSION)
- libboinc_crypt_la_LIBADD =
- endif
- 
-@@ -190,7 +190,7 @@ lib_LTLIBRARIES += libboinc_fcgi.la
- libboinc_fcgi_la_SOURCES = $(libfcgi_sources) $(mac_sources) $(win_sources)
- libboinc_fcgi_la_CFLAGS = -D_USING_FCGI_ $(AM_CFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS)
- libboinc_fcgi_la_CXXFLAGS = -D_USING_FCGI_ $(AM_CXXFLAGS) $(PICFLAGS) $(PTHREAD_CFLAGS)
--libboinc_fcgi_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -version-number $(LIBBOINC_VERSION)
-+libboinc_fcgi_la_LDFLAGS = -version-number $(LIBBOINC_VERSION)
- libboinc_fcgi_la_LIBADD =
- endif 
- # end of "if ENABLE_FCGI"
-Index: boinc-client_release-7.6-7.6.33/sched/Makefile.am
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/sched/Makefile.am
-+++ boinc-client_release-7.6-7.6.33/sched/Makefile.am
-@@ -26,7 +26,7 @@ lib_LTLIBRARIES = libsched.la
- libsched_la_SOURCES = $(libsched_sources)
- libsched_la_CFLAGS = $(AM_CPPFLAGS)
- libsched_la_CXXFLAGS = $(AM_CPPFLAGS)
--libsched_la_LDFLAGS= -L$(libdir) -rpath $(libdir) -version-number $(LIBBOINC_VERSION)
-+libsched_la_LDFLAGS= -version-number $(LIBBOINC_VERSION)
- libsched_la_LIBADD= $(SSL_LIBS)
- 
- ## install only headers that are meant for exporting the API !!
-@@ -48,7 +48,7 @@ lib_LTLIBRARIES += libsched_fcgi.la
- libsched_fcgi_la_SOURCES = $(libsched_sources)
- libsched_fcgi_la_CFLAGS = -D_USING_FCGI_ $(AM_CPPFLAGS)
- libsched_fcgi_la_CXXFLAGS = -D_USING_FCGI_ $(AM_CPPFLAGS)
--libsched_fcgi_la_LDFLAGS= -L$(libdir) -rpath $(libdir) -version-number $(LIBBOINC_VERSION)
-+libsched_fcgi_la_LDFLAGS= -version-number $(LIBBOINC_VERSION)
- libsched_fcgi_la_LIBADD=
- 
- endif
-Index: boinc-client_release-7.6-7.6.33/zip/Makefile.am
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/zip/Makefile.am
-+++ boinc-client_release-7.6-7.6.33/zip/Makefile.am
-@@ -61,7 +61,7 @@ endif
- 
- lib_LTLIBRARIES = libboinc_zip.la
- libboinc_zip_la_SOURCES = $(libboinc_zip_sources)
--libboinc_zip_la_LDFLAGS = -L$(libdir) -rpath $(libdir) -version-number $(LIBBOINC_VERSION)
-+libboinc_zip_la_LDFLAGS = -version-number $(LIBBOINC_VERSION)
- libboinc_zip_la_LIBADD =
- 
- # Some OSs may not prefix libraries with lib.
diff --git a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.6.33.bb b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.6.33.bb
rename to meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb
index 99b43fa..e505bb4 100644
--- a/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.6.33.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb
@@ -29,21 +29,19 @@
            ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk+ libnotify xcb-util libxscrnsaver', '', d)} \
            nettle \
 "
-
-SRC_URI = "https://github.com/BOINC/boinc/archive/client_release/7.6/${PV}.tar.gz \
+SRCREV = "bd12338dbd29083daa5a4b022592ca31ff68cd98"
+BRANCH = "client_release/7/${PV}"
+SRC_URI = "git://github.com/BOINC/boinc;protocol=https;branch=${BRANCH} \
            file://boinc-AM_CONDITIONAL.patch \
            file://opengl_m4_check.patch \
-           file://cross-compile.patch \
            file://gtk-configure.patch \
 "
-SRC_URI[md5sum] = "437b4b98e384b4bda4ef7056e68166ac"
-SRC_URI[sha256sum] = "c4b1c29b9655013e0ac61dddf47ad7f30f38c46159f02a9d9dc8ab854e99aa6d"
 
-inherit gettext autotools-brokensep pkgconfig distro_features_check
+inherit gettext autotools pkgconfig distro_features_check systemd
 
 REQUIRED_DISTRO_FEATURES += "opengl"
 
-S = "${WORKDIR}/${BPN}_release-7.6-${PV}"
+S = "${WORKDIR}/git"
 
 EXTRA_OECONF += "\
     --enable-libraries \
@@ -75,5 +73,15 @@
 	sed -i -e 's|^sys_lib_dlsearch_path_spec=.*|sys_lib_dlsearch_path_spec=""|g' ${B}/${TARGET_SYS}-libtool
 	sed -i -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' ${B}/${TARGET_SYS}-libtool
 }
+do_install_append() {
+	if [ -e ${D}${libdir}/systemd/system/boinc-client.service ]; then
+		install -D -m 0644 \
+		${D}${libdir}/systemd/system/boinc-client.service \
+		${D}${systemd_system_unitdir}/boinc-client.service
+		rm -rf ${D}${libdir}/systemd
+	fi
+}
 
-SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
+SYSTEMD_SERVICE_${PN} = "boinc-client.service"
+
+FILES_${PN} += "${libdir}/systemd"
diff --git a/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb b/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb
new file mode 100644
index 0000000..b4d4773
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Lossless compression library and tool"
+DESCRIPTIOM = "Brotli is a generic-purpose lossless compression algorithm \
+that it is similar in speed to deflate but offers more dense compression."
+HOMEPAGE = "https://github.com/google/brotli"
+BUGTRACKER = "https://github.com/google/brotli/issues"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=941ee9cd1609382f946352712a319b4b"
+
+SRC_URI = "git://github.com/google/brotli.git"
+# tag 1.0.7
+SRCREV= "d6d98957ca8ccb1ef45922e978bb10efca0ea541"
+S = "${WORKDIR}/git"
+
+inherit cmake lib_package
diff --git a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc
index 9bdafd2..5214715 100644
--- a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc
+++ b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc.inc
@@ -6,7 +6,7 @@
 SECTION = "devel"
 LICENSE = "PD"
 
-SRC_URI = "ftp://invisible-island.net/byacc/byacc-${PV}.tgz \
+SRC_URI = "ftp://ftp.invisible-island.net/byacc/byacc-${PV}.tgz \
            file://byacc-open.patch \
            file://0001-byacc-do-not-reorder-CC-and-CFLAGS.patch"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch
index 7cd2510..3bc0db9 100644
--- a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch
@@ -9,28 +9,29 @@
 Upstream-Status: Inappropriate [OE Specific]
 
 Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
 ---
  aclocal.m4 |   1 -
- configure  | 119 -------------------------------------------------------------
- 2 files changed, 120 deletions(-)
+ configure  | 140 -------------------------------------------------------------
+ 2 files changed, 141 deletions(-)
 
 diff --git a/aclocal.m4 b/aclocal.m4
-index 917a848..62ef241 100644
+index 0d14f26..0cefa08 100644
 --- a/aclocal.m4
 +++ b/aclocal.m4
-@@ -1021,7 +1021,6 @@ CF_GCC_VERSION
+@@ -1038,7 +1038,6 @@ CF_GCC_VERSION
  CF_ACVERSION_CHECK(2.52,
  	[AC_PROG_CC_STDC],
  	[CF_ANSI_CC_REQD])
 -CF_CC_ENV_FLAGS
  ])dnl
  dnl ---------------------------------------------------------------------------
- dnl CF_PROG_GROFF version: 2 updated: 2015/07/04 11:16:27
+ dnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19
 diff --git a/configure b/configure
-index 9707e50..4f0497c 100755
+index d27ae31..077c648 100755
 --- a/configure
 +++ b/configure
-@@ -1946,125 +1946,6 @@ esac
+@@ -1946,146 +1946,6 @@ esac
  # This should have been defined by AC_PROG_CC
  : ${CC:=cc}
  
@@ -43,8 +44,9 @@
 -	{ echo "$as_me:1955: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
 -echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
 -	# humor him...
--	cf_flags=`echo "$CC" | sed -e 's/^.*[ 	]\(-[^ 	]\)/\1/'`
--	CC=`echo "$CC " | sed -e 's/[ 	]-[^ 	].*$//' -e 's/[ 	]*$//'`
+-	cf_prog=`echo "$CC" | sed -e 's/	/ /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'`
+-	cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'`
+-	CC="$cf_prog"
 -	for cf_arg in $cf_flags
 -	do
 -		case "x$cf_arg" in
@@ -55,7 +57,7 @@
 -cf_new_cppflags=
 -cf_new_extra_cppflags=
 -
--for cf_add_cflags in $cf_flags
+-for cf_add_cflags in $cf_arg
 -do
 -case $cf_fix_cppflags in
 -(no)
@@ -70,10 +72,16 @@
 -				&& cf_fix_cppflags=yes
 -
 -			if test $cf_fix_cppflags = yes ; then
--				cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+-
+-	test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+-	cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+-
 -				continue
 -			elif test "${cf_tst_cflags}" = "\"'" ; then
--				cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+-
+-	test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+-	cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+-
 -				continue
 -			fi
 -			;;
@@ -92,17 +100,25 @@
 -
 -				;;
 -			esac
--			cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+-
+-	test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+-	cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+-
 -			;;
 -		esac
 -		;;
 -	(*)
--		cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+-
+-	test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+-	cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+-
 -		;;
 -	esac
 -	;;
 -(yes)
--	cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+-
+-	test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+-	cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
 -
 -	cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
 -
@@ -115,17 +131,23 @@
 -
 -if test -n "$cf_new_cflags" ; then
 -
--	CFLAGS="$CFLAGS $cf_new_cflags"
+-	test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+-	CFLAGS="${CFLAGS}$cf_new_cflags"
+-
 -fi
 -
 -if test -n "$cf_new_cppflags" ; then
 -
--	CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+-	test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+-	CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+-
 -fi
 -
 -if test -n "$cf_new_extra_cppflags" ; then
 -
--	EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+-	test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+-	EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+-
 -fi
 -
 -			;;
@@ -136,26 +158,26 @@
 -	done
 -	test -n "$verbose" && echo "	resulting CC: '$CC'" 1>&6
 -
--echo "${as_me:-configure}:2051: testing resulting CC: '$CC' ..." 1>&5
+-echo "${as_me:-configure}:2072: testing resulting CC: '$CC' ..." 1>&5
 -
 -	test -n "$verbose" && echo "	resulting CFLAGS: '$CFLAGS'" 1>&6
 -
--echo "${as_me:-configure}:2055: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+-echo "${as_me:-configure}:2076: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
 -
 -	test -n "$verbose" && echo "	resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
 -
--echo "${as_me:-configure}:2059: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+-echo "${as_me:-configure}:2080: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
 -
 -	;;
 -(*)
--	echo "$as_me:2063: result: ok" >&5
+-	echo "$as_me:2084: result: ok" >&5
 -echo "${ECHO_T}ok" >&6
 -	;;
 -esac
 -
- echo "$as_me:2068: checking whether ${MAKE-make} sets \${MAKE}" >&5
+ echo "$as_me:2089: checking whether ${MAKE-make} sets \${MAKE}" >&5
  echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
  set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
 -- 
-2.8.3
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20170201.bb b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20170201.bb
deleted file mode 100644
index 702c4c9..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20170201.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-# Sigh. This is one of those places where everyone licenses it differently. Someone
-# even apply UCB to it (Free/Net/OpenBSD). The maintainer states that:
-# "I've found no reliable source which states that byacc must bear a UCB copyright."
-# Setting to PD as this is what the upstream has it as.
-
-LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://package/debian/copyright;md5=9176bfb16dab43ebcb8e50d9ee9550b6"
-require byacc.inc
-
-SRC_URI[md5sum] = "4bb274bbd7b648d4251c2b9ca36ed0c9"
-SRC_URI[sha256sum] = "90b768d177f91204e6e7cef226ae1dc7cac831b625774cebd3e233a917754f91"
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20180510.bb b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20180510.bb
new file mode 100644
index 0000000..f30c426
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20180510.bb
@@ -0,0 +1,12 @@
+# Sigh. This is one of those places where everyone licenses it differently. Someone
+# even apply UCB to it (Free/Net/OpenBSD). The maintainer states that:
+# "I've found no reliable source which states that byacc must bear a UCB copyright."
+# Setting to PD as this is what the upstream has it as.
+
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://package/debian/copyright;md5=8b2933503c0443e041d3168dc0c65640"
+require byacc.inc
+
+SRC_URI[md5sum] = "97fdc0745e0ff0cef5c09d57d0c6752d"
+SRC_URI[sha256sum] = "d0940dbffbc7e9c9dd4985c25349c390beede84ae1d9fe86b71c0aa659a6d693"
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.10.2.bb b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.12.0.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.10.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.12.0.bb
index b52e7cc..dda6af9 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.10.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.12.0.bb
@@ -22,8 +22,8 @@
 
 SRC_URI = "https://cfengine-package-repos.s3.amazonaws.com/tarballs/${BP}.tar.gz"
 
-SRC_URI[md5sum] = "1247ef4e8f3cee5efa98da50c326e5a4"
-SRC_URI[sha256sum] = "5d18a8d71f451d0b5dd1f5e579452b29b99b664f2bb0827dbba9a615f2764df6"
+SRC_URI[md5sum] = "d59bd8c95620da816c382f749d425860"
+SRC_URI[sha256sum] = "1c50e3d8c702097e13a21258626d936d6ff2e6492e893dfe286ff0d6204d7a65"
 
 inherit autotools
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine/change-hard-coded-lib-path.patch b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine/change-hard-coded-lib-path.patch
deleted file mode 100644
index 2295e41..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine/change-hard-coded-lib-path.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-projlibdir use a hard coded lib path, this will cause error when build a 64bit
-target. So change it to suitable path.
-
-Signed-off-by: Song.Li <Song.Li@windriver.com>
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 38e2b9c..bc6b996 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -188,7 +188,7 @@ AS_IF([test x"$enable_fhs" = xyes], [
-   fi
- 
-   sbindir='${exec_prefix}/bin' # /var/cfengine/bin despite being sbin_?
--  projlibdir='${exec_prefix}/lib'
-+  projlibdir='${libdir}'
-   mandir='${exec_prefix}/share/man'
- ])
- 
--- 
-1.7.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine/set-path-of-default-config-file.patch b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine/set-path-of-default-config-file.patch
index b9526f2..db69f95 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine/set-path-of-default-config-file.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine/set-path-of-default-config-file.patch
@@ -1,23 +1,38 @@
+From dc270040cb3beb5ca42f864813145c8a68594bad Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Mon, 18 Jul 2016 09:06:06 +0800
+Subject: [PATCH] cfengine: add recipe and base policy
+
 Upstream-Status: Inappropriate [configuration]
 
 Set the path of default configure file.
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
 ---
+ misc/init.d/cfengine3.in | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
 diff --git a/misc/init.d/cfengine3.in b/misc/init.d/cfengine3.in
-index d6ae26f..1dee283 100644
+index c584817..12f5803 100644
 --- a/misc/init.d/cfengine3.in
 +++ b/misc/init.d/cfengine3.in
-@@ -101,11 +101,7 @@ if [ -z "$LOCKDIR" ]; then
+@@ -101,14 +101,10 @@ if [ -z "$LOCKDIR" ]; then
  fi
  
  # default control file
 -if [ "$DEBIAN" = "1" ]; then
 -    DEFAULT=/etc/default/cfengine3
+-    INIT_FUNCTIONS=/lib/lsb/init-functions
+-    if [ -e "$INIT_FUNCTIONS" ]; then
+-        . "$INIT_FUNCTIONS"
+-    fi
 -else
 -    DEFAULT=/etc/sysconfig/cfengine3
--fi
 +DEFAULT=/etc/default/cfengine3
++INIT_FUNCTIONS=/lib/lsb/init-functions
++if [ -e "$INIT_FUNCTIONS" ]; then
++    . "$INIT_FUNCTIONS"
+ fi
  
  if [ -f $DEFAULT ]; then
-     . $DEFAULT
diff --git a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.10.2.bb b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.12.0.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.10.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.12.0.bb
index b86b0a1..9d0123d 100644
--- a/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.10.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.12.0.bb
@@ -16,20 +16,19 @@
 DEPENDS = "attr tokyocabinet"
 
 SRC_URI = "https://cfengine-package-repos.s3.amazonaws.com/tarballs/${BP}.tar.gz \
-           file://change-hard-coded-lib-path.patch \
            file://set-path-of-default-config-file.patch \
-"
+           "
 
-SRC_URI[md5sum] = "c16baf08189a1af6fcf2e2ff61102992"
-SRC_URI[sha256sum] = "d4fa9ac7276dba7b85d6757aab2f0929ab8d3b115cb0e7b0cf984760347429d7"
+SRC_URI[md5sum] = "33ef12260db4b430352229f37f7cb0e5"
+SRC_URI[sha256sum] = "d71ba98a272390c6fa8bc20e8ea27f0050a0a72a3e6b206a4762b4646be332ec"
 
 inherit autotools systemd
 
 export EXPLICIT_VERSION="${PV}"
 
 SYSTEMD_SERVICE_${PN} = "cfengine3.service cf-apache.service cf-hub.service cf-postgres.service \
-                         cf-runalerts.service cf-consumer.service cf-execd.service \
-                         cf-monitord.service  cf-redis-server.service  cf-serverd.service \
+                         cf-runalerts.service cf-execd.service \
+                         cf-monitord.service  cf-serverd.service \
 "
 SYSTEMD_AUTO_ENABLE_${PN} = "disable"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_git.bb b/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_git.bb
rename to meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
diff --git a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch
index 1ceacd8..5ee75cb 100644
--- a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch
@@ -1,28 +1,31 @@
-[PATCH] conditionally check libvirt
+From 385bf1c2ec57942e17ee529e57eef0dcd99904e6 Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com>
+Date: Tue, 1 Sep 2015 17:00:33 +0800
+Subject: [PATCH] [PATCH] conditionally check libvirt
 
 Upstream-Statue: Pending
 
 check if libvirt is available only when a user wants to use libvirt
 
 Signed-off-by: Roy Li <rongqing.li@windriver.com>
----
- configure.ac | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
 
-Index: collectd-5.7.1/configure.ac
-===================================================================
---- collectd-5.7.1.orig/configure.ac
-+++ collectd-5.7.1/configure.ac
-@@ -5556,12 +5556,14 @@ else
- 	with_libxml2="no (pkg-config doesn't know libxml-2.0)"
+---
+ configure.ac | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 101d6f9f..a7eca97d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -5758,11 +5758,14 @@ else
+   with_libxml2="no (pkg-config doesn't know libxml-2.0)"
  fi
  
 -$PKG_CONFIG --exists libvirt 2>/dev/null
--if test "$?" = "0"
--then
--	with_libvirt="yes"
+-if test $? = 0; then
+-  with_libvirt="yes"
 -else
--	with_libvirt="no (pkg-config doesn't know libvirt)"
+-  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"
@@ -32,5 +35,5 @@
 +		with_libvirt="no (pkg-config doesn't know libvirt)"
 +	fi
  fi
- if test "x$with_libxml2" = "xyes"
- then
+ 
+ if test "x$with_libxml2" = "xyes"; then
diff --git a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch
index 5069a63..d2c7268 100644
--- a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch
@@ -1,4 +1,4 @@
-From b459c55e4968321e5a82272cb39aa69d4054990f Mon Sep 17 00:00:00 2001
+From b0a64db90a24469e36978c748417ebe456b34d59 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 22 Apr 2017 11:54:57 -0700
 Subject: [PATCH] configure: Check for -Wno-error=format-truncation compiler
@@ -14,35 +14,26 @@
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
 ---
- configure.ac                |  3 +-
- m4/ax_check_compile_flag.m4 | 74 +++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 76 insertions(+), 1 deletion(-)
+ configure.ac                |  1 +
+ m4/ax_check_compile_flag.m4 | 74 +++++++++++++++++++++++++++++++++++++
+ 2 files changed, 75 insertions(+)
  create mode 100644 m4/ax_check_compile_flag.m4
 
 diff --git a/configure.ac b/configure.ac
-index 8854542..edb8cfb 100644
+index a7eca97d..560eb988 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -4,7 +4,6 @@ AC_INIT([collectd],[m4_esyscmd(./version-gen.sh)])
- AC_CONFIG_SRCDIR(src/target_set.c)
- AC_CONFIG_HEADERS(src/config.h)
- AC_CONFIG_AUX_DIR([libltdl/config])
--
- dnl older automake's default of ARFLAGS=cru is noisy on newer binutils;
- dnl we don't really need the 'u' even in older toolchains.  Then there is
- dnl older libtool, which spelled it AR_FLAGS
-@@ -6688,6 +6687,8 @@ then
-         AM_CFLAGS="$AM_CFLAGS -Werror"
-         AM_CXXFLAGS="$AM_CXXFLAGS -Werror"
+@@ -6794,6 +6794,7 @@ if test "x$enable_werror" != "xno"; then
+   AM_CFLAGS="$AM_CFLAGS -Werror"
+   AM_CXXFLAGS="$AM_CXXFLAGS -Werror"
  fi
 +AX_CHECK_COMPILE_FLAG([-Werror -Werror=format-truncation],[AM_CFLAGS="$AM_CFLAGS -Wno-error=format-truncation" AM_CXXFLAGS="$AM_CXXFLAGS -Wno-error=format-truncation"])
-+
+ 
  AC_SUBST([AM_CFLAGS])
  AC_SUBST([AM_CXXFLAGS])
- 
 diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
 new file mode 100644
-index 0000000..dcabb92
+index 00000000..dcabb92a
 --- /dev/null
 +++ b/m4/ax_check_compile_flag.m4
 @@ -0,0 +1,74 @@
@@ -120,6 +111,3 @@
 +  [m4_default([$3], :)])
 +AS_VAR_POPDEF([CACHEVAR])dnl
 +])dnl AX_CHECK_COMPILE_FLAGS
--- 
-2.13.4
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0005-Disable-new-gcc8-warnings.patch b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0005-Disable-new-gcc8-warnings.patch
new file mode 100644
index 0000000..b12690b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0005-Disable-new-gcc8-warnings.patch
@@ -0,0 +1,65 @@
+From d65e48b68076d5b304e6d865967003ae1fea0e6c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 9 May 2018 21:45:38 -0700
+Subject: [PATCH] Disable new gcc8 warnings
+
+GCC seems to be not able to detect the checks for size are
+already in place
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted [https://github.com/collectd/collectd/pull/2768]
+ src/libcollectdclient/network_parse.c | 7 +++++++
+ src/write_sensu.c                     | 7 +++++++
+ 2 files changed, 14 insertions(+)
+
+diff --git a/src/libcollectdclient/network_parse.c b/src/libcollectdclient/network_parse.c
+index 2365ab0a..79e6ed96 100644
+--- a/src/libcollectdclient/network_parse.c
++++ b/src/libcollectdclient/network_parse.c
+@@ -163,6 +163,11 @@ static int parse_int(void *payload, size_t payload_size, uint64_t *out) {
+   return 0;
+ }
+ 
++#pragma GCC diagnostic push
++#if __GNUC__ == 8
++#pragma GCC diagnostic ignored "-Wstringop-truncation"
++#endif
++
+ static int parse_string(void *payload, size_t payload_size, char *out,
+                         size_t out_size) {
+   char *in = payload;
+@@ -175,6 +180,8 @@ static int parse_string(void *payload, size_t payload_size, char *out,
+   return 0;
+ }
+ 
++#pragma GCC diagnostic pop
++
+ static int parse_identifier(uint16_t type, void *payload, size_t payload_size,
+                             lcc_value_list_t *state) {
+   char buf[LCC_NAME_LEN];
+diff --git a/src/write_sensu.c b/src/write_sensu.c
+index ce23e654..63e1f599 100644
+--- a/src/write_sensu.c
++++ b/src/write_sensu.c
+@@ -569,6 +569,11 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
+   return ret_str;
+ } /* }}} char *sensu_value_to_json */
+ 
++#pragma GCC diagnostic push
++#if __GNUC__ == 8
++#pragma GCC diagnostic ignored "-Wstringop-overflow"
++#pragma GCC diagnostic ignored "-Wstringop-truncation"
++#endif
+ /*
+  * Uses replace_str2() implementation from
+  * http://creativeandcritical.net/str-replace-c/
+@@ -631,6 +636,8 @@ static char *replace_str(const char *str, const char *old, /* {{{ */
+   return ret;
+ } /* }}} char *replace_str */
+ 
++#pragma GCC diagnostic pop
++
+ static char *replace_json_reserved(const char *message) /* {{{ */
+ {
+   char *msg = replace_str(message, "\\", "\\\\");
diff --git a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/no-gcrypt-badpath.patch b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/no-gcrypt-badpath.patch
index 1fde6a0..f12b16c 100644
--- a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/no-gcrypt-badpath.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/no-gcrypt-badpath.patch
@@ -1,43 +1,37 @@
-Index: collectd-5.7.1/configure.ac
-===================================================================
---- collectd-5.7.1.orig/configure.ac
-+++ collectd-5.7.1/configure.ac
-@@ -2305,7 +2305,7 @@ AC_ARG_WITH(libgcrypt, [AS_HELP_STRING([
- 	 with_libgcrypt="yes"
-  else if test -f "$withval/bin/gcrypt-config" && test -x "$withval/bin/gcrypt-config"
-  then
--	 with_libgcrypt_config="$withval/bin/gcrypt-config"
-+	 with_libgcrypt_config="$withval/bin/pkg-config"
- 	 with_libgcrypt="yes"
-  else if test -d "$withval"
-  then
-@@ -2313,12 +2313,12 @@ AC_ARG_WITH(libgcrypt, [AS_HELP_STRING([
- 	 GCRYPT_LDFLAGS="$GCRYPT_LDFLAGS -L$withval/lib"
- 	 with_libgcrypt="yes"
-  else
--	 with_libgcrypt_config="gcrypt-config"
-+	 with_libgcrypt_config="pkg-config"
- 	 with_libgcrypt="$withval"
-  fi; fi; fi
- ],
- [
-- with_libgcrypt_config="libgcrypt-config"
-+ with_libgcrypt_config="pkg-config"
-  with_libgcrypt="yes"
- ])
- 
-@@ -2326,12 +2326,12 @@ if test "x$with_libgcrypt" = "xyes" && t
- then
- 	if test "x$GCRYPT_CPPFLAGS" = "x"
- 	then
--		GCRYPT_CPPFLAGS=`"$with_libgcrypt_config" --cflags 2>/dev/null`
-+		GCRYPT_CPPFLAGS=`"$with_libgcrypt_config" --cflags libgcrypt 2>/dev/null`
- 	fi
- 
- 	if test "x$GCRYPT_LIBS" = "x"
- 	then
--		GCRYPT_LIBS=`"$with_libgcrypt_config" --libs 2>/dev/null`
-+		GCRYPT_LIBS=`"$with_libgcrypt_config" --lib libgcrypt 2>/dev/null`
- 	fi
- fi
- 
+From d9b954bd9d0b084d9a1f5159a9f0c45802a51809 Mon Sep 17 00:00:00 2001
+From: Paul Eggleton <paul.eggleton@linux.intel.com>
+Date: Mon, 22 Apr 2013 16:28:16 +0000
+
+---
+ configure.ac | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index e869a6a0..101d6f9f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -2514,20 +2514,20 @@ AC_ARG_WITH([libgcrypt],
+     if test -f "$withval" && test -x "$withval"; then
+       with_libgcrypt_config="$withval"
+       with_libgcrypt="yes"
+-    else if test -f "$withval/bin/gcrypt-config" && test -x "$withval/bin/gcrypt-config"; then
+-      with_libgcrypt_config="$withval/bin/gcrypt-config"
++    else if test -f "$withval/bin/pkg-config" && test -x "$withval/bin/pkg-config"; then
++      with_libgcrypt_config="$withval/bin/pkg-config"
+       with_libgcrypt="yes"
+     else if test -d "$withval"; then
+       GCRYPT_CPPFLAGS="$GCRYPT_CPPFLAGS -I$withval/include"
+       GCRYPT_LDFLAGS="$GCRYPT_LDFLAGS -L$withval/lib"
+       with_libgcrypt="yes"
+     else
+-      with_libgcrypt_config="gcrypt-config"
++      with_libgcrypt_config="pkg-config"
+       with_libgcrypt="$withval"
+     fi; fi; fi
+   ],
+   [
+-    with_libgcrypt_config="libgcrypt-config"
++    with_libgcrypt_config="libpkg-config"
+     with_libgcrypt="yes"
+   ]
+ )
diff --git a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.7.2.bb b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.8.0.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.7.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.8.0.bb
index c156ea1..df9fa23 100644
--- a/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.7.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.8.0.bb
@@ -12,9 +12,10 @@
            file://0001-conditionally-check-libvirt.patch \
            file://0001-fix-to-build-with-glibc-2.25.patch \
            file://0001-configure-Check-for-Wno-error-format-truncation-comp.patch \
-"
-SRC_URI[md5sum] = "5da2b69c286a064db35c6cc1e758b039"
-SRC_URI[sha256sum] = "9d20a0221569a8d6b80bbc52b86e5e84965f5bafdbf5dfc3790e0fed0763e592"
+           file://0005-Disable-new-gcc8-warnings.patch \
+           "
+SRC_URI[md5sum] = "a841159323624f18bf03198e9f5aa364"
+SRC_URI[sha256sum] = "b06ff476bbf05533cb97ae6749262cc3c76c9969f032bd8496690084ddeb15c9"
 
 inherit autotools pythonnative update-rc.d pkgconfig systemd
 
@@ -42,7 +43,7 @@
         --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[libvirt] = "--enable-virt,--disable-virt,libvirt"
 PACKAGECONFIG[libesmtp] = "--with-libesmtp,--without-libesmtp,libesmtp"
 PACKAGECONFIG[libmnl] = "--with-libmnl,--without-libmnl,libmnl"
 PACKAGECONFIG[libatasmart] = "--with-libatasmart,--without-libatasmart,libatasmart"
@@ -62,7 +63,7 @@
     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
-
+    install -Dm 0640 ${B}/src/collectd.conf ${D}${sysconfdir}/collectd.conf
     # Fix configuration file to allow collectd to start up
     sed -i 's!^#FQDNLookup[ \t]*true!FQDNLookup   false!g' ${D}${sysconfdir}/collectd.conf
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20171209.bb b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20180621.bb
similarity index 86%
rename from meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20171209.bb
rename to meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20180621.bb
index 63c65c4..e987959 100644
--- a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20171209.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20180621.bb
@@ -10,8 +10,8 @@
 
 SRC_URI = "ftp://ftp.invisible-island.net/${BPN}/${BP}.tgz \
           "
-SRC_URI[md5sum] = "f66f28beca900b54f5fc90fdcce93508"
-SRC_URI[sha256sum] = "20139442119e2eff5c35236e8e5e313c901539008d9cccf8c8ab3851b41267e6"
+SRC_URI[md5sum] = "1dba09cf45ac4ba40b3cb4a3f1d694b2"
+SRC_URI[sha256sum] = "4a4859e2b22d24e46c1a529b5a5605b95503aa04da4432f7bbd713e3e867587a"
 
 # hardcoded here for use in dialog-static recipe
 S = "${WORKDIR}/dialog-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb b/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb
index 4cc289d..f9fd8ae 100644
--- a/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb
@@ -60,10 +60,12 @@
     install -m 0644 ${WORKDIR}/gnuplot.png ${D}${datadir}/pixmaps/
 }
 
-PACKAGES =+ "${PN}-x11-dbg ${PN}-x11"
+PACKAGES =+ "${PN}-x11"
+
+RPROVIDES_${PN}-dbg += "${PN}-x11-dbg"
+
 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/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.2.bb b/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.2.bb
index 05ee842..bf13673 100644
--- a/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.2.bb
@@ -12,6 +12,8 @@
 SRC_URI[md5sum] = "fb1d8b3dcbb9d06b30eccd8aa500fd31"
 SRC_URI[sha256sum] = "f77d9adbdf421b61601fa29faa9ce3b479d910f73c66b9e364ba8642ccbfbe70"
 
+UPSTREAM_CHECK_URI = "http://www.issihosts.com/haveged/downloads.html"
+
 inherit autotools update-rc.d systemd
 
 EXTRA_OECONF = "\
diff --git a/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.5.bb b/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.10.bb
similarity index 78%
rename from meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.5.bb
rename to meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.10.bb
index 5a335b9..5f4155e 100644
--- a/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.10.bb
@@ -7,9 +7,11 @@
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://COPYING;md5=3282e20dc3cec311deda3c6d4b1f990b"
 
-SRC_URI = "https://www.open-mpi.org/software/${PN}/v1.11/downloads/${BP}.tar.bz2"
-SRC_URI[md5sum] = "96c34136ff416d2b13a7821c27477bed"
-SRC_URI[sha256sum] = "95d80286dfe658a3f79e2ac90698782bb36e5504f4bac1bba2394ba14dbbad24"
+SRC_URI = "https://www.open-mpi.org/software/${BPN}/v1.11/downloads/${BP}.tar.bz2"
+SRC_URI[md5sum] = "0981a01935982aa7e850a96e0c3057b0"
+SRC_URI[sha256sum] = "2be808383d8337846fe77ce49c7ad3336fb6857505494d85c0ac03f22c5bd1e7"
+
+UPSTREAM_CHECK_URI = "https://www.open-mpi.org/software/hwloc/v1.11/"
 
 inherit autotools pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb b/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb
index 5dcae98..94643cd 100644
--- a/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb
@@ -12,6 +12,9 @@
 SRC_URI[md5sum] = "5ef9456b26d7694abf3101a72e1e0d1d"
 SRC_URI[sha256sum] = "3adea2a24eda49bbbaeb4e6ed2042355b441dbd7161e883067a02bfc8dcef75b"
 
+UPSTREAM_CHECK_URI = "http://repo.or.cz/iotop.git/tags"
+UPSTREAM_CHECK_REGEX = "iotop-(?P<pver>\d+(\.\d+)+)"
+
 inherit distutils
 
 do_install_append() {
@@ -21,4 +24,4 @@
 
 RDEPENDS_${PN} = "python-curses python-textutils \
                   python-codecs python-ctypes python-pprint \
-                  python-shell"
+                  python-shell python-subprocess"
diff --git a/meta-openembedded/meta-oe/recipes-extended/isomd5sum/files/0001-tweak-install-prefix.patch b/meta-openembedded/meta-oe/recipes-extended/isomd5sum/files/0001-tweak-install-prefix.patch
index bcfc117..61310cc 100644
--- a/meta-openembedded/meta-oe/recipes-extended/isomd5sum/files/0001-tweak-install-prefix.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/isomd5sum/files/0001-tweak-install-prefix.patch
@@ -1,7 +1,7 @@
-From cffe4767f89ea0b54b57e8bf9065a08a9c38d46e Mon Sep 17 00:00:00 2001
+From a70513ff59da3c593c76330afb445c21761c3268 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 18 Jul 2017 21:53:00 -0400
-Subject: [PATCH] tweak install prefix
+Date: Tue, 31 Jul 2018 17:14:24 +0800
+Subject: [PATCH 1/2] tweak install prefix
 
 Upstream-Status: Inappropriate [oe specific]
 
@@ -11,7 +11,7 @@
  1 file changed, 14 insertions(+), 14 deletions(-)
 
 diff --git a/Makefile b/Makefile
-index df16a3b..fbdfcb4 100644
+index c98cf35..7c5907f 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -39,26 +39,26 @@ pyisomd5sum.so: $(PYOBJS)
@@ -43,7 +43,7 @@
 -	install -m 0644 libcheckisomd5.h $(DESTDIR)/usr/include/
 -	install -m 0644 libimplantisomd5.a $(DESTDIR)/usr/$(LIBDIR)
 -	install -m 0644 libcheckisomd5.a $(DESTDIR)/usr/$(LIBDIR)
--	sed "s#@VERSION@#${VERSION}#g; s#@includedir@#${DESTDIR}/usr/include#g; s#@libdir@#${DESTDIR}/usr/${LIBDIR}#g" isomd5sum.pc.in > ${DESTDIR}/usr/share/pkgconfig/isomd5sum.pc
+-	sed "s#@VERSION@#${VERSION}#g; s#@includedir@#/usr/include#g; s#@libdir@#/usr/${LIBDIR}#g" isomd5sum.pc.in > ${DESTDIR}/usr/share/pkgconfig/isomd5sum.pc
 +	install -d -m 0755 $(DESTDIR)$(includedir)
 +	install -d -m 0755 $(DESTDIR)$(libdir)
 +	install -d -m 0755 $(DESTDIR)${datadir}/pkgconfig
@@ -51,10 +51,10 @@
 +	install -m 0644 libcheckisomd5.h $(DESTDIR)$(includedir)
 +	install -m 0644 libimplantisomd5.a $(DESTDIR)$(libdir)
 +	install -m 0644 libcheckisomd5.a $(DESTDIR)$(libdir)
-+	sed "s#@VERSION@#${VERSION}#g; s#@includedir@#${DESTDIR}/usr/include#g; s#@libdir@#${DESTDIR}/usr/${LIBDIR}#g" isomd5sum.pc.in > ${DESTDIR}${datadir}/pkgconfig/isomd5sum.pc
++	sed "s#@VERSION@#${VERSION}#g; s#@includedir@#$(includedir)#g; s#@libdir@#$(libdir)#g" isomd5sum.pc.in > ${DESTDIR}${datadir}/pkgconfig/isomd5sum.pc
  
  clean:
  	rm -f *.o *.so *.pyc *.a .depend *~
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.1.bb b/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.1.bb
rename to meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
index 815113e..83e8385 100644
--- a/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
@@ -25,11 +25,12 @@
     oe_runmake install
 }
 
-PACKAGES += "${PYTHON_PN}-${PN} ${PYTHON_PN}-${PN}-dbg"
+PACKAGES += "${PYTHON_PN}-${PN}"
+
+RPROVIDES_${PN}-dbg += "${PYTHON_PN}-${PN}-dbg"
 
 FILES_${PYTHON_PN}-${PN} = "${PYTHON_SITEPACKAGES_DIR}/pyisomd5sum.so"
-FILES_${PYTHON_PN}-${PN}-dbg = "${PYTHON_SITEPACKAGES_DIR}/.debug/pyisomd5sum.so"
 
-SRCREV = "69dc036d20761715b734ca9cc59ecc6dc8145026"
+SRCREV = "7860901f726f5d92689cb67243cc7f981f21f74b"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.9.bb b/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.11.bb
similarity index 69%
rename from meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.9.bb
rename to meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.11.bb
index 455b374..370fa22 100644
--- a/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.9.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.11.bb
@@ -5,8 +5,8 @@
 
 SRC_URI = "http://www.digip.org/jansson/releases/${BPN}-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "84abaefee9502b2f2ff394d758f160c7"
-SRC_URI[sha256sum] = "0ad0d074ca049a36637e7abef755d40849ad73e926b93914ce294927b97bd2a5"
+SRC_URI[md5sum] = "7af071db9970441e1eaaf25662310e33"
+SRC_URI[sha256sum] = "6e85f42dabe49a7831dbdd6d30dca8a966956b51a9a50ed534b82afc3fa5b2f4"
 
 inherit autotools pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb b/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb
index 0f798d2..f62cf6b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb
@@ -30,9 +30,10 @@
     rm -rf ${D}${datadir}
 }
 
-PACKAGES =+ "${PN}-python ${PN}-python-dbg"
+PACKAGES =+ "${PN}-python"
+
+RPROVIDES_${PN}-dbg += "${PN}-python-dbg"
 
 FILES_${PN}-python = "${libdir}/python2.7/site-packages/konkretmof.py* ${libdir}/python2.7/site-packages/_konkretmof.so"
-FILES_${PN}-python-dbg = "${libdir}/python2.7/site-packages/.debug/*"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-include-asm-ioctl.h-explicitly.patch b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-include-asm-ioctl.h-explicitly.patch
deleted file mode 100644
index abdedad..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-include-asm-ioctl.h-explicitly.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From b5ca64c7398d516e9845d849e8306df7ac024bc4 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 11 Apr 2017 13:59:34 -0700
-Subject: [PATCH] include asm/ioctl.h explicitly
-
-Needed for _IOC* defines
-
-helps compiling with musl where this file is
-not included indirectly
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- server/drivers/hd44780-pifacecad.c | 1 +
- server/drivers/hd44780-spi.c       | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/server/drivers/hd44780-pifacecad.c b/server/drivers/hd44780-pifacecad.c
-index 43db19c..e2798ad 100644
---- a/server/drivers/hd44780-pifacecad.c
-+++ b/server/drivers/hd44780-pifacecad.c
-@@ -54,6 +54,7 @@
- #include <unistd.h>
- #include <fcntl.h>
- #include <sys/ioctl.h>
-+#include <asm/ioctl.h>
- #include <stdint.h>
- #include <linux/spi/spidev.h>
- 
-diff --git a/server/drivers/hd44780-spi.c b/server/drivers/hd44780-spi.c
-index 5f94333..8a4015b 100644
---- a/server/drivers/hd44780-spi.c
-+++ b/server/drivers/hd44780-spi.c
-@@ -29,6 +29,7 @@
- #include <unistd.h>
- #include <fcntl.h>
- #include <sys/ioctl.h>
-+#include <asm/ioctl.h>
- #include <stdint.h>
- #include <linux/spi/spidev.h>
- 
--- 
-2.12.2
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
index 96bc826..93a09f2 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
@@ -9,17 +9,18 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760 \
                     file://README.md;beginline=107;md5=5c927ce1742d6d5cddc45b7ad6230f75"
 
-BASEPV = "0.5.8"
+BASEPV = "0.5.9"
 PV = "${BASEPV}+git${SRCPV}"
-SRCREV = "f5156e2e41bb418f14761afea22eee8efb49fb85"
-SRC_URI = "git://github.com/lcdproc/lcdproc;branch=lcdproc-${BASEPV} \
-           file://0001-include-asm-ioctl.h-explicitly.patch \
+SRCREV = "a4b5a7e058fdd0d914a61138748b589c0128b45b"
+SRC_URI = "git://github.com/lcdproc/lcdproc \
            "
 
 S = "${WORKDIR}/git"
 
 inherit autotools pkgconfig update-rc.d
 
+COMPATIBLE_HOST_arm_libc-musl = "null"
+
 LCD_DRIVERS ?= "all,!irman,!svga"
 LCD_DEFAULT_DRIVER ?= "curses"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0001-fix-configure-and-compile-failures.patch b/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0001-fix-configure-and-compile-failures.patch
deleted file mode 100644
index 745883e..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0001-fix-configure-and-compile-failures.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 86686ccbf43c5d9e8c8dc97c66ba09e522050e5e Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 27 Jul 2017 10:06:24 +0800
-Subject: [PATCH 1/3] fix configure and compile failures
-
-1. Fix do_configure failure
----------------------------
-|Checking header volume_key/libvolume_key.h existence and usability.
-../tmp/6tvtK.c:1:38: fatal error: volume_key/libvolume_key.h:
-No such file or directory
-| #include <volume_key/libvolume_key.h>
-|Checking header dmraid/dmraid.h existence and usability.../tmp/
-ktVJ6.c:1:27: fatal error: dmraid/dmraid.h: No such file or directory
-| #include <dmraid/dmraid.h>
----------------------------
-We explictly add volume_key and dmraid to DEPENDS, do not need
-configure to test.
-
-2. Fix config.h not found
-Add it to configure.ac
-
-3. Correct AC_DEFINE
-...
-autoheader: warning: missing template: LIBMOUNT_NEW_ERR_API
-autoheader: Use AC_DEFINE([LIBMOUNT_NEW_ERR_API], [], [Description])
-...
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.ac | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index d41a307..b036e04 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -9,6 +9,8 @@ AC_DISABLE_STATIC
- AM_INIT_AUTOMAKE([foreign -Wall -Werror -Wno-syntax -Wno-portability])
- AC_CONFIG_MACRO_DIR([m4])
- 
-+AC_CONFIG_HEADERS([config.h])
-+
- AM_PATH_PYTHON
- 
- AM_PROG_AR
-@@ -154,7 +156,6 @@ LIBBLOCKDEV_PKG_CHECK_MODULES([KMOD], [libkmod >= 19])
- AS_IF([test "x$with_crypto" != "xno"],
-       [LIBBLOCKDEV_PKG_CHECK_MODULES([CRYPTSETUP], [libcryptsetup >= 1.6.7])
-        LIBBLOCKDEV_PKG_CHECK_MODULES([NSS], [nss >= 3.18.0])
--       LIBBLOCKDEV_CHECK_HEADER([volume_key/libvolume_key.h], [$GLIB_CFLAGS $NSS_CFLAGS], [libvolume_key.h not available])
-       ],
-       [])
- 
-@@ -162,10 +163,6 @@ AS_IF([test "x$with_dm" != "xno" -o "x$with_lvm" != "xno" -o "x$with_lvm_dbus" !
-       [LIBBLOCKDEV_PKG_CHECK_MODULES([DEVMAPPER], [devmapper >= 1.02.93])],
-       [])
- 
--AS_IF([test "x$with_dm" != "xno"],
--      [LIBBLOCKDEV_CHECK_HEADER([dmraid/dmraid.h], [], [dmraid.h not available])],
--      [])
--
- AS_IF([test "x$with_part" != "xno" -o "x$with_fs" != "xno"],
-       [LIBBLOCKDEV_PKG_CHECK_MODULES([PARTED], [libparted >= 3.1])]
-       [])
-@@ -174,7 +171,8 @@ AS_IF([test "x$with_fs" != "xno"],
-       [LIBBLOCKDEV_PKG_CHECK_MODULES([MOUNT], [mount >= 2.23.0])
-        # new versions of libmount has some new functions we can use
-        AS_IF([$PKG_CONFIG --atleast-version=2.30.0 mount],
--             [AC_DEFINE([LIBMOUNT_NEW_ERR_API])], [])
-+             [AC_DEFINE([LIBMOUNT_NEW_ERR_API], [1], [new versions of libmount has some new functions we can use])],
-+             [])
- 
-        LIBBLOCKDEV_PKG_CHECK_MODULES([BLKID], [blkid >= 2.23.0])
-        # older versions of libblkid don't support BLKID_SUBLKS_BADCSUM so let's just
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0002-remove-python2-support.patch b/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0002-remove-python2-support.patch
deleted file mode 100644
index 0719759..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0002-remove-python2-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 40dae7ea6450cb30f066da8443eabf063b5b0ad7 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Mon, 8 May 2017 02:05:40 -0400
-Subject: [PATCH 2/3] remove python2 support
-
-Only python3 is required.
-
-Upstream-Status: Inappropriate [wr-installer specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/python/gi/overrides/Makefile.am | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/src/python/gi/overrides/Makefile.am b/src/python/gi/overrides/Makefile.am
-index a2927ac..6385502 100644
---- a/src/python/gi/overrides/Makefile.am
-+++ b/src/python/gi/overrides/Makefile.am
-@@ -1,8 +1,3 @@
--pylibdir = $(shell python -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(1,0,prefix='${exec_prefix}'))")
--
--overridesdir = $(pylibdir)/gi/overrides
--dist_overrides_DATA = BlockDev.py
--
- if WITH_PYTHON3
- py3libdir = $(shell python3 -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(1,0,prefix='${exec_prefix}'))")
- py3overridesdir = $(py3libdir)/gi/overrides
--- 
-1.8.3.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0003-remove-dmraid-while-compiling-with-with-dm.patch b/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0003-remove-dmraid-while-compiling-with-with-dm.patch
deleted file mode 100644
index ac5b5e2..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0003-remove-dmraid-while-compiling-with-with-dm.patch
+++ /dev/null
@@ -1,492 +0,0 @@
-From bda7c937ba544182a5cae2a9cf0c173e0ba268c9 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 27 Jul 2017 09:47:23 +0800
-Subject: [PATCH 3/3] remove dmraid while compiling with --with-dm
-
-Fix the following failure:
-
-...
-Perhaps you should add the directory containing `dmraid.pc'
-to the PKG_CONFIG_PATH environment variable
-No package 'dmraid' found
-...
-
-...
-../../../git/src/plugins/dm.c:24:10: fatal error: dmraid/dmraid.h: No
-such file or directory
- #include <dmraid/dmraid.h>
-          ^~~~~~~~~~~~~~~~~
-...
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/lib/plugin_apis/dm.api          |  50 ------
- src/plugins/Makefile.am             |   2 +-
- src/plugins/dm.c                    | 330 ------------------------------------
- src/plugins/dm.h                    |   5 -
- src/python/gi/overrides/BlockDev.py |   6 -
- 5 files changed, 1 insertion(+), 392 deletions(-)
-
-diff --git a/src/lib/plugin_apis/dm.api b/src/lib/plugin_apis/dm.api
-index 04fd8d8..5d30b6a 100644
---- a/src/lib/plugin_apis/dm.api
-+++ b/src/lib/plugin_apis/dm.api
-@@ -111,53 +111,3 @@ gchar* bd_dm_get_subsystem_from_name (const gchar *device_name, GError **error);
-  * Tech category: %BD_DM_TECH_MAP-%BD_DM_TECH_MODE_QUERY
-  */
- gboolean bd_dm_map_exists (const gchar *map_name, gboolean live_only, gboolean active_only, GError **error);
--
--/**
-- * bd_dm_get_member_raid_sets:
-- * @name: (allow-none): name of the member
-- * @uuid: (allow-none): uuid of the member
-- * @major: major number of the device or -1 if not specified
-- * @minor: minor number of the device or -1 if not specified
-- * @error: (out): variable to store error (if any)
-- *
-- * Returns: (transfer full) (array zero-terminated=1): list of names of the RAID sets related to
-- * the member or %NULL in case of error
-- *
-- * One of @name, @uuid or @major:@minor has to be given.
-- *
-- * Tech category: %BD_DM_TECH_RAID-%BD_DM_TECH_MODE_QUERY
-- */
--gchar** bd_dm_get_member_raid_sets (const gchar *name, const gchar *uuid, gint major, gint minor, GError **error);
--
--/**
-- * bd_dm_activate_raid_set:
-- * @name: name of the DM RAID set to activate
-- * @error: (out): variable to store error (if any)
-- *
-- * Returns: whether the RAID set @name was successfully activate or not
-- *
-- * Tech category: %BD_DM_TECH_RAID-%BD_DM_TECH_CREATE_ACTIVATE
-- */
--gboolean bd_dm_activate_raid_set (const gchar *name, GError **error);
--
--/**
-- * bd_dm_deactivate_raid_set:
-- * @name: name of the DM RAID set to deactivate
-- * @error: (out): variable to store error (if any)
-- *
-- * Returns: whether the RAID set @name was successfully deactivate or not
-- *
-- * Tech category: %BD_DM_TECH_RAID-%BD_DM_TECH_REMOVE_DEACTIVATE
-- */
--gboolean bd_dm_deactivate_raid_set (const gchar *name, GError **error);
--
--/**
-- * bd_dm_get_raid_set_type:
-- * @name: name of the DM RAID set to get the type of
-- * @error: (out): variable to store error (if any)
-- *
-- * Returns: string representation of the @name RAID set's type
-- *
-- * Tech category: %BD_DM_TECH_RAID-%BD_DM_TECH_QUERY
-- */
--gchar* bd_dm_get_raid_set_type (const gchar *name, GError **error);
-diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
-index b69c8f7..7575f4a 100644
---- a/src/plugins/Makefile.am
-+++ b/src/plugins/Makefile.am
-@@ -75,7 +75,7 @@ endif
- 
- if WITH_DM
- libbd_dm_la_CFLAGS = $(GLIB_CFLAGS) $(DEVMAPPER_CFLAGS) $(UDEV_CFLAGS) -Wall -Wextra -Werror
--libbd_dm_la_LIBADD = $(GLIB_LIBS) $(DEVMAPPER_LIBS) $(UDEV_LIBS) -ldmraid ${builddir}/../utils/libbd_utils.la
-+libbd_dm_la_LIBADD = $(GLIB_LIBS) $(DEVMAPPER_LIBS) $(UDEV_LIBS) ${builddir}/../utils/libbd_utils.la
- libbd_dm_la_LDFLAGS = -L${srcdir}/../utils/ -version-info 2:0:0 -Wl,--no-undefined
- # Dear author of libdmdraid, VERSION really is not a good name for an enum member!
- libbd_dm_la_CPPFLAGS = -I${builddir}/../../include/ -UVERSION
-diff --git a/src/plugins/dm.c b/src/plugins/dm.c
-index 0e5466c..31ebe96 100644
---- a/src/plugins/dm.c
-+++ b/src/plugins/dm.c
-@@ -21,17 +21,11 @@
- #include <unistd.h>
- #include <blockdev/utils.h>
- #include <libdevmapper.h>
--#include <dmraid/dmraid.h>
- #include <libudev.h>
- 
- #include "dm.h"
- #include "check_deps.h"
- 
--/* macros taken from the pyblock/dmraid.h file plus one more*/
--#define for_each_raidset(_c, _n) list_for_each_entry(_n, LC_RS(_c), list)
--#define for_each_subset(_rs, _n) list_for_each_entry(_n, &(_rs)->sets, list)
--#define for_each_device(_rs, _d) list_for_each_entry(_d, &(_rs)->devs, devs)
--
- /**
-  * SECTION: dm
-  * @short_description: plugin for basic operations with device mapper
-@@ -380,327 +374,3 @@ gboolean bd_dm_map_exists (const gchar *map_name, gboolean live_only, gboolean a
- 
-     return ret;
- }
--
--/**
-- * init_dmraid_stack: (skip)
-- *
-- * Initializes the dmraid stack by creating the library context, discovering
-- * devices, raid sets, etc.
-- */
--static struct lib_context* init_dmraid_stack (GError **error) {
--    gint rc = 0;
--    gchar *argv[] = {"blockdev.dmraid", NULL};
--    struct lib_context *lc;
--
--    /* the code for this function was cherry-picked from the pyblock code */
--    /* XXX: do this all just once, store global lc and provide a reinit
--     *      function? */
--
--    /* initialize dmraid library context */
--    lc = libdmraid_init (1, (gchar **)argv);
--
--    rc = discover_devices (lc, NULL);
--    if (!rc) {
--        g_set_error (error, BD_DM_ERROR, BD_DM_ERROR_RAID_FAIL,
--                     "Failed to discover devices");
--        libdmraid_exit (lc);
--        return NULL;
--    }
--    discover_raid_devices (lc, NULL);
--
--    if (!count_devices (lc, RAID)) {
--        g_set_error (error, BD_DM_ERROR, BD_DM_ERROR_RAID_NO_DEVS,
--                     "No RAIDs discovered");
--        libdmraid_exit (lc);
--        return NULL;
--    }
--
--    argv[0] = NULL;
--    if (!group_set (lc, argv)) {
--        g_set_error (error, BD_DM_ERROR, BD_DM_ERROR_RAID_FAIL,
--                     "Failed to group_set");
--        libdmraid_exit (lc);
--        return NULL;
--    }
--
--    return lc;
--}
--
--/**
-- * raid_dev_matches_spec: (skip)
-- *
-- * Returns: whether the device specified by @sysname matches the spec given by @name,
-- *          @uuid, @major and @minor
-- */
--static gboolean raid_dev_matches_spec (struct raid_dev *raid_dev, const gchar *name, const gchar *uuid, gint major, gint minor) {
--    gchar const *dev_name = NULL;
--    gchar const *dev_uuid;
--    gchar const *major_str;
--    gchar const *minor_str;
--    struct udev *context;
--    struct udev_device *device;
--    gboolean ret = TRUE;
--
--    /* find the second '/' to get name (the rest of the string) */
--    dev_name = strchr (raid_dev->di->path, '/');
--    if (dev_name && strlen (dev_name) > 1) {
--        dev_name++;
--        dev_name = strchr (dev_name, '/');
--    }
--    if (dev_name && strlen (dev_name) > 1) {
--        dev_name++;
--    }
--    else
--        dev_name = NULL;
--
--    /* if we don't have the name, we cannot check any match */
--    g_return_val_if_fail (dev_name, FALSE);
--
--    /* g_return_val_if_fail above checks value of dev_name and returns FALSE if
--     * it is NULL so we don't need to check it here */
--    /* coverity[var_deref_model] */
--    if (name && strcmp (dev_name, name) != 0) {
--        return FALSE;
--    }
--
--    context = udev_new ();
--    device = udev_device_new_from_subsystem_sysname (context, "block", dev_name);
--    dev_uuid = udev_device_get_property_value (device, "UUID");
--    major_str = udev_device_get_property_value (device, "MAJOR");
--    minor_str = udev_device_get_property_value (device, "MINOR");
--
--    if (uuid && (g_strcmp0 (uuid, "") != 0) && (g_strcmp0 (uuid, dev_uuid) != 0))
--        ret = FALSE;
--
--    if (major >= 0 && (atoi (major_str) != major))
--        ret = FALSE;
--
--    if (minor >= 0 && (atoi (minor_str) != minor))
--        ret = FALSE;
--
--    udev_device_unref (device);
--    udev_unref (context);
--
--    return ret;
--}
--
--/**
-- * find_raid_sets_for_dev: (skip)
-- */
--static void find_raid_sets_for_dev (const gchar *name, const gchar *uuid, gint major, gint minor, struct lib_context *lc, struct raid_set *rs, GPtrArray *ret_sets) {
--    struct raid_set *subset = NULL;
--    struct raid_dev *dev = NULL;
--
--    if (T_GROUP(rs) || !list_empty(&(rs->sets))) {
--        for_each_subset (rs, subset)
--            find_raid_sets_for_dev (name, uuid, major, minor, lc, subset, ret_sets);
--    } else {
--        for_each_device (rs, dev) {
--            if (raid_dev_matches_spec (dev, name, uuid, major, minor))
--                g_ptr_array_add (ret_sets, g_strdup (rs->name));
--        }
--    }
--}
--
--/**
-- * bd_dm_get_member_raid_sets:
-- * @name: (allow-none): name of the member
-- * @uuid: (allow-none): uuid of the member
-- * @major: major number of the device or -1 if not specified
-- * @minor: minor number of the device or -1 if not specified
-- * @error: (out): variable to store error (if any)
-- *
-- * Returns: (transfer full) (array zero-terminated=1): list of names of the RAID sets related to
-- * the member or %NULL in case of error
-- *
-- * One of @name, @uuid or @major:@minor has to be given.
-- *
-- * Tech category: %BD_DM_TECH_RAID-%BD_DM_TECH_MODE_QUERY
-- */
--gchar** bd_dm_get_member_raid_sets (const gchar *name, const gchar *uuid, gint major, gint minor, GError **error) {
--    guint64 i = 0;
--    struct lib_context *lc = NULL;
--    struct raid_set *rs = NULL;
--    GPtrArray *ret_sets = g_ptr_array_new ();
--    gchar **ret = NULL;
--
--    lc = init_dmraid_stack (error);
--    if (!lc)
--        /* error is already populated */
--        return NULL;
--
--    for_each_raidset (lc, rs) {
--        find_raid_sets_for_dev (name, uuid, major, minor, lc, rs, ret_sets);
--    }
--
--    /* now create the return value -- NULL-terminated array of strings */
--    ret = g_new0 (gchar*, ret_sets->len + 1);
--    for (i=0; i < ret_sets->len; i++)
--        ret[i] = (gchar*) g_ptr_array_index (ret_sets, i);
--    ret[i] = NULL;
--
--    g_ptr_array_free (ret_sets, FALSE);
--
--    libdmraid_exit (lc);
--    return ret;
--}
--
--/**
-- * find_in_raid_sets: (skip)
-- *
-- * Runs @eval_fn with @data on each set (traversing recursively) and returns the
-- * first RAID set that @eval_fn returns. Thus the @eval_fn should return %NULL
-- * on all RAID sets that don't fulfill the search criteria.
-- */
--static struct raid_set* find_in_raid_sets (struct raid_set *rs, RSEvalFunc eval_fn, gpointer data) {
--    struct raid_set *subset = NULL;
--    struct raid_set *ret = NULL;
--
--    ret = eval_fn (rs, data);
--    if (ret)
--        return ret;
--
--    if (T_GROUP(rs) || !list_empty(&(rs->sets))) {
--        for_each_subset (rs, subset) {
--            ret = find_in_raid_sets (subset, eval_fn, data);
--            if (ret)
--                return ret;
--        }
--    }
--
--    return ret;
--}
--
--static struct raid_set* rs_matches_name (struct raid_set *rs, gpointer *name_data) {
--    gchar *name = (gchar*) name_data;
--
--    if (g_strcmp0 (rs->name, name) == 0)
--        return rs;
--    else
--        return NULL;
--}
--
--static gboolean change_set_by_name (const gchar *name, enum activate_type action, GError **error) {
--    gint rc = 0;
--    struct lib_context *lc = NULL;
--    struct raid_set *iter_rs = NULL;
--    struct raid_set *match_rs = NULL;
--
--    lc = init_dmraid_stack (error);
--    if (!lc)
--        /* error is already populated */
--        return FALSE;
--
--    for_each_raidset (lc, iter_rs) {
--        match_rs = find_in_raid_sets (iter_rs, (RSEvalFunc)rs_matches_name, (gchar *)name);
--        if (match_rs)
--            break;
--    }
--
--    if (!match_rs) {
--        g_set_error (error, BD_DM_ERROR, BD_DM_ERROR_RAID_NO_EXIST,
--                     "RAID set %s doesn't exist", name);
--        libdmraid_exit (lc);
--        return FALSE;
--    }
--
--    rc = change_set (lc, action, match_rs);
--    if (!rc) {
--        g_set_error (error, BD_DM_ERROR, BD_DM_ERROR_RAID_FAIL,
--                     "Failed to activate the RAID set '%s'", name);
--        libdmraid_exit (lc);
--        return FALSE;
--    }
--
--    libdmraid_exit (lc);
--    return TRUE;
--}
--
--/**
-- * bd_dm_activate_raid_set:
-- * @name: name of the DM RAID set to activate
-- * @error: (out): variable to store error (if any)
-- *
-- * Returns: whether the RAID set @name was successfully activate or not
-- *
-- * Tech category: %BD_DM_TECH_RAID-%BD_DM_TECH_CREATE_ACTIVATE
-- */
--gboolean bd_dm_activate_raid_set (const gchar *name, GError **error) {
--    guint64 progress_id = 0;
--    gchar *msg = NULL;
--    gboolean ret = FALSE;
--
--    msg = g_strdup_printf ("Activating DM RAID set '%s'", name);
--    progress_id = bd_utils_report_started (msg);
--    g_free (msg);
--    ret = change_set_by_name (name, A_ACTIVATE, error);
--    bd_utils_report_finished (progress_id, "Completed");
--    return ret;
--}
--
--/**
-- * bd_dm_deactivate_raid_set:
-- * @name: name of the DM RAID set to deactivate
-- * @error: (out): variable to store error (if any)
-- *
-- * Returns: whether the RAID set @name was successfully deactivate or not
-- *
-- * Tech category: %BD_DM_TECH_RAID-%BD_DM_TECH_REMOVE_DEACTIVATE
-- */
--gboolean bd_dm_deactivate_raid_set (const gchar *name, GError **error) {
--    guint64 progress_id = 0;
--    gchar *msg = NULL;
--    gboolean ret = FALSE;
--
--    msg = g_strdup_printf ("Deactivating DM RAID set '%s'", name);
--    progress_id = bd_utils_report_started (msg);
--    g_free (msg);
--    ret = change_set_by_name (name, A_DEACTIVATE, error);
--    bd_utils_report_finished (progress_id, "Completed");
--    return ret;
--}
--
--/**
-- * bd_dm_get_raid_set_type:
-- * @name: name of the DM RAID set to get the type of
-- * @error: (out): variable to store error (if any)
-- *
-- * Returns: string representation of the @name RAID set's type
-- *
-- * Tech category: %BD_DM_TECH_RAID-%BD_DM_TECH_QUERY
-- */
--gchar* bd_dm_get_raid_set_type (const gchar *name, GError **error) {
--    struct lib_context *lc = NULL;
--    struct raid_set *iter_rs = NULL;
--    struct raid_set *match_rs = NULL;
--    const gchar *type = NULL;
--
--    lc = init_dmraid_stack (error);
--    if (!lc)
--        /* error is already populated */
--        return NULL;
--
--    for_each_raidset (lc, iter_rs) {
--        match_rs = find_in_raid_sets (iter_rs, (RSEvalFunc)rs_matches_name, (gchar *)name);
--        if (match_rs)
--            break;
--    }
--
--    if (!match_rs) {
--        g_set_error (error, BD_DM_ERROR, BD_DM_ERROR_RAID_NO_EXIST,
--                     "RAID set %s doesn't exist", name);
--        libdmraid_exit (lc);
--        return NULL;
--    }
--
--    type = get_set_type (lc, match_rs);
--    if (!type) {
--        g_set_error (error, BD_DM_ERROR, BD_DM_ERROR_RAID_FAIL,
--                     "Failed to get RAID set's type");
--        libdmraid_exit (lc);
--        return NULL;
--    }
--
--    libdmraid_exit (lc);
--    return g_strdup (type);
--}
-diff --git a/src/plugins/dm.h b/src/plugins/dm.h
-index 0dce6ac..1ee3788 100644
---- a/src/plugins/dm.h
-+++ b/src/plugins/dm.h
-@@ -1,5 +1,4 @@
- #include <glib.h>
--#include <dmraid/dmraid.h>
- 
- #ifndef BD_DM
- #define BD_DM
-@@ -48,9 +47,5 @@ gboolean bd_dm_map_exists (const gchar *map_name, gboolean live_only, gboolean a
- gchar* bd_dm_name_from_node (const gchar *dm_node, GError **error);
- gchar* bd_dm_node_from_name (const gchar *map_name, GError **error);
- gchar* bd_dm_get_subsystem_from_name (const gchar *device_name, GError **error);
--gchar** bd_dm_get_member_raid_sets (const gchar *name, const gchar *uuid, gint major, gint minor, GError **error);
--gboolean bd_dm_activate_raid_set (const gchar *name, GError **error);
--gboolean bd_dm_deactivate_raid_set (const gchar *name, GError **error);
--gchar* bd_dm_get_raid_set_type (const gchar *name, GError **error);
- 
- #endif  /* BD_DM */
-diff --git a/src/python/gi/overrides/BlockDev.py b/src/python/gi/overrides/BlockDev.py
-index fb3ffb4..eed0a38 100644
---- a/src/python/gi/overrides/BlockDev.py
-+++ b/src/python/gi/overrides/BlockDev.py
-@@ -233,12 +233,6 @@ def dm_create_linear(map_name, device, length, uuid=None):
-     return _dm_create_linear(map_name, device, length, uuid)
- __all__.append("dm_create_linear")
- 
--_dm_get_member_raid_sets = BlockDev.dm_get_member_raid_sets
--@override(BlockDev.dm_get_member_raid_sets)
--def dm_get_member_raid_sets(name=None, uuid=None, major=-1, minor=-1):
--    return _dm_get_member_raid_sets(name, uuid, major, minor)
--__all__.append("dm_get_member_raid_sets")
--
- 
- _loop_setup = BlockDev.loop_setup
- @override(BlockDev.loop_setup)
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0004-fix-compile-failure-against-musl-C-library.patch b/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0004-fix-compile-failure-against-musl-C-library.patch
deleted file mode 100644
index 0b5b809..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0004-fix-compile-failure-against-musl-C-library.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 59fbd57acd1df25b1972a131dc6a77a4fe147729 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 27 Jul 2017 10:45:02 +0800
-Subject: [PATCH] fix compile failure against musl C library
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/plugins/crypto.c | 2 +-
- src/plugins/part.c   | 3 ++-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/plugins/crypto.c b/src/plugins/crypto.c
-index b961471..2d3d251 100644
---- a/src/plugins/crypto.c
-+++ b/src/plugins/crypto.c
-@@ -22,7 +22,7 @@
- #include <libcryptsetup.h>
- #include <nss.h>
- #include <volume_key/libvolume_key.h>
--#include <sys/fcntl.h>
-+#include <fcntl.h>
- #include <sys/ioctl.h>
- #include <linux/random.h>
- #include <locale.h>
-diff --git a/src/plugins/part.c b/src/plugins/part.c
-index 6b2a690..ab490d9 100644
---- a/src/plugins/part.c
-+++ b/src/plugins/part.c
-@@ -25,6 +25,7 @@
- #include <inttypes.h>
- #include <unistd.h>
- #include <sys/file.h>
-+#include <fcntl.h>
- #include <sys/ioctl.h>
- #include <linux/fs.h>
- #include <blockdev/utils.h>
-@@ -1354,7 +1355,7 @@ static gboolean set_gpt_flags (const gchar *device, int part_num, guint64 flags,
-         real_flags |= 0x4000000000000000; /* 1 << 62 */
-     if (flags & BD_PART_FLAG_GPT_NO_AUTOMOUNT)
-         real_flags |= 0x8000000000000000; /* 1 << 63 */
--    mask_str = g_strdup_printf ("%.16"__PRI64_PREFIX"x", real_flags);
-+    mask_str = g_strdup_printf ("%.16"__PRI64"x", real_flags);
- 
-     args[2] = g_strdup_printf ("%d:=:%s", part_num, mask_str);
-     g_free (mask_str);
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0005-fix-a-clang-compiling-issue.patch b/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0005-fix-a-clang-compiling-issue.patch
deleted file mode 100644
index b214f0b..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/files/0005-fix-a-clang-compiling-issue.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 9b4a7a4d0653b627d747e00d6b3ada2990caa1d3 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 9 Aug 2017 13:57:57 +0800
-Subject: [PATCH] fix a clang compiling issue
-
-[snip]
-../../../git/src/plugins/fs.c:2617:26: error: missing field 'start'
-initializer [-Werror,-Wmissing-field-initializers]
-    PedGeometry geom = {0};
-                         ^
-../../../git/src/plugins/fs.c:2618:30: error: missing field 'start'
-initializer [-Werror,-Wmissing-field-initializers]
-    PedGeometry new_geom = {0};
-[snip]
-
-Fix typo s/enum libvk_packet_format format/enum libvk_secret secret_type/
-
-Upstream-Status: Submitted [https://github.com/storaged-project/libblockdev/pull/266]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/plugins/crypto.c  | 6 +++---
- src/plugins/fs/vfat.c | 4 ++--
- src/plugins/part.c    | 4 ++--
- src/utils/exec.c      | 2 +-
- 4 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/plugins/crypto.c b/src/plugins/crypto.c
-index 563093e..b961471 100644
---- a/src/plugins/crypto.c
-+++ b/src/plugins/crypto.c
-@@ -970,7 +970,7 @@ gboolean bd_crypto_tc_open (const gchar *device, const gchar *name, const guint8
-     gint ret = 0;
-     guint64 progress_id = 0;
-     gchar *msg = NULL;
--    struct crypt_params_tcrypt params = {0};
-+    struct crypt_params_tcrypt params = {NULL,0,NULL,0,NULL,NULL,NULL,0,0};
- 
-     msg = g_strdup_printf ("Started opening '%s' TrueCrypt/VeraCrypt device", device);
-     progress_id = bd_utils_report_started (msg);
-@@ -1090,7 +1090,7 @@ static gchar *replace_char (gchar *str, gchar orig, gchar new) {
-     return str;
- }
- 
--static gboolean write_escrow_data_file (struct libvk_volume *volume, struct libvk_ui *ui, enum libvk_packet_format format, const gchar *out_path,
-+static gboolean write_escrow_data_file (struct libvk_volume *volume, struct libvk_ui *ui, enum libvk_secret secret_type, const gchar *out_path,
-                                         CERTCertificate *cert, GError **error) {
-     gpointer packet_data = NULL;
-     gsize packet_data_size = 0;
-@@ -1099,7 +1099,7 @@ static gboolean write_escrow_data_file (struct libvk_volume *volume, struct libv
-     gsize bytes_written = 0;
-     GError *tmp_error = NULL;
- 
--    packet_data = libvk_volume_create_packet_asymmetric_with_format (volume, &packet_data_size, format, cert,
-+    packet_data = libvk_volume_create_packet_asymmetric_with_format (volume, &packet_data_size, secret_type, cert,
-                                                                      ui, LIBVK_PACKET_FORMAT_ASYMMETRIC_WRAP_SECRET_ONLY, error);
- 
-     if (!packet_data) {
-diff --git a/src/plugins/fs/vfat.c b/src/plugins/fs/vfat.c
-index 3ed7d4a..5ff7795 100644
---- a/src/plugins/fs/vfat.c
-+++ b/src/plugins/fs/vfat.c
-@@ -376,8 +376,8 @@ BDFSVfatInfo* bd_fs_vfat_get_info (const gchar *device, GError **error) {
-  */
- gboolean bd_fs_vfat_resize (const gchar *device, guint64 new_size, GError **error) {
-     PedDevice *ped_dev = NULL;
--    PedGeometry geom = {0};
--    PedGeometry new_geom = {0};
-+    PedGeometry geom = {NULL, 0, 0, 0};
-+    PedGeometry new_geom = {NULL, 0, 0, 0};
-     PedFileSystem *fs = NULL;
-     PedSector start = 0;
-     PedSector length = 0;
-diff --git a/src/plugins/part.c b/src/plugins/part.c
-index fed8300..6b2a690 100644
---- a/src/plugins/part.c
-+++ b/src/plugins/part.c
-@@ -926,7 +926,7 @@ static PedPartition* add_part_to_disk (PedDevice *dev, PedDisk *disk, BDPartType
-         return NULL;
-     }
- 
--    part = ped_partition_new (disk, type, NULL, geom->start, geom->end);
-+    part = ped_partition_new (disk, (PedPartitionType)type, NULL, geom->start, geom->end);
-     if (!part) {
-         set_parted_error (error, BD_PART_ERROR_FAIL);
-         g_prefix_error (error, "Failed to create new partition on device '%s'", dev->path);
-@@ -1564,7 +1564,7 @@ gboolean bd_part_set_part_flags (const gchar *disk, const gchar *part, guint64 f
-     PedPartition *ped_part = NULL;
-     const gchar *part_num_str = NULL;
-     gint part_num = 0;
--    guint64 i = 0;
-+    int i = 0;
-     gint status = 0;
-     gboolean ret = FALSE;
-     guint64 progress_id = 0;
-diff --git a/src/utils/exec.c b/src/utils/exec.c
-index 11c1489..dcf87e5 100644
---- a/src/utils/exec.c
-+++ b/src/utils/exec.c
-@@ -354,7 +354,7 @@ gboolean bd_utils_exec_and_report_progress (const gchar **argv, const BDExtraArg
-     GIOStatus io_status = G_IO_STATUS_NORMAL;
-     guint i = 0;
-     guint8 completion = 0;
--    GPollFD fds[2] = {{0}, {0}};
-+    GPollFD fds[2] = {{0,0,0}, {0,0,0}};
-     gboolean out_done = FALSE;
-     gboolean err_done = FALSE;
-     GString *stdout_data = g_string_new (NULL);
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.16.bb b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.16.bb
deleted file mode 100644
index 0c954aa..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.16.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-DESCRIPTION = "libblockdev is a C library supporting GObject introspection for manipulation of \
-block devices. It has a plugin-based architecture where each technology (like \
-LVM, Btrfs, MD RAID, Swap,...) is implemented in a separate plugin, possibly \
-with multiple implementations (e.g. using LVM CLI or the new LVM DBus API)."
-HOMEPAGE = "http://rhinstaller.github.io/libblockdev/"
-LICENSE = "LGPLv2+"
-SECTION = "devel/lib"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
-
-inherit autotools python3native gobject-introspection
-
-DEPENDS += " \
-    cryptsetup \
-    nss \
-    volume-key \
-    libbytesize \
-    btrfs-tools \
-"
-
-SRCREV = "e2e0899efe8dd3f111ff955fb6c1dc10b0bd2075"
-SRC_URI = " \
-    git://github.com/rhinstaller/libblockdev;branch=master \
-    file://0001-fix-configure-and-compile-failures.patch \
-    file://0002-remove-python2-support.patch \
-    file://0003-remove-dmraid-while-compiling-with-with-dm.patch \
-    file://0005-fix-a-clang-compiling-issue.patch \
-"
-SRC_URI_append_libc-musl = " \
-    file://0004-fix-compile-failure-against-musl-C-library.patch \
-"
-
-S = "${WORKDIR}/git"
-
-RDEPENDS_${PN} += " \
-    lvm2 \
-"
-
-FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
-
-PACKAGECONFIG ??= "python3 lvm dm kmod parted fs"
-PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
-PACKAGECONFIG[lvm] = "--with-lvm, --without-lvm, multipath-tools"
-PACKAGECONFIG[dm] = "--with-dm, --without-dm"
-PACKAGECONFIG[kmod] = "--with-kbd, --without-kbd, kmod"
-PACKAGECONFIG[parted] = "--with-part, --without-part, parted"
-PACKAGECONFIG[fs] = "--with-fs, --without-fs, util-linux"
-PACKAGECONFIG[doc] = "--with-gtk-doc, --without-gtk-doc, gtk-doc-native"
-
-export GIR_EXTRA_LIBS_PATH="${B}/src/utils/.libs"
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.18.bb b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.18.bb
new file mode 100644
index 0000000..35f0cc0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.18.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "libblockdev is a C library supporting GObject introspection for manipulation of \
+block devices. It has a plugin-based architecture where each technology (like \
+LVM, Btrfs, MD RAID, Swap,...) is implemented in a separate plugin, possibly \
+with multiple implementations (e.g. using LVM CLI or the new LVM DBus API)."
+HOMEPAGE = "http://rhinstaller.github.io/libblockdev/"
+LICENSE = "LGPLv2+"
+SECTION = "devel/lib"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
+
+inherit autotools python3native gobject-introspection
+
+SRCREV = "0debeb45562ac3d8f6f43f6f942b238abab55be9"
+SRC_URI = " \
+    git://github.com/rhinstaller/libblockdev;branch=master \
+"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
+
+PACKAGECONFIG ??= "python3 lvm dm kmod parted fs escrow btrfs crypto mdraid kbd mpath"
+PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
+PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python2"
+PACKAGECONFIG[lvm] = "--with-lvm, --without-lvm, multipath-tools, lvm2"
+PACKAGECONFIG[lvm-dbus] = "--with-lvm_dbus, --without-lvm_dbus, multipath-tools, lvm2"
+PACKAGECONFIG[dm] = "--with-dm, --without-dm, multipath-tools, lvm2"
+PACKAGECONFIG[dmraid] = "--with-dmraid, --without-dmraid"
+PACKAGECONFIG[kmod] = "--with-kbd, --without-kbd, kmod"
+PACKAGECONFIG[parted] = "--with-part, --without-part, parted"
+PACKAGECONFIG[fs] = "--with-fs, --without-fs, util-linux"
+PACKAGECONFIG[doc] = "--with-gtk-doc, --without-gtk-doc, gtk-doc-native"
+PACKAGECONFIG[nvdimm] = "--with-nvdimm, --without-nvdimm"
+PACKAGECONFIG[vdo] = "--with-vdo, --without-vdo"
+PACKAGECONFIG[escrow] = "--with-escrow, --without-escrow, nss volume-key"
+PACKAGECONFIG[btrfs] = "--with-btrfs,--without-btrfs,libbytesize btrfs-tools"
+PACKAGECONFIG[crypto] = "--with-crypto,--without-crypto,cryptsetup nss volume-key"
+PACKAGECONFIG[mdraid] = "--with-mdraid,--without-mdraid,libbytesize"
+PACKAGECONFIG[kbd] = "--with-kbd,--without-kbd,libbytesize"
+PACKAGECONFIG[mpath] = "--with-mpath,--without-mpath, multipath-tools, lvm2"
+
+export GIR_EXTRA_LIBS_PATH="${B}/src/utils/.libs"
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/libcec/files/0001-Explicitly-use-python3-in-pyCecClient.patch b/meta-openembedded/meta-oe/recipes-extended/libcec/files/0001-Explicitly-use-python3-in-pyCecClient.patch
new file mode 100644
index 0000000..ec1f5d0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libcec/files/0001-Explicitly-use-python3-in-pyCecClient.patch
@@ -0,0 +1,24 @@
+From 16e8c072709572ccefa6c7f835136db01f031323 Mon Sep 17 00:00:00 2001
+From: Pascal Bach <pascal.bach@siemens.com>
+Date: Fri, 28 Sep 2018 16:56:14 +0200
+Subject: [PATCH] Explicitly use python3 in pyCecClient
+
+Upstream-Status: Submitted [https://github.com/Pulse-Eight/libcec/pull/433]
+
+---
+ src/pyCecClient/pyCecClient.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/pyCecClient/pyCecClient.py b/src/pyCecClient/pyCecClient.py
+index 6d47857..d0504ac 100755
+--- a/src/pyCecClient/pyCecClient.py
++++ b/src/pyCecClient/pyCecClient.py
+@@ -1,4 +1,4 @@
+-#! /usr/bin/python
++#! /usr/bin/python3
+ ## demo of the python-libcec API
+ 
+ # This file is part of the libCEC(R) library.
+-- 
+2.11.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/libcec/files/python-install-location.patch b/meta-openembedded/meta-oe/recipes-extended/libcec/files/python-install-location.patch
deleted file mode 100644
index b6be78d..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libcec/files/python-install-location.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 330fa6777d51d41eefacff8e98e4250d210fde35 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Javi=20Mart=C3=ADnez?= <javi@flamingalah.net>
-Date: Tue, 13 Dec 2016 22:31:13 +0100
-Subject: [PATCH] Improve/fix installation of Python bindings
-
-Upstream-Status: Backport
-
-dist-packages is a Debian-specific directory for distribution packages (and used in derivatives such as Ubuntu). Therefore changed to site-packages.
----
- src/libcec/cmake/CheckPlatformSupport.cmake | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/libcec/cmake/CheckPlatformSupport.cmake b/src/libcec/cmake/CheckPlatformSupport.cmake
-index fcd0ef7..7661107 100644
---- a/src/libcec/cmake/CheckPlatformSupport.cmake
-+++ b/src/libcec/cmake/CheckPlatformSupport.cmake
-@@ -195,9 +195,9 @@ else()
-               RENAME      __init__.py)
-     else()
-       install(TARGETS     ${SWIG_MODULE_cec_REAL_NAME}
--              DESTINATION lib/python${PYTHON_VERSION}/dist-packages/cec)
-+              DESTINATION lib/python${PYTHON_VERSION}/site-packages/cec)
-       install(FILES       ${CMAKE_BINARY_DIR}/src/libcec/cec.py
--              DESTINATION lib/python${PYTHON_VERSION}/dist-packages/cec
-+              DESTINATION lib/python${PYTHON_VERSION}/site-packages/cec
-               RENAME      __init__.py)
-     endif()
-   endif()
diff --git a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
index cb65caa..4ad4997 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
@@ -4,24 +4,30 @@
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=e61fd86f9c947b430126181da2c6c715"
 
-DEPENDS = "p8platform udev lockdev ncurses swig-native python3"
+DEPENDS = "p8platform udev ncurses swig-native python3"
 
 DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libx11 libxrandr', '', d)}"
 DEPENDS_append_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', ' userland', d)}"
 
-PV = "4.0.1+gitr${SRCPV}"
+PV = "4.0.2+gitr${SRCPV}"
 
-SRCREV = "2fc92b5f02dca702da92ccc5ed7b805b240ef5df"
+SRCREV = "0a97062dd4b196ceeb003ec41841c7a7edc36dd1"
 SRC_URI = "git://github.com/Pulse-Eight/libcec.git \
-           file://python-install-location.patch"
+           file://0001-Explicitly-use-python3-in-pyCecClient.patch"
 
 S = "${WORKDIR}/git"
 
 inherit cmake pkgconfig
 
+# Put client tools into a separate package
+PACKAGE_BEFORE_PN += "${PN}-tools"
+FILES_${PN}-tools = "${bindir}"
+RDEPENDS_${PN}-tools = "python3-${BPN}"
+
 # Create the wrapper for python3
 PACKAGES += "python3-${BPN}"
-FILES_python3-${BPN} = "${libdir}/python3*"
+FILES_python3-${BPN} = "${libdir}/python3* ${bindir}/py*"
+RDEPENDS_${PN} = "python3-core"
 
 # cec-client and xbmc need the .so present to work :(
 FILES_${PN} += "${libdir}/*.so"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.5.bb b/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.5.bb
deleted file mode 100644
index fb6e50e..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.5.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.2.bb b/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.2.bb
new file mode 100644
index 0000000..eb0a2c3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libconfig/libconfig_1.7.2.bb
@@ -0,0 +1,19 @@
+SUMMARY = "C/C++ Configuration File Library"
+DESCRIPTION = "Library for manipulating structured configuration files"
+HOMEPAGE = "https://hyperrealm.github.io/libconfig/"
+BUGTRACKER = "https://github.com/hyperrealm/libconfig/issues"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=fad9b3332be894bab9bc501572864b29"
+
+SRC_URI = "https://hyperrealm.github.io/libconfig/dist/libconfig-${PV}.tar.gz"
+
+inherit autotools-brokensep pkgconfig
+
+SRC_URI[md5sum] = "6bd98ee3a6e6b9126c82c916d7a9e690"
+SRC_URI[sha256sum] = "7c3c7a9c73ff3302084386e96f903eb62ce06953bb1666235fac74363a16fad9"
+
+FILES_${PN}_append = " \
+    ${libdir}/cmake \
+"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/0001-Fix-warnings-found-with-clang.patch b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/0001-Fix-warnings-found-with-clang.patch
deleted file mode 100644
index f8114a0..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/0001-Fix-warnings-found-with-clang.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From ad1be542b87b3186f8ef7bee2c594daefe5bb4c8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 18 Oct 2016 21:31:40 +0000
-Subject: [PATCH] Fix warnings found with clang
-
-| /mnt/oe/openembedded-core/build/workspace/sources/libplist/src/base64.c:107:12: error: non-void function 'base64decode' should return a value [-Wreturn-type]
-|         if (!buf) return;
-|                   ^
-| /mnt/oe/openembedded-core/build/workspace/sources/libplist/src/base64.c:109:16: error: non-void function 'base64decode' should return a value [-Wreturn-type]
-|         if (len <= 0) return;
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libcnary/node.c | 2 +-
- src/base64.c    | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/libcnary/node.c b/libcnary/node.c
-index 1f9f669..d6f3f63 100644
---- a/libcnary/node.c
-+++ b/libcnary/node.c
-@@ -104,7 +104,7 @@ int node_detach(node_t* parent, node_t* child) {
- 
- int node_insert(node_t* parent, unsigned int index, node_t* child)
- {
--	if (!parent || !child) return;
-+	if (!parent || !child) return -1;
- 	child->isLeaf = TRUE;
- 	child->isRoot = FALSE;
- 	child->parent = parent;
-diff --git a/src/base64.c b/src/base64.c
-index 65c6061..531a06a 100644
---- a/src/base64.c
-+++ b/src/base64.c
-@@ -104,9 +104,9 @@ static int base64decode_block(unsigned char *target, const char *data, size_t da
- 
- unsigned char *base64decode(const char *buf, size_t *size)
- {
--	if (!buf) return;
-+	if (!buf) return 0;
- 	size_t len = strlen(buf);
--	if (len <= 0) return;
-+	if (len <= 0) return 0;
- 	unsigned char *outbuf = (unsigned char*)malloc((len/4)*3+3);
- 
- 	unsigned char *line;
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/fix-parallel-make.patch b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/fix-parallel-make.patch
deleted file mode 100644
index f6ef6f4..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/files/fix-parallel-make.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_1.8.bb b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb
similarity index 67%
rename from meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_1.8.bb
rename to meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb
index f789796..43c1fd5 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_1.8.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb
@@ -6,15 +6,13 @@
 
 DEPENDS = "libxml2 glib-2.0 swig python"
 
-inherit cmake pkgconfig
+inherit autotools pkgconfig pythonnative
 
-SRC_URI = "http://www.libimobiledevice.org/downloads/libplist-${PV}.tar.bz2 \
-           file://fix-parallel-make.patch \
-           file://0001-Fix-warnings-found-with-clang.patch \
+SRCREV = "62ec804736435fa34e37e66e228e17e2aacee1d7"
+SRC_URI = "git://github.com/libimobiledevice/libplist;protocol=https \
            "
 
-SRC_URI[md5sum] = "2a9e0258847d50f9760dc3ece25f4dc6"
-SRC_URI[sha256sum] = "a418da3880308199b74766deef2a760a9b169b81a868a6a9032f7614e20500ec"
+S = "${WORKDIR}/git"
 
 do_install_append () {
     if [ -e ${D}${libdir}/python*/site-packages/plist/_plist.so ]; then
diff --git a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libusbmuxd_git.bb b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libusbmuxd_git.bb
new file mode 100644
index 0000000..36fc5c8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libusbmuxd_git.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "This daemon is in charge of multiplexing connections over USB to an iPhone or iPod touch."
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6ab17b41640564434dda85c06b7124f7"
+
+DEPENDS = "udev libusb1 libplist"
+
+inherit autotools pkgconfig gitpkgv
+
+PKGV = "${GITPKGVTAG}"
+
+SRCREV = "78df9be5fc8222ed53846cb553de9b5d24c85c6c"
+SRC_URI = "git://github.com/libimobiledevice/libusbmuxd;protocol=https"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "${base_libdir}/udev/rules.d/"
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/install.patch b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/install.patch
deleted file mode 100644
index a9319ff..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/install.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#
-# 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/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/ldflags.patch b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/ldflags.patch
deleted file mode 100644
index eb1d147..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/ldflags.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# 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/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-install-so-to-man-dir.patch b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-install-so-to-man-dir.patch
deleted file mode 100644
index 27f760c..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-install-so-to-man-dir.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-nfslib-and-soname.patch b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-nfslib-and-soname.patch
deleted file mode 100644
index ffd7a40..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/liblockfile-fix-nfslib-and-soname.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-add-DESTDIR.patch b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-add-DESTDIR.patch
new file mode 100644
index 0000000..ea415dd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-add-DESTDIR.patch
@@ -0,0 +1,54 @@
+From 67843dabe1177840697839b916fd899218893ec7 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Thu, 19 Jul 2018 00:25:23 -0700
+Subject: [PATCH] Makefile.in: add DESTDIR
+
+Add DESTDIR to fix below error during do_install
+
+| install -d -m 755 -g root -p /usr/include
+| install -d -m 755 -g root -p /usr/lib
+| install -d -m 755 -g root -p /usr/bin
+| install -m 755 nfslock.so.0.1 /usr/lib
+| install -d -m 755 -g root -p /usr/share/man/man1
+| install: cannot create regular file '/usr/lib/nfslock.so.0.1': Permission denied
+| Makefile:78: recipe for target 'install_nfslib' failed
+| make: *** [install_nfslib] Error 1
+| make: *** Waiting for unfinished jobs....
+| install -d -m 755 -g root -p /usr/share/man/man3
+| install -m 644 lockfile.h maillock.h /usr/include
+| install: cannot create regular file '/usr/include/lockfile.h': Permission denied
+| install: cannot create regular file '/usr/include/maillock.h': Permission denied
+| Makefile:64: recipe for target 'install_common' failed
+| make: *** [install_common] Error 1
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.in | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 36a6d23..1e4130e 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -12,11 +12,11 @@ CC		= @CC@
+ 
+ prefix		= $(DESTDIR)@prefix@
+ exec_prefix	= @exec_prefix@
+-bindir		= @bindir@
+-libdir		= @libdir@
+-mandir		= @mandir@
+-nfslockdir	= @nfslockdir@
+-includedir	= @includedir@
++bindir		= $(DESTDIR)@bindir@
++libdir		= $(DESTDIR)@libdir@
++mandir		= $(DESTDIR)@mandir@
++nfslockdir	= $(DESTDIR)@nfslockdir@
++includedir	= $(DESTDIR)@includedir@
+ datarootdir	= @datarootdir@
+ MAILGROUP	= @MAILGROUP@
+ 
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock.so-and-nfslock.so.0.patch b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock.so-and-nfslock.so.0.patch
new file mode 100644
index 0000000..a6b297b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock.so-and-nfslock.so.0.patch
@@ -0,0 +1,31 @@
+From 631d46efff2a6d8970e202ba5422ebedd17a8d2f Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Thu, 19 Jul 2018 01:00:10 -0700
+Subject: [PATCH] Makefile.in: install nfslock.so and nfslock.so.0
+
+* install the missing soname library
+
+Upstream-Status: Pending
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/Makefile.in b/Makefile.in
+index 1e4130e..0f1b506 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -77,6 +77,8 @@ install_common:
+ install_nfslib:	nfslib
+ 		install -d -m 755 -g root -p $(nfslockdir)
+ 		install -m 755 nfslock.so.$(NFSVER) $(nfslockdir)
++		ln -sf nfslock.so.$(NFSVER) $(libdir)/nfslock.so
++		ln -sf nfslock.so.$(NFSVER) $(libdir)/nfslock.so.0
+ 		if test "$(DESTDIR)" = ""; then @LDCONFIG@; fi
+ 
+ clean:
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/configure.patch b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/configure.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile-1.09/configure.patch
rename to meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/configure.patch
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/liblockfile-fix-install-so-to-man-dir.patch b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/liblockfile-fix-install-so-to-man-dir.patch
new file mode 100644
index 0000000..da25033
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/liblockfile-fix-install-so-to-man-dir.patch
@@ -0,0 +1,33 @@
+From 363eb1aaeca914c7d36a2cdaf1417e4f87af4c22 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Thu, 19 Jul 2018 01:12:47 -0700
+Subject: [PATCH] Makefile.in: define dotlockfile.1 installed to man
+
+Explicitly define dotlockfile.1 installed to man
+dir to avoid nfslock.so.0.1 is installed into man
+directory
+
+Upstream-Status: Pending
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 0f1b506..6e53179 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -71,7 +71,7 @@ install_common:
+ 		else \
+ 		  install -g root -m 755 dotlockfile $(bindir); \
+ 		fi
+-		install -m 644 *.1 $(mandir)/man1
++		install -m 644 dotlockfile.1 $(mandir)/man1
+ 		install -m 644 *.3 $(mandir)/man3
+ 
+ install_nfslib:	nfslib
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.09.bb b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.09.bb
deleted file mode 100644
index 0c41afa..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.09.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "File locking library"
-HOMEPAGE = "http://packages.qa.debian.org/libl/liblockfile.html"
-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/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb
new file mode 100644
index 0000000..de2c1e3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb
@@ -0,0 +1,37 @@
+SUMMARY = "File locking library"
+HOMEPAGE = "http://packages.qa.debian.org/libl/liblockfile.html"
+SECTION = "libs"
+LICENSE = "LGPLv2+ & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=f4ba6ad04fcb05cc30a4cfa5062c55a3"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/libl/liblockfile/liblockfile_1.14.orig.tar.gz \
+    ${DEBIAN_MIRROR}/main/libl/liblockfile/liblockfile_1.14-1.debian.tar.bz2;name=1.14-1 \
+    file://configure.patch \
+    file://0001-Makefile.in-add-DESTDIR.patch \
+    file://0001-Makefile.in-install-nfslock.so-and-nfslock.so.0.patch \
+    file://liblockfile-fix-install-so-to-man-dir.patch \
+"
+
+SRC_URI[md5sum] = "420c056ba0cc4d1477e402f70ba2f5eb"
+SRC_URI[sha256sum] = "ab40d4a3e8cbc204f7e87fea637a4e4ddf9a1149aaa0a723a4267febd0b1d060"
+
+SRC_URI[1.14-1.md5sum] = "f9a44928c3477d218c56252712ebc479"
+SRC_URI[1.14-1.sha256sum] = "73f9be769e602149391588c28f0f4f5cda131e30fb94c0777dbb23d811ac21ff"
+
+S = "${WORKDIR}/${BPN}"
+
+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 DESTDIR as the change in e35f9eabcbba224ecc70b145d5d2a2d81064c195
+# at https://github.com/miquels/liblockfile.git
+EXTRA_OEMAKE += "DESTDIR=${D}"
+
+FILES_${PN} += "${libdir}/nfslock.so.*"
+FILES_${PN}-dev += "${libdir}/nfslock.so"
diff --git a/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.5.bb b/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.6.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.5.bb
rename to meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.6.bb
index 64a258b..bb59845 100644
--- a/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.6.bb
@@ -12,8 +12,8 @@
 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"
+SRC_URI[md5sum] = "f215c7e7ac6cfd1f5dabdba08c522b29"
+SRC_URI[sha256sum] = "338c6174e5c8652eaa34f956be3451f7491a4416ab489aef63151f802b00bf93"
 
 inherit autotools pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.0.bb b/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.0.bb
index 2c96063..9fb25cd 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.0.bb
@@ -12,20 +12,19 @@
 SRC_URI[md5sum] = "b8defcc7280a90e9400d6689c93a279c"
 SRC_URI[sha256sum] = "1de6ff046cf2172d265a2cb6f8da439d894f3e4e8157b056c515515232fade6b"
 
+UPSTREAM_CHECK_URI = "https://github.com/libpwquality/libpwquality/releases"
+
 S = "${WORKDIR}/${SRCNAME}-${PV}"
 
-DEPENDS = "cracklib virtual/gettext python3"
-RDEPENDS_python3-libpwquality = "${PN}"
+DEPENDS = "cracklib virtual/gettext"
 
-inherit autotools python3native gettext
+inherit autotools distutils3-base gettext
 
 B = "${S}"
 
 export PYTHON_DIR
 export BUILD_SYS
 export HOST_SYS
-export STAGING_LIBDIR
-export STAGING_INCDIR
 
 EXTRA_OECONF += "--with-python-rev=${PYTHON_BASEVERSION} \
                  --with-python-binary=${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} \
@@ -36,10 +35,7 @@
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
 PACKAGECONFIG[pam] = "--enable-pam, --disable-pam, libpam"
 
-PACKAGES += "python3-libpwquality python3-libpwquality-dbg"
 FILES_${PN} += "${libdir}/security/pam_pwquality.so"
 FILES_${PN}-dbg += "${libdir}/security/.debug"
 FILES_${PN}-staticdev += "${libdir}/security/pam_pwquality.a"
 FILES_${PN}-dev += "${libdir}/security/pam_pwquality.la"
-FILES_python3-${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
-FILES_python3-${PN}-dbg = "${PYTHON_SITEPACKAGES_DIR}/.debug"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0001-Makefile.am-remove-doc-and-apidoc.patch b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0001-Makefile.am-remove-doc-and-apidoc.patch
index 9b328a1..97fb097 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0001-Makefile.am-remove-doc-and-apidoc.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0001-Makefile.am-remove-doc-and-apidoc.patch
@@ -1,7 +1,7 @@
-From db32ba60ca75d288d3ac08b54256cb74d9e1581a Mon Sep 17 00:00:00 2001
+From 1f7d106c7d982fe055addc8d883b161202233175 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Wed, 26 Apr 2017 03:47:58 -0400
-Subject: [PATCH 1/3] Makefile.am: remove doc and apidoc
+Subject: [PATCH 1/4] Makefile.am: remove doc and apidoc
 
 There was a failure at do_install time, so remove doc to workaround.
 
@@ -13,7 +13,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index c6ab640..fb09fc1 100644
+index 9ad827c..34364a8 100644
 --- a/Makefile.am
 +++ b/Makefile.am
 @@ -1,5 +1,5 @@
@@ -24,5 +24,5 @@
  EXTRA_DIST = \
      libreport.pc.in \
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0002-configure.ac-remove-prog-test-of-xmlto-and-asciidoc.patch b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0002-configure.ac-remove-prog-test-of-xmlto-and-asciidoc.patch
index 146510e..7f5895e 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0002-configure.ac-remove-prog-test-of-xmlto-and-asciidoc.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0002-configure.ac-remove-prog-test-of-xmlto-and-asciidoc.patch
@@ -1,7 +1,7 @@
-From d8c49e6a15ab28f4ca94e03b2a53ed8df63346cd Mon Sep 17 00:00:00 2001
+From 9beadcdfca9198548f06bf18f3f26e1d11542e53 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 26 Apr 2017 03:49:45 -0400
-Subject: [PATCH 2/3] configure.ac: remove prog test of xmlto and asciidoc
+Date: Tue, 31 Jul 2018 16:53:04 +0800
+Subject: [PATCH 2/4] configure.ac: remove prog test of xmlto and asciidoc
 
 The prog of xmlto and asciidoc were used to generate documents,
 and since the doc module has already been disabled, so we should
@@ -15,12 +15,12 @@
  1 file changed, 18 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index ccefe50..ed48c88 100644
+index feafc28..aceccf4 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -68,24 +68,6 @@ if test -z "$PYTHON3"; then
-     exit 1
- fi
+@@ -56,24 +56,6 @@ IT_PROG_INTLTOOL([0.35.0])
+ 
+ dnl ****** END ****************************************
  
 -AC_PATH_PROG([ASCIIDOC], [asciidoc], [no])
 -[if test "$ASCIIDOC" = "no"]
@@ -44,5 +44,5 @@
  AS_HELP_STRING([--with-bugzilla],[use Bugzilla plugin (default is YES)]),
  LIBREPORT_PARSE_WITH([bugzilla]))
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0003-without-build-plugins.patch b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0003-without-build-plugins.patch
index 3ad7774..2ff1731 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0003-without-build-plugins.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0003-without-build-plugins.patch
@@ -1,7 +1,7 @@
-From 0e96d9f23b2b166e7444e7c8e0a6d4b83c2eccd7 Mon Sep 17 00:00:00 2001
+From 41bce1de2fd2a0f79c266f245ae3e3720ccaf46a Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Wed, 26 Apr 2017 03:51:03 -0400
-Subject: [PATCH 3/3] without build plugins
+Subject: [PATCH 3/4] without build plugins
 
 Upstream-Status:  Inappropriate workaround
 
@@ -22,5 +22,5 @@
 -SUBDIRS = include lib plugins report-python cli client-python workflows $(sub_dirs)
 +SUBDIRS = include lib report-python cli client-python workflows $(sub_dirs)
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0004-configure.ac-remove-prog-test-of-augparse.patch b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0004-configure.ac-remove-prog-test-of-augparse.patch
index 9839e5a..4ba69c7 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0004-configure.ac-remove-prog-test-of-augparse.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0004-configure.ac-remove-prog-test-of-augparse.patch
@@ -1,7 +1,7 @@
-From cf3b646facc19078ed29f828e36dd2e552283518 Mon Sep 17 00:00:00 2001
+From c1c301502a8f69b9889197744b301a136082f09d Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Thu, 27 Apr 2017 02:15:02 -0400
-Subject: [PATCH] configure.ac: remove prog test of augparse
+Subject: [PATCH 4/4] configure.ac: remove prog test of augparse
 
 The build time does not require it.
 
@@ -13,10 +13,10 @@
  1 file changed, 8 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index c06af2d..b90f49e 100644
+index aceccf4..83c101b 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -288,14 +288,6 @@ AC_ARG_WITH(augeaslenslibdir,
+@@ -350,14 +350,6 @@ AC_ARG_WITH(augeaslenslibdir,
                             [Directory for librepor lens (default: /usr/share/augeas/lenses)])],
              [], [with_augeaslenslibdir="/usr/share/augeas/lenses"])
  AC_SUBST([AUGEAS_LENS_LIB_DIR], [$with_augeaslenslibdir])
@@ -32,5 +32,5 @@
  AC_ARG_WITH([defaultdumpdirmode],
              AS_HELP_STRING([--with-defaultdumpdirmode=OCTAL-MODE],
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0005-remove-python2-support.patch b/meta-openembedded/meta-oe/recipes-extended/libreport/files/0005-remove-python2-support.patch
deleted file mode 100644
index 9770f07..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libreport/files/0005-remove-python2-support.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 06710ab89fc7d7a82a378289aa3fcd92d33074f2 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 27 Apr 2017 03:31:00 -0400
-Subject: [PATCH] remove python2 support
-
-We do not require python2, so remove it.
-
-Upstream-Status:  Inappropriate workaround
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.ac                               | 15 ---------------
- src/client-python/reportclient/Makefile.am |  9 ---------
- src/report-python/Makefile.am              | 19 -------------------
- 3 files changed, 43 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index eb50382..826d0fe 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -166,15 +166,6 @@ do
- done
- fi dnl end NO_MANTISBT
- 
--AC_PATH_PROG([PYTHON_CONFIG], [python-config], [no])
--[if test "$PYTHON_CONFIG" = "no"]
--[then]
--    [echo "The python-config program was not found in the search path. Please ensure"]
--    [echo "that it is installed and its directory is included in the search path."]
--    [echo "Then run configure again before attempting to build libreport."]
--    [exit 1]
--[fi]
--
- AC_PATH_PROG([PYTHON3_CONFIG], [python3-config], [no])
- [if test "$PYTHON3_CONFIG" = "no"]
- [then]
-@@ -184,9 +175,6 @@ AC_PATH_PROG([PYTHON3_CONFIG], [python3-config], [no])
-     [exit 1]
- [fi]
- 
--PYTHON_CFLAGS=`python-config --cflags 2> /dev/null`
--PYTHON_LIBS=`python-config --libs 2> /dev/null`
--
- PYTHON3_CFLAGS=`python3-config --cflags 2> /dev/null`
- PYTHON3_LIBS=`python3-config --libs 2> /dev/null`
- 
-@@ -198,9 +186,6 @@ PYTHON3_DIR=`$PYTHON3 -c "import distutils.sysconfig; \
- PYTHON3_EXECDIR=`$PYTHON3 -c "import distutils.sysconfig; \
-     print(distutils.sysconfig.get_python_lib(1,0,prefix='$PYTHON3_EXEC_PREFIX'))"`
- 
--AC_SUBST(PYTHON_CFLAGS)
--AC_SUBST(PYTHON_LIBS)
--
- AC_SUBST(PYTHON3_CFLAGS)
- AC_SUBST(PYTHON3_LIBS)
- AC_SUBST(python3dir, $PYTHON3_DIR)
-diff --git a/src/client-python/reportclient/Makefile.am b/src/client-python/reportclient/Makefile.am
-index 46ac42f..fb5216a 100644
---- a/src/client-python/reportclient/Makefile.am
-+++ b/src/client-python/reportclient/Makefile.am
-@@ -4,13 +4,10 @@ PYFILES = \
-     dnfdebuginfo.py \
-     yumdebuginfo.py
- 
--py2clientdir = $(pyexecdir)/reportclient
- py3clientdir = $(py3execdir)/reportclient
- 
--py2client_PYTHON = $(PYFILES)
- py3client_PYTHON = $(PYFILES)
- 
--py2client_LTLIBRARIES = _reportclient.la
- py3client_LTLIBRARIES = _reportclient3.la
- 
- PYEXTFILES = \
-@@ -33,12 +30,6 @@ PYEXTLDFLAGS = \
-     -avoid-version \
-     -Wl,-z,relro -Wl,-z,now
- 
--_reportclient_la_SOURCES = $(PYEXTFILES)
--_reportclient_la_CPPFLAGS = $(PYEXTCPPFLAGS) $(PYTHON_CFLAGS)
--_reportclient_la_LDFLAGS = $(PYEXTLDFLAGS) \
--    -export-symbols-regex init_reportclient
--_reportclient_la_LIBADD = ../../lib/libreport.la
--
- _reportclient3_la_SOURCES = $(PYEXTFILES)
- _reportclient3_la_CPPFLAGS = $(PYEXTCPPFLAGS) $(PYTHON3_CFLAGS)
- _reportclient3_la_LDFLAGS = $(PYEXTLDFLAGS) \
-diff --git a/src/report-python/Makefile.am b/src/report-python/Makefile.am
-index 793cebd..241dcb7 100644
---- a/src/report-python/Makefile.am
-+++ b/src/report-python/Makefile.am
-@@ -1,12 +1,9 @@
- PYFILES = __init__.py accountmanager.py
- 
--pyreportexecdir = $(pyexecdir)/report
- py3reportexecdir = $(py3execdir)/report
- 
--pyreportexec_PYTHON = $(PYFILES)
- py3reportexec_PYTHON = $(PYFILES)
- 
--pyreportexec_LTLIBRARIES = _pyreport.la
- py3reportexec_LTLIBRARIES = _py3report.la
- 
- PYEXTFILES = \
-@@ -34,20 +31,6 @@ PYEXTLDFLAGS = \
-     -avoid-version \
-     -Wl,-z,relro -Wl,-z,now
- 
--_pyreport_la_SOURCES = $(PYEXTFILES)
--
--_pyreport_la_CPPFLAGS = \
--    $(PYEXTCPPFLAGS) \
--    $(PYTHON_CFLAGS)
--
--_pyreport_la_LDFLAGS = \
--   $(PYEXTLDFLAGS) \
--   -export-symbols-regex init_pyreport
--
--_pyreport_la_LIBADD = \
--    ../lib/libreport.la \
--    $(PYTHON2_LIBS)
--
- _py3report_la_SOURCES = $(PYEXTFILES)
- 
- _py3report_la_CPPFLAGS = \
-@@ -64,7 +47,6 @@ _py3report_la_LIBADD = \
- 
- # report compat:
- 
--pyreportioexecdir = $(pyexecdir)/report/io
- py3reportioexecdir = $(py3execdir)/report/io
- 
- PYIOFILES = \
-@@ -73,5 +55,4 @@ PYIOFILES = \
-     io/NewtIO.py \
-     io/TextIO.py
- 
--pyreportioexec_PYTHON = $(PYIOFILES)
- py3reportioexec_PYTHON = $(PYIOFILES)
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.2.bb b/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.5.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.5.bb
index f2c661c..542956c 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.5.bb
@@ -16,9 +16,11 @@
             file://0002-configure.ac-remove-prog-test-of-xmlto-and-asciidoc.patch \
             file://0003-without-build-plugins.patch \
             file://0004-configure.ac-remove-prog-test-of-augparse.patch \
-            file://0005-remove-python2-support.patch \
 "
-SRCREV = "cfff49f06d9d17e269d463ee71b3d94c8bfb0c58"
+SRCREV = "15f92bcaf73e5eb8958fbde655a57dcd111757a7"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
 S = "${WORKDIR}/git"
 
 inherit distro_features_check
@@ -29,6 +31,8 @@
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES','x11','gtk','',d)}"
 PACKAGECONFIG[gtk] = "--with-gtk, --without-gtk, gtk+3,"
 
+EXTRA_OECONF += "--without-python2 --with-python3"
+
 RDEPENDS_python3-libreport += "${PN}"
 
 do_patch[prefuncs] += "do_gen_version"
diff --git a/meta-openembedded/meta-oe/recipes-extended/mailx/files/0001-support-openssl-1.1.x.patch b/meta-openembedded/meta-oe/recipes-extended/mailx/files/0001-support-openssl-1.1.x.patch
new file mode 100644
index 0000000..6a8911d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mailx/files/0001-support-openssl-1.1.x.patch
@@ -0,0 +1,72 @@
+From 7db6d8a657d13bb562a27c6181accaf3e53c0efd Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 25 Sep 2018 14:03:10 +0800
+Subject: [PATCH] support openssl 1.1.x
+
+Long time no maintain from upstream since 2013-06-04
+(https://sourceforge.net/projects/nail/), backport a
+fix from openSUSE
+
+Upstream-Status: Backport [openSUSE]
+https://build.opensuse.org/package/view_file/openSUSE:Leap:15.0/mailx/mailx-12.5-openssl-1.1.0f.patch?expand=1
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ openssl.c | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+diff --git a/openssl.c b/openssl.c
+index 44fe4e5..0ccc517 100644
+--- a/openssl.c
++++ b/openssl.c
+@@ -137,7 +137,12 @@ ssl_rand_init(void)
+ 
+ 	if ((cp = value("ssl-rand-egd")) != NULL) {
+ 		cp = expand(cp);
+-		if (RAND_egd(cp) == -1) {
++#ifndef OPENSSL_NO_EGD
++		if (RAND_egd(cp) == -1)
++#else
++		if (1)
++#endif
++		{
+ 			fprintf(stderr, catgets(catd, CATSET, 245,
+ 				"entropy daemon at \"%s\" not available\n"),
+ 					cp);
+@@ -216,6 +221,7 @@ ssl_select_method(const char *uhp)
+ 
+ 	cp = ssl_method_string(uhp);
+ 	if (cp != NULL) {
++#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x1010006fL
+ 		if (equal(cp, "ssl3"))
+ 			method = SSLv3_client_method();
+ 		else if (equal(cp, "tls1"))
+@@ -225,8 +231,25 @@ ssl_select_method(const char *uhp)
+ 					"Invalid SSL method \"%s\"\n"), cp);
+ 			method = SSLv23_client_method();
+ 		}
++#else
++		method = NULL;
++		if (equal(cp, "tls"))
++			method = TLS_client_method();
++		else if (equal(cp, "dtls"))
++			method = DTLS_client_method();
++
++		if (!method) {
++			fprintf(stderr, catgets(catd, CATSET, 244,
++					"Invalid SSL method \"%s\"\n"), cp);
++			method = TLS_client_method();
++		}
++#endif
+ 	} else
++#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x1010006fL
+ 		method = SSLv23_client_method();
++#else
++		method = TLS_client_method();
++#endif
+ 	return method;
+ }
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mailx/mailx_12.5-5.bb b/meta-openembedded/meta-oe/recipes-extended/mailx/mailx_12.5-5.bb
index 0a191a0..4161ea6 100644
--- a/meta-openembedded/meta-oe/recipes-extended/mailx/mailx_12.5-5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/mailx/mailx_12.5-5.bb
@@ -9,7 +9,7 @@
 LICENSE = "BSD & MPL-1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4202a0a62910cf94f7af8a3436a2a2dd"
 
-DEPENDS = "openssl10"
+DEPENDS = "openssl"
 
 SRC_URI = "http://snapshot.debian.org/archive/debian/20160728T043443Z/pool/main/h/heirloom-mailx/heirloom-mailx_12.5.orig.tar.gz;name=archive \
            file://0001-Don-t-reuse-weak-symbol-optopt-to-fix-FTBFS-on-mips.patch \
@@ -21,6 +21,7 @@
            file://0014-globname-Invoke-wordexp-with-WRDE_NOCMD.patch \
            file://0015-usr-sbin-sendmail.patch \
            file://explicitly.disable.krb5.support.patch \
+           file://0001-support-openssl-1.1.x.patch \
           "
 
 SRC_URI[archive.md5sum] = "29a6033ef1412824d02eb9d9213cb1f2"
diff --git a/meta-openembedded/meta-oe/recipes-extended/md5deep/files/0001-Fix-errors-found-by-clang.patch b/meta-openembedded/meta-oe/recipes-extended/md5deep/files/0001-Fix-errors-found-by-clang.patch
deleted file mode 100644
index cc7cdc3..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/md5deep/files/0001-Fix-errors-found-by-clang.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 6ef69a26126ee4e69a25392fd456b8a66c51dffd Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 15 Nov 2016 02:46:55 +0000
-Subject: [PATCH] Fix errors found by clang
-
-Fixes errors like
-
-../../git/src/hash.cpp:282:19: error: ordered comparison between pointer and zero ('const unsigned char *' and 'int')
-            if(fdht->base>0){
-               ~~~~~~~~~~^~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/hash.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/hash.cpp b/src/hash.cpp
-index 4216157..52f419b 100644
---- a/src/hash.cpp
-+++ b/src/hash.cpp
-@@ -279,7 +279,7 @@ void file_data_hasher_t::hash()
- 		MAP_FILE|
- #endif
- 		MAP_SHARED,fd,0);
--	    if(fdht->base>0){		
-+	    if(fdht->base != (void *) -1){
- 		/* mmap is successful, so set the bounds.
- 		 * if it is not successful, we default to reading the fd
- 		 */
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/md5deep/files/0001-Fix-literal-and-identifier-spacing-as-dictated-by-C-.patch b/meta-openembedded/meta-oe/recipes-extended/md5deep/files/0001-Fix-literal-and-identifier-spacing-as-dictated-by-C-.patch
new file mode 100644
index 0000000..69460b3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/md5deep/files/0001-Fix-literal-and-identifier-spacing-as-dictated-by-C-.patch
@@ -0,0 +1,128 @@
+From 7d7b60e38ca701819d4d00b38161faddce01e2ae Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 6 Sep 2018 23:21:22 -0700
+Subject: [PATCH] Fix literal and identifier spacing as dictated by C++11
+
+Fixes clang error like below
+
+error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal]
+|         status("  Known files not found: %"PRIu64, this->match.unused);
+
+Upstream-Status: Submitted [https://github.com/jessek/hashdeep/pull/385/commits/18a6b5d57f7a648d2b7dcc6e50ff00a1e4b05fcc]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/display.cpp  | 16 ++++++++--------
+ src/files.cpp    |  4 ++--
+ src/hash.cpp     |  2 +-
+ src/hashlist.cpp |  4 ++--
+ src/xml.h        |  2 +-
+ 5 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/src/display.cpp b/src/display.cpp
+index b23335d..2eddc23 100644
+--- a/src/display.cpp
++++ b/src/display.cpp
+@@ -311,7 +311,7 @@ void display::display_realtime_stats(const file_data_hasher_t *fdht, const hash_
+ 
+ 	ss << mb_read << "MB of " << fdht->stat_megs() << "MB done, ";
+ 	char msg[64];
+-	snprintf(msg,sizeof(msg),"%02"PRIu64":%02"PRIu64":%02"PRIu64" left", hour, min, seconds);
++	snprintf(msg,sizeof(msg),"%02" PRIu64 ":%02" PRIu64 ":%02" PRIu64 " left", hour, min, seconds);
+ 	ss << msg;
+     }
+     ss << "\r";
+@@ -424,14 +424,14 @@ void display::display_audit_results()
+   
+     if (opt_verbose)    {
+ 	if(opt_verbose >= MORE_VERBOSE){
+-	    status("   Input files examined: %"PRIu64, this->match.total);
+-	    status("  Known files expecting: %"PRIu64, this->match.expect);
++	    status("   Input files examined: %" PRIu64, this->match.total);
++	    status("  Known files expecting: %" PRIu64, this->match.expect);
+ 	}
+-	status("          Files matched: %"PRIu64, this->match.exact);
+-	status("Files partially matched: %"PRIu64, this->match.partial);
+-	status("            Files moved: %"PRIu64, this->match.moved);
+-	status("        New files found: %"PRIu64, this->match.unknown);
+-	status("  Known files not found: %"PRIu64, this->match.unused);
++	status("          Files matched: %" PRIu64, this->match.exact);
++	status("Files partially matched: %" PRIu64, this->match.partial);
++	status("            Files moved: %" PRIu64, this->match.moved);
++	status("        New files found: %" PRIu64, this->match.unknown);
++	status("  Known files not found: %" PRIu64, this->match.unused);
+     }
+ }
+ 
+diff --git a/src/files.cpp b/src/files.cpp
+index 89c6984..3dfd363 100644
+--- a/src/files.cpp
++++ b/src/files.cpp
+@@ -509,7 +509,7 @@ int state::parse_encase_file(const char *fn, FILE *handle,uint32_t expected_hash
+         
+ 	    // Users expect the line numbers to start at one, not zero.
+ 	    if ((!ocb.opt_silent) || (mode_warn_only)) {
+-		ocb.error("%s: No hash found in line %"PRIu32, fn, count + 1);
++		ocb.error("%s: No hash found in line %" PRIu32, fn, count + 1);
+ 		ocb.error("%s: %s", fn, strerror(errno));
+ 		return status_t::STATUS_USER_ERROR;
+ 	    }
+@@ -542,7 +542,7 @@ int state::parse_encase_file(const char *fn, FILE *handle,uint32_t expected_hash
+     }
+ 
+     if (expected_hashes != count){
+-	ocb.error("%s: Expecting %"PRIu32" hashes, found %"PRIu32"\n", 
++	ocb.error("%s: Expecting %" PRIu32 " hashes, found %" PRIu32 "\n", 
+ 			fn, expected_hashes, count);
+     }
+     return status_t::status_ok;
+diff --git a/src/hash.cpp b/src/hash.cpp
+index 52f419b..a4b3128 100644
+--- a/src/hash.cpp
++++ b/src/hash.cpp
+@@ -124,7 +124,7 @@ bool file_data_hasher_t::compute_hash(uint64_t request_start,uint64_t request_le
+     
+ 	// If an error occured, display a message and see if we need to quit.
+ 	if ((current_read_bytes<0) || (this->handle && ferror(this->handle))){
+-	    ocb->error_filename(this->file_name,"error at offset %"PRIu64": %s",
++	    ocb->error_filename(this->file_name,"error at offset %" PRIu64 ": %s",
+ 				request_start, strerror(errno));
+ 	   
+ 	    if (file_fatal_error()){
+diff --git a/src/hashlist.cpp b/src/hashlist.cpp
+index b5b275f..eb0d45a 100644
+--- a/src/hashlist.cpp
++++ b/src/hashlist.cpp
+@@ -342,7 +342,7 @@ hashlist::load_hash_file(display *ocb,const std::string &fn)
+     file_data_t *t = new (std::nothrow) file_data_t();
+     if (NULL == t)
+     {
+-      ocb->fatal_error("%s: Out of memory in line %"PRIu64,
++      ocb->fatal_error("%s: Out of memory in line %" PRIu64,
+ 		       fn.c_str(), line_number);
+     }
+ 
+@@ -390,7 +390,7 @@ hashlist::load_hash_file(display *ocb,const std::string &fn)
+       if ( !algorithm_t::valid_hash(hash_column[column_number],word))
+       {
+ 	if (ocb)
+-	  ocb->error("%s: Invalid %s hash in line %"PRIu64,
++	  ocb->error("%s: Invalid %s hash in line %" PRIu64,
+ 		     fn.c_str(),
+ 		     hashes[hash_column[column_number]].name.c_str(),
+ 		     line_number);
+diff --git a/src/xml.h b/src/xml.h
+index bfe0c94..017dba7 100644
+--- a/src/xml.h
++++ b/src/xml.h
+@@ -100,7 +100,7 @@ public:
+     void xmlout(const std::string &tag,const std::string &value){ xmlout(tag,value,"",true); }
+     void xmlout(const std::string &tag,const int value){ xmlprintf(tag,"","%d",value); }
+     void xmloutl(const std::string &tag,const long value){ xmlprintf(tag,"","%ld",value); }
+-    void xmlout(const std::string &tag,const int64_t value){ xmlprintf(tag,"","%"PRId64,value); }
++    void xmlout(const std::string &tag,const int64_t value){ xmlprintf(tag,"","%" PRId64,value); }
+     void xmlout(const std::string &tag,const double value){ xmlprintf(tag,"","%f",value); }
+     void xmlout(const std::string &tag,const struct timeval &ts){
+ 	xmlprintf(tag,"","%d.%06d",(int)ts.tv_sec, (int)ts.tv_usec);
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/md5deep/files/wrong-variable-expansion.patch b/meta-openembedded/meta-oe/recipes-extended/md5deep/files/wrong-variable-expansion.patch
index 3a4c4f4..73c6cb1 100644
--- a/meta-openembedded/meta-oe/recipes-extended/md5deep/files/wrong-variable-expansion.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/md5deep/files/wrong-variable-expansion.patch
@@ -1,6 +1,8 @@
---- 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 @@
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac
++++ git/configure.ac
+@@ -42,18 +42,6 @@ case $host in
       ;;		 		     
  esac
  
@@ -19,21 +21,3 @@
  #
  #
  ################################################################
-@@ -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/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_4.4.bb b/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_git.bb
similarity index 71%
rename from meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_4.4.bb
rename to meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_git.bb
index bb30abe..e8c6864 100644
--- a/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_4.4.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/md5deep/md5deep_git.bb
@@ -4,13 +4,15 @@
 HOMEPAGE = "http://md5deep.sourceforge.net"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9190f660105b9a56cdb272309bfd5491"
-# Release 4.4
-SRCREV = "cd2ed7416685a5e83eb10bb659d6e9bec01244ae"
+
+PV = "4.4+git${SRCPV}"
+
+SRCREV = "877613493ff44807888ce1928129574be393cbb0"
 
 SRC_URI = "git://github.com/jessek/hashdeep.git \
-        file://wrong-variable-expansion.patch \
-        file://0001-Fix-errors-found-by-clang.patch \
-        "
+           file://wrong-variable-expansion.patch \
+           file://0001-Fix-literal-and-identifier-spacing-as-dictated-by-C-.patch \
+           "
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-Fix-formatting-for-modern-c-11-compilers.patch b/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-Fix-formatting-for-modern-c-11-compilers.patch
new file mode 100644
index 0000000..8b00966
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-Fix-formatting-for-modern-c-11-compilers.patch
@@ -0,0 +1,31 @@
+From 90411a7f5e0e9582e79f0a8ccc1e2f158615e451 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 19 May 2018 23:18:11 -0700
+Subject: [PATCH] Fix formatting for modern c++11 compilers
+
+Fixes
+error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal]
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/backend/svg/SVG_RenderingContext.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/backend/svg/SVG_RenderingContext.cc b/src/backend/svg/SVG_RenderingContext.cc
+index 55d6097..0d50702 100644
+--- a/src/backend/svg/SVG_RenderingContext.cc
++++ b/src/backend/svg/SVG_RenderingContext.cc
+@@ -68,7 +68,7 @@ void
+ SVG_RenderingContext::documentStart(const BoundingBox& bbox)
+ {
+   beginDocument(bbox);
+-  metadata("Created by "PACKAGE" version "VERSION);
++  metadata("Created by " PACKAGE " version " VERSION);
+ }
+ 
+ void
+-- 
+2.17.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb b/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb
index df82bef..9ee9e30 100644
--- a/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb
@@ -13,6 +13,7 @@
     file://0001-include-cstdio-to-get-printf-definitions.patch \
     file://0002-configure.ac-header-detection-of-hash_map-is-broken-.patch \
     file://0003-gcc-6.0-build-fixes.patch \
+    file://0001-Fix-formatting-for-modern-c-11-compilers.patch \
 "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-compare-the-first-character-of-string-to-be-null-or-.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-compare-the-first-character-of-string-to-be-null-or-.patch
deleted file mode 100644
index 40d646c..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-compare-the-first-character-of-string-to-be-null-or-.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From f36c9476d2816e0d3e61c9e13c22ed73883cb54a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 24 Apr 2017 12:13:43 -0700
-Subject: [PATCH] compare the first character of string to be null or not
-
-Fixes
-
-error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
-|          if (value[0] == '\0')
-|                          ^~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- js/src/shell/jsoptparse.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/js/src/shell/jsoptparse.cpp b/js/src/shell/jsoptparse.cpp
-index b49d0a5..612aa00 100644
---- a/js/src/shell/jsoptparse.cpp
-+++ b/js/src/shell/jsoptparse.cpp
-@@ -243,7 +243,7 @@ OptionParser::extractValue(size_t argc, char **argv, size_t *i, char **value)
-     char *eq = strchr(argv[*i], '=');
-     if (eq) {
-         *value = eq + 1;
--        if (value[0] == '\0')
-+        if (value[0][0] == '\0')
-             return error("A value is required for option %.*s", eq - argv[*i], argv[*i]);
-         return Okay;
-     }
--- 
-2.12.2
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-do-not-create-python-environment.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-do-not-create-python-environment.patch
new file mode 100644
index 0000000..ba317bc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-do-not-create-python-environment.patch
@@ -0,0 +1,91 @@
+From 5028d1cd669c179ed49061316d04c8e8862a5bd8 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 12 Jul 2018 15:04:47 +0800
+Subject: [PATCH 1/5] do not create python environment
+
+Use oe's python environment rather than create one of host
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ build/moz.configure/init.configure | 18 ------------------
+ configure.py                       | 10 +++++++++-
+ js/src/old-configure               |  4 ++--
+ 3 files changed, 11 insertions(+), 21 deletions(-)
+
+diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
+index 2123beb..6fe6591 100644
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -179,24 +179,6 @@ def virtualenv_python(env_python, build_env, mozconfig, help):
+     else:
+         python = sys.executable
+ 
+-    if not manager.up_to_date(python):
+-        log.info('Creating Python environment')
+-        manager.build(python)
+-
+-    python = normsep(manager.python_path)
+-
+-    if python != normsep(sys.executable):
+-        log.info('Reexecuting in the virtualenv')
+-        if env_python:
+-            del os.environ['PYTHON']
+-        # One would prefer to use os.execl, but that's completely borked on
+-        # Windows.
+-        sys.exit(subprocess.call([python] + sys.argv))
+-
+-    # We are now in the virtualenv
+-    if not distutils.sysconfig.get_python_lib():
+-        die('Could not determine python site packages directory')
+-
+     return python
+ 
+ set_config('PYTHON', virtualenv_python)
+diff --git a/configure.py b/configure.py
+index f7392d0..45323a5 100644
+--- a/configure.py
++++ b/configure.py
+@@ -12,7 +12,15 @@ import textwrap
+ 
+ 
+ base_dir = os.path.abspath(os.path.dirname(__file__))
+-sys.path.insert(0, os.path.join(base_dir, 'python', 'mozbuild'))
++sys.path.insert(0, os.path.join(base_dir, 'config'))
++def get_immediate_subdirectories(a_dir):
++    return [name for name in os.listdir(a_dir)
++            if os.path.isdir(os.path.join(a_dir, name))]
++for s in ["python", "testing/mozbase"]:
++    sub_dir = os.path.join(base_dir, s)
++    for module_dir in get_immediate_subdirectories(sub_dir):
++        sys.path.insert(0, os.path.join(sub_dir, module_dir))
++
+ from mozbuild.configure import ConfigureSandbox
+ from mozbuild.util import (
+     indented_repr,
+diff --git a/js/src/old-configure b/js/src/old-configure
+index ee4527b..75b00e1 100644
+--- a/js/src/old-configure
++++ b/js/src/old-configure
+@@ -10512,7 +10512,7 @@ if test "$MOZ_BUILD_APP" != js -o -n "$JS_STANDALONE"; then
+     ;;
+   esac
+ 
+-  eval $dumpenv $PYTHON $_topsrcdir/build/subconfigure.py --prepare "$srcdir" "$moz_config_dir" "$_CONFIG_SHELL" $ac_configure_args 
++  eval $dumpenv PYTHONPATH=$_topsrcdir/python/mozbuild/ $PYTHON $_topsrcdir/build/subconfigure.py --prepare "$srcdir" "$moz_config_dir" "$_CONFIG_SHELL" $ac_configure_args
+ 
+   done
+ 
+@@ -10931,7 +10931,7 @@ if test "$JS_STANDALONE"; then
+   
+ if test "$no_recursion" != yes; then
+   trap '' EXIT
+-  if ! $PYTHON $_topsrcdir/build/subconfigure.py --list subconfigures --skip skip_subconfigures; then
++  if ! PYTHONPATH=$_topsrcdir/python/mozbuild/ $PYTHON $_topsrcdir/build/subconfigure.py --list subconfigures --skip skip_subconfigures; then
+       exit 1
+   fi
+ fi
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-fix-compiling-failure-on-mips64-n32-bsp.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-fix-compiling-failure-on-mips64-n32-bsp.patch
new file mode 100644
index 0000000..bc1af3c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-fix-compiling-failure-on-mips64-n32-bsp.patch
@@ -0,0 +1,79 @@
+From 5ad700c92224193bfc789f7d53af38fc6f8b8904 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 19 Jul 2018 17:31:35 +0800
+Subject: [PATCH] fix compiling failure on mips64-n32 bsp
+
+- Tweak mips64-n32 with mips32
+
+- The toolchain of mips64-n32 supports both of macro
+  `__mips64' and `__mips__', but 32bit is required here.
+
+- N32 uses 64-bit registers but restricts addresses to 32 bits.
+  https://www.linux-mips.org/pub/linux/mips/doc/ABI/MIPS-N32-ABI-Handbook.pdf
+  Table 2-1 specifies the use of registers in n32 and native 64-bit mode.
+  From the table, N32 and N64 have the same registers
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ build/moz.configure/init.configure                | 5 ++++-
+ js/src/jit/mips-shared/Architecture-mips-shared.h | 4 +++-
+ python/mozbuild/mozbuild/configure/constants.py   | 2 +-
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
+index 6fe6591..a77b46c 100644
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -357,7 +357,10 @@ def split_triplet(triplet):
+         canonical_cpu = 'mips32'
+         endianness = 'little' if 'el' in cpu else 'big'
+     elif cpu in ('mips64', 'mips64el'):
+-        canonical_cpu = 'mips64'
++        if 'n32' in triplet:
++            canonical_cpu = 'mips32'
++        else:
++            canonical_cpu = 'mips64'
+         endianness = 'little' if 'el' in cpu else 'big'
+     elif cpu.startswith('aarch64'):
+         canonical_cpu = 'aarch64'
+diff --git a/js/src/jit/mips-shared/Architecture-mips-shared.h b/js/src/jit/mips-shared/Architecture-mips-shared.h
+index 7afe305..c6e29dc 100644
+--- a/js/src/jit/mips-shared/Architecture-mips-shared.h
++++ b/js/src/jit/mips-shared/Architecture-mips-shared.h
+@@ -24,6 +24,8 @@
+ #define USES_O32_ABI
+ #elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABI64)) || defined(JS_SIMULATOR_MIPS64)
+ #define USES_N64_ABI
++#elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABIN32))
++#define USES_N32_ABI
+ #else
+ #error "Unsupported ABI"
+ #endif
+@@ -91,7 +93,7 @@ class Registers
+         ta1 = t5,
+         ta2 = t6,
+         ta3 = t7,
+-#elif defined(USES_N64_ABI)
++#elif defined(USES_N64_ABI) || defined(USES_N32_ABI)
+         a4 = r8,
+         a5 = r9,
+         a6 = r10,
+diff --git a/python/mozbuild/mozbuild/configure/constants.py b/python/mozbuild/mozbuild/configure/constants.py
+index dfc7cf8..27f83ab 100644
+--- a/python/mozbuild/mozbuild/configure/constants.py
++++ b/python/mozbuild/mozbuild/configure/constants.py
+@@ -83,8 +83,8 @@ CPU_preprocessor_checks = OrderedDict((
+     ('hppa', '__hppa__'),
+     ('sparc64', '__sparc__ && __arch64__'),
+     ('sparc', '__sparc__'),
+-    ('mips64', '__mips64'),
+     ('mips32', '__mips__'),
++    ('mips64', '__mips64'),
+ ))
+ 
+ assert sorted(CPU_preprocessor_checks.keys()) == sorted(CPU.POSSIBLE_VALUES)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
index bc141d9..c111ea5 100644
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
@@ -3,33 +3,31 @@
 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
+Rebase to 52.8.1
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ js/src/js.pc.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/js/src/js.pc.in b/js/src/js.pc.in
+index 2eae393..c2dea62 100644
+--- a/js/src/js.pc.in
++++ b/js/src/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@
+ @PKGCONF_REQUIRES_PRIVATE@
+ Libs: -L${libdir} -l@JS_LIBRARY_NAME@
+-Cflags: -include ${includedir}/@JS_LIBRARY_NAME@/js/RequiredDefines.h -I${includedir}/@JS_LIBRARY_NAME@
++Cflags: -I${includedir}/@JS_LIBRARY_NAME@
 -- 
-1.7.6.5
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs-fix-coredump-caused-by-getenv.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs-fix-coredump-caused-by-getenv.patch
new file mode 100644
index 0000000..477f73a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs-fix-coredump-caused-by-getenv.patch
@@ -0,0 +1,27 @@
+From 20b639b7364f9953fdacb058f9ba800bcbf029b4 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 2 Aug 2018 09:40:48 +0800
+Subject: [PATCH] mozjs: fix coredump caused by getenv
+
+Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1480315]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ mozglue/misc/TimeStamp.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/mozglue/misc/TimeStamp.cpp b/mozglue/misc/TimeStamp.cpp
+index 932b75c..7a4d71b 100644
+--- a/mozglue/misc/TimeStamp.cpp
++++ b/mozglue/misc/TimeStamp.cpp
+@@ -11,6 +11,7 @@
+ #include "mozilla/TimeStamp.h"
+ #include <stdio.h>
+ #include <string.h>
++#include <stdlib.h>
+ 
+ namespace mozilla {
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs17.0.0-fix-the-compile-bug-of-powerpc.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs17.0.0-fix-the-compile-bug-of-powerpc.patch
deleted file mode 100644
index de72d4f..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs17.0.0-fix-the-compile-bug-of-powerpc.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-regenerate-configure.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-regenerate-configure.patch
deleted file mode 100644
index fa413ea..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-regenerate-configure.patch
+++ /dev/null
@@ -1,3238 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-Move-JS_BYTES_PER_WORD-out-of-config.h.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-Move-JS_BYTES_PER_WORD-out-of-config.h.patch
deleted file mode 100644
index 6aeb2f6..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-Move-JS_BYTES_PER_WORD-out-of-config.h.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-fix-cannot-find-link.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-fix-cannot-find-link.patch
new file mode 100644
index 0000000..4f7ebc6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-fix-cannot-find-link.patch
@@ -0,0 +1,34 @@
+From e6dcee5f8a0f80ce99946b81fa1233611a149fe6 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 12 Jul 2018 18:00:52 +0800
+Subject: [PATCH 2/5] fix cannot find link
+
+..
+|DEBUG: link: Trying 'mips64-wrs-linux-ld --sysroot=tmp-glibc/work/
+mips64-wrs-linux/mozjs/52.8.1-r0/recipe-sysroot '
+|ERROR: Cannot find link
+...
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ build/moz.configure/checks.configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build/moz.configure/checks.configure b/build/moz.configure/checks.configure
+index 8c2dbc0..83bffc3 100644
+--- a/build/moz.configure/checks.configure
++++ b/build/moz.configure/checks.configure
+@@ -128,7 +128,7 @@ def check_prog(var, progs, what=None, input=None, allow_missing=False,
+ 
+         for prog in value or progs:
+             log.debug('%s: Trying %s', var.lower(), quote(prog))
+-            result = find_program(prog, paths)
++            result = find_program(prog.split()[0], paths)
+             if result:
+                 return result
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-Add-AArch64-support.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-Add-AArch64-support.patch
deleted file mode 100644
index 6e72429..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-Add-AArch64-support.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-workaround-autoconf-2.13-detection-failed.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-workaround-autoconf-2.13-detection-failed.patch
new file mode 100644
index 0000000..a754ff1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-workaround-autoconf-2.13-detection-failed.patch
@@ -0,0 +1,28 @@
+From 646a78262b18e19721cd41ee515215221dd241b6 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 12 Jul 2018 18:12:42 +0800
+Subject: [PATCH 3/5] workaround  autoconf 2.13 detection failed
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ build/moz.configure/old.configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
+index b32c3f7..ece47f4 100644
+--- a/build/moz.configure/old.configure
++++ b/build/moz.configure/old.configure
+@@ -31,7 +31,7 @@ def autoconf(mozconfig, autoconf):
+     autoconf = autoconf[0] if autoconf else None
+ 
+     for ac in (mozconfig_autoconf, autoconf, 'autoconf-2.13', 'autoconf2.13',
+-               'autoconf213'):
++               'autoconf213', 'autoconf'):
+         if ac:
+             autoconf = find_program(ac)
+             if autoconf:
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch
new file mode 100644
index 0000000..4cba79c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch
@@ -0,0 +1,42 @@
+From a46adb74b5ba5e17d676d31d70faca76c1381d15 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 12 Jul 2018 21:25:46 +0800
+Subject: [PATCH 4/5] do not use autoconf 2.13 to refresh old.configure
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ build/moz.configure/old.configure | 2 +-
+ js/src/old-configure              | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
+index ece47f4..a73900f 100644
+--- a/build/moz.configure/old.configure
++++ b/build/moz.configure/old.configure
+@@ -83,7 +83,7 @@ def prepare_configure(old_configure, mozconfig, autoconf, build_env, shell,
+             old_configure = os.path.join(old_configure_dir, 'js', 'src',
+                                          os.path.basename(old_configure))
+ 
+-    refresh = True
++    refresh = False
+     if exists(old_configure):
+         mtime = getmtime(old_configure)
+         aclocal = os.path.join(build_env.topsrcdir, 'build', 'autoconf',
+diff --git a/js/src/old-configure b/js/src/old-configure
+index 75b00e1..8a8ef52 100644
+--- a/js/src/old-configure
++++ b/js/src/old-configure
+@@ -619,7 +619,7 @@ if test -z "$srcdir"; then
+   ac_prog=$0
+   ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+   test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+-  srcdir=$ac_confdir
++  srcdir="$ac_confdir/../../"
+   if test ! -r $srcdir/$ac_unique_file; then
+     srcdir=..
+   fi
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-mozbug746112-no-decommit-on-large-pages.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-mozbug746112-no-decommit-on-large-pages.patch
deleted file mode 100644
index 8bd35d4..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-mozbug746112-no-decommit-on-large-pages.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-aarch64-64k-page.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-aarch64-64k-page.patch
deleted file mode 100644
index bc99ecc..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-aarch64-64k-page.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-fix-do_compile-failed-on-mips.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-fix-do_compile-failed-on-mips.patch
new file mode 100644
index 0000000..38e4698
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-fix-do_compile-failed-on-mips.patch
@@ -0,0 +1,38 @@
+From 55d833dc3c194f1eb7841f308ad3b9ec3800d3b3 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 13 Jul 2018 15:48:32 +0800
+Subject: [PATCH 5/5] fix do_compile failed on mips
+
+Link with var-OS_LDFLAGS to fix the issue.
+Such as on mips:
+...
+|mips-wrsmllib32-linux-g++ -meb -mabi=32 -mhard-float ... -o libmozjs-52.so
+|/usr/include/c++/8.1.0/bits/atomic_base.h:514: error: undefined
+reference to '__atomic_fetch_add_8'
+...
+
+In recipe, set OS_LDFLAGS="-Wl,-latomic" could fix the issue.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ config/config.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/config/config.mk b/config/config.mk
+index 4e3fd1a..d847ffa 100644
+--- a/config/config.mk
++++ b/config/config.mk
+@@ -523,7 +523,7 @@ EXPAND_MKSHLIB_ARGS = --uselist
+ ifdef SYMBOL_ORDER
+ EXPAND_MKSHLIB_ARGS += --symbol-order $(SYMBOL_ORDER)
+ endif
+-EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB)
++EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB) $(OS_LDFLAGS)
+ 
+ # $(call CHECK_SYMBOLS,lib,PREFIX,dep_name,test)
+ # Checks that the given `lib` doesn't contain dependency on symbols with a
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0006-support-musl.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0006-support-musl.patch
new file mode 100644
index 0000000..32a977c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0006-support-musl.patch
@@ -0,0 +1,158 @@
+From 04e8a611e958f0da1ccac61acae3a6f1a5168b20 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 13 Jul 2018 18:08:14 +0800
+Subject: [PATCH] support musl
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ memory/jemalloc/src/src/pages.c              | 1 -
+ memory/mozjemalloc/jemalloc.c                | 7 +++----
+ mozglue/misc/TimeStamp_darwin.cpp            | 1 -
+ mozglue/misc/TimeStamp_posix.cpp             | 1 -
+ nsprpub/pr/src/misc/prsystem.c               | 1 -
+ python/psutil/psutil/_psutil_bsd.c           | 1 -
+ python/psutil/psutil/_psutil_osx.c           | 1 -
+ python/psutil/psutil/arch/bsd/process_info.c | 1 -
+ python/psutil/psutil/arch/osx/process_info.c | 1 -
+ 9 files changed, 3 insertions(+), 12 deletions(-)
+
+diff --git a/memory/jemalloc/src/src/pages.c b/memory/jemalloc/src/src/pages.c
+index 647952a..7b964c8 100644
+--- a/memory/jemalloc/src/src/pages.c
++++ b/memory/jemalloc/src/src/pages.c
+@@ -2,7 +2,6 @@
+ #include "jemalloc/internal/jemalloc_internal.h"
+ 
+ #ifdef JEMALLOC_SYSCTL_VM_OVERCOMMIT
+-#include <sys/sysctl.h>
+ #endif
+ 
+ /******************************************************************************/
+diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c
+index 5d4d83a..c618de9 100644
+--- a/memory/mozjemalloc/jemalloc.c
++++ b/memory/mozjemalloc/jemalloc.c
+@@ -332,7 +332,6 @@ __FBSDID("$FreeBSD: head/lib/libc/stdlib/malloc.c 180599 2008-07-18 19:35:44Z ja
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #if !defined(MOZ_MEMORY_SOLARIS) && !defined(MOZ_MEMORY_ANDROID)
+-#include <sys/sysctl.h>
+ #endif
+ #include <sys/uio.h>
+ #ifndef MOZ_MEMORY
+@@ -674,7 +673,7 @@ static bool malloc_initialized = false;
+ #elif defined(MOZ_MEMORY_DARWIN)
+ static malloc_mutex_t init_lock = {OS_SPINLOCK_INIT};
+ #elif defined(MOZ_MEMORY_LINUX) && !defined(MOZ_MEMORY_ANDROID)
+-static malloc_mutex_t init_lock = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
++static malloc_mutex_t init_lock = PTHREAD_MUTEX_INITIALIZER;
+ #elif defined(MOZ_MEMORY)
+ static malloc_mutex_t init_lock = PTHREAD_MUTEX_INITIALIZER;
+ #else
+@@ -1644,7 +1643,7 @@ malloc_mutex_init(malloc_mutex_t *mutex)
+ 	pthread_mutexattr_t attr;
+ 	if (pthread_mutexattr_init(&attr) != 0)
+ 		return (true);
+-	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
++	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_STALLED);
+ 	if (pthread_mutex_init(mutex, &attr) != 0) {
+ 		pthread_mutexattr_destroy(&attr);
+ 		return (true);
+@@ -1709,7 +1708,7 @@ malloc_spin_init(malloc_spinlock_t *lock)
+ 	pthread_mutexattr_t attr;
+ 	if (pthread_mutexattr_init(&attr) != 0)
+ 		return (true);
+-	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
++	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_STALLED);
+ 	if (pthread_mutex_init(lock, &attr) != 0) {
+ 		pthread_mutexattr_destroy(&attr);
+ 		return (true);
+diff --git a/mozglue/misc/TimeStamp_darwin.cpp b/mozglue/misc/TimeStamp_darwin.cpp
+index f30bc98..3998c9c 100644
+--- a/mozglue/misc/TimeStamp_darwin.cpp
++++ b/mozglue/misc/TimeStamp_darwin.cpp
+@@ -18,7 +18,6 @@
+ 
+ #include <mach/mach_time.h>
+ #include <sys/time.h>
+-#include <sys/sysctl.h>
+ #include <time.h>
+ #include <unistd.h>
+ 
+diff --git a/mozglue/misc/TimeStamp_posix.cpp b/mozglue/misc/TimeStamp_posix.cpp
+index 05dedde..d9e30f2 100644
+--- a/mozglue/misc/TimeStamp_posix.cpp
++++ b/mozglue/misc/TimeStamp_posix.cpp
+@@ -21,7 +21,6 @@
+ #if defined(__DragonFly__) || defined(__FreeBSD__) \
+     || defined(__NetBSD__) || defined(__OpenBSD__)
+ #include <sys/param.h>
+-#include <sys/sysctl.h>
+ #endif
+ 
+ #if defined(__DragonFly__) || defined(__FreeBSD__)
+diff --git a/nsprpub/pr/src/misc/prsystem.c b/nsprpub/pr/src/misc/prsystem.c
+index eba85fb..54b57bb 100644
+--- a/nsprpub/pr/src/misc/prsystem.c
++++ b/nsprpub/pr/src/misc/prsystem.c
+@@ -27,7 +27,6 @@
+     || defined(OPENBSD) || defined(DRAGONFLY) || defined(DARWIN)
+ #define _PR_HAVE_SYSCTL
+ #include <sys/param.h>
+-#include <sys/sysctl.h>
+ #endif
+ 
+ #if defined(DARWIN)
+diff --git a/python/psutil/psutil/_psutil_bsd.c b/python/psutil/psutil/_psutil_bsd.c
+index 7b6e561..0a91262 100644
+--- a/python/psutil/psutil/_psutil_bsd.c
++++ b/python/psutil/psutil/_psutil_bsd.c
+@@ -16,7 +16,6 @@
+ #include <fcntl.h>
+ #include <paths.h>
+ #include <sys/types.h>
+-#include <sys/sysctl.h>
+ #include <sys/param.h>
+ #include <sys/user.h>
+ #include <sys/proc.h>
+diff --git a/python/psutil/psutil/_psutil_osx.c b/python/psutil/psutil/_psutil_osx.c
+index 3ebf8ff..b3910ba 100644
+--- a/python/psutil/psutil/_psutil_osx.c
++++ b/python/psutil/psutil/_psutil_osx.c
+@@ -13,7 +13,6 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <utmpx.h>
+-#include <sys/sysctl.h>
+ #include <sys/vmmeter.h>
+ #include <libproc.h>
+ #include <sys/proc_info.h>
+diff --git a/python/psutil/psutil/arch/bsd/process_info.c b/python/psutil/psutil/arch/bsd/process_info.c
+index 4d73924..46f288d 100644
+--- a/python/psutil/psutil/arch/bsd/process_info.c
++++ b/python/psutil/psutil/arch/bsd/process_info.c
+@@ -15,7 +15,6 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <sys/types.h>
+-#include <sys/sysctl.h>
+ #include <sys/param.h>
+ #include <sys/user.h>
+ #include <sys/proc.h>
+diff --git a/python/psutil/psutil/arch/osx/process_info.c b/python/psutil/psutil/arch/osx/process_info.c
+index b6dd5bb..62a838f 100644
+--- a/python/psutil/psutil/arch/osx/process_info.c
++++ b/python/psutil/psutil/arch/osx/process_info.c
+@@ -16,7 +16,6 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <signal.h>
+-#include <sys/sysctl.h>
+ #include <libproc.h>
+ 
+ #include "process_info.h"
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch
index 6432e1f..9194e34 100644
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch
@@ -1,4 +1,4 @@
-From a452138a1dd274bfad381a701729783360dc86fb Mon Sep 17 00:00:00 2001
+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
@@ -10,37 +10,26 @@
 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
+Rebase to 52.8.1
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ js/src/old-configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/js/src/old-configure b/js/src/old-configure
+index 8a8ef52..d7afcff 100644
+--- a/js/src/old-configure
++++ b/js/src/old-configure
+@@ -3964,7 +3964,7 @@ IMPORT_LIB_SUFFIX=
  DIRENT_INO=d_ino
  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_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
++MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${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
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/Manually_mmap_heap_memory_esr17.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/Manually_mmap_heap_memory_esr17.patch
deleted file mode 100644
index 83f4543..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/Manually_mmap_heap_memory_esr17.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 1d1fa95c8ff7697e46343385a79a8f7e5c514a87 Mon Sep 17 00:00:00 2001
-From: Zheng Xu <zheng.xu@linaro.org>
-Date: Fri, 2 Sep 2016 17:40:05 +0800
-Subject: [PATCH] Bug 1143022 - Manually mmap on arm64 to ensure high 17 bits
- are clear. r=ehoogeveen
-
-There might be 48-bit VA on arm64 depending on kernel configuration.
-Manually mmap heap memory to align with the assumption made by JS engine.
-
-Change-Id: Ic5d2b2fe4b758b3c87cc0688348af7e71a991146
-
-Upstream-status: Backport
-
----
- js/src/gc/Memory.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 71 insertions(+), 2 deletions(-)
-
-diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp
-index e5ad018..4149adf 100644
---- a/js/src/gc/Memory.cpp
-+++ b/js/src/gc/Memory.cpp
-@@ -309,6 +309,75 @@ InitMemorySubsystem()
- #endif
- }
- 
-+static inline void *
-+MapMemory(size_t length, int prot, int flags, int fd, off_t offset)
-+{
-+#if defined(__ia64__)
-+    /*
-+     * The JS engine assumes that all allocated pointers have their high 17 bits clear,
-+     * which ia64's mmap doesn't support directly. However, we can emulate it by passing
-+     * mmap an "addr" parameter with those bits clear. The mmap will return that address,
-+     * or the nearest available memory above that address, providing a near-guarantee
-+     * that those bits are clear. If they are not, we return NULL below to indicate
-+     * out-of-memory.
-+     *
-+     * The addr is chosen as 0x0000070000000000, which still allows about 120TB of virtual
-+     * address space.
-+     *
-+     * See Bug 589735 for more information.
-+     */
-+    void *region = mmap((void*)0x0000070000000000, length, prot, flags, fd, offset);
-+    if (region == MAP_FAILED)
-+        return MAP_FAILED;
-+    /*
-+     * If the allocated memory doesn't have its upper 17 bits clear, consider it
-+     * as out of memory.
-+     */
-+    if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) {
-+        JS_ALWAYS_TRUE(0 == munmap(region, length));
-+        return MAP_FAILED;
-+    }
-+    return region;
-+#elif defined(__aarch64__)
-+   /*
-+    * There might be similar virtual address issue on arm64 which depends on
-+    * hardware and kernel configurations. But the work around is slightly
-+    * different due to the different mmap behavior.
-+    *
-+    * TODO: Merge with the above code block if this implementation works for
-+    * ia64 and sparc64.
-+    */
-+    const uintptr_t start = UINT64_C(0x0000070000000000);
-+    const uintptr_t end   = UINT64_C(0x0000800000000000);
-+    const uintptr_t step  = ChunkSize;
-+   /*
-+    * Optimization options if there are too many retries in practice:
-+    * 1. Examine /proc/self/maps to find an available address. This file is
-+    *    not always available, however. In addition, even if we examine
-+    *    /proc/self/maps, we may still need to retry several times due to
-+    *    racing with other threads.
-+    * 2. Use a global/static variable with lock to track the addresses we have
-+    *    allocated or tried.
-+    */
-+    uintptr_t hint;
-+    void* region = MAP_FAILED;
-+    for (hint = start; region == MAP_FAILED && hint + length <= end; hint += step) {
-+        region = mmap((void*)hint, length, prot, flags, fd, offset);
-+        if (region != MAP_FAILED) {
-+            if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) {
-+                if (munmap(region, length)) {
-+                    MOZ_ASSERT(errno == ENOMEM);
-+                }
-+                region = MAP_FAILED;
-+            }
-+        }
-+    }
-+    return region == MAP_FAILED ? NULL : region;
-+#else
-+    return mmap(NULL, length, prot, flags, fd, offset);
-+#endif
-+}
-+
- void *
- MapAlignedPages(size_t size, size_t alignment)
- {
-@@ -322,12 +391,12 @@ MapAlignedPages(size_t size, size_t alignment)
- 
-     /* Special case: If we want page alignment, no further work is needed. */
-     if (alignment == PageSize) {
--        return mmap(NULL, size, prot, flags, -1, 0);
-+        return MapMemory(size, prot, flags, -1, 0);
-     }
- 
-     /* Overallocate and unmap the region's edges. */
-     size_t reqSize = Min(size + 2 * alignment, 2 * size);
--    void *region = mmap(NULL, reqSize, prot, flags, -1, 0);
-+    void *region = MapMemory(reqSize, prot, flags, -1, 0);
-     if (region == MAP_FAILED)
-         return NULL;
- 
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/add-riscv-support.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/add-riscv-support.patch
new file mode 100644
index 0000000..4354a9d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/add-riscv-support.patch
@@ -0,0 +1,70 @@
+Add RISC-V support
+
+Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1318905]
+
+Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
+
+diff --git a/build/autoconf/config.guess b/build/autoconf/config.guess
+index d5d667d..1277a86 100755
+--- a/build/autoconf/config.guess
++++ b/build/autoconf/config.guess
+@@ -1029,6 +1029,9 @@ EOF
+     ppcle:Linux:*:*)
+ 	echo powerpcle-unknown-linux-${LIBC}
+ 	exit ;;
++    riscv32:Linux:*:* | riscv64:Linux:*:*)
++	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++	exit ;;
+     s390:Linux:*:* | s390x:Linux:*:*)
+ 	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ 	exit ;;
+diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
+index 6fe6591..56e6730 100644
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -362,6 +362,9 @@ def split_triplet(triplet):
+     elif cpu.startswith('aarch64'):
+         canonical_cpu = 'aarch64'
+         endianness = 'little'
++    elif cpu in ('riscv32', 'riscv64'):
++        canonical_cpu = cpu
++        endianness = 'little'
+     else:
+         die('Unknown CPU type: %s' % cpu)
+ 
+diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h
+index 15dd4bf..4f37218 100644
+--- a/mfbt/double-conversion/utils.h
++++ b/mfbt/double-conversion/utils.h
+@@ -60,7 +60,8 @@
+     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
+     defined(__SH4__) || defined(__alpha__) || \
+     defined(_MIPS_ARCH_MIPS32R2) || \
+-    defined(__AARCH64EL__) || defined(__aarch64__)
++    defined(__AARCH64EL__) || defined(__aarch64__) || \
++    defined(__riscv)
+ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
+ #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
+ #if defined(_WIN32)
+diff --git a/python/mozbuild/mozbuild/configure/constants.py b/python/mozbuild/mozbuild/configure/constants.py
+index dfc7cf8..4f8d666 100644
+--- a/python/mozbuild/mozbuild/configure/constants.py
++++ b/python/mozbuild/mozbuild/configure/constants.py
+@@ -48,6 +48,8 @@ CPU_bitness = {
+     'mips64': 64,
+     'ppc': 32,
+     'ppc64': 64,
++    'riscv32': 32,
++    'riscv64': 64,
+     's390': 32,
+     's390x': 64,
+     'sparc': 32,
+@@ -79,6 +81,8 @@ CPU_preprocessor_checks = OrderedDict((
+     ('s390', '__s390__'),
+     ('ppc64', '__powerpc64__'),
+     ('ppc', '__powerpc__'),
++    ('riscv32', '__riscv && __SIZEOF_POINTER__ == 4'),
++    ('riscv64', '__riscv && __SIZEOF_POINTER__ == 8'),
+     ('Alpha', '__alpha__'),
+     ('hppa', '__hppa__'),
+     ('sparc64', '__sparc__ && __arch64__'),
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/disable-mozglue-in-stand-alone-builds.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/disable-mozglue-in-stand-alone-builds.patch
new file mode 100644
index 0000000..5487cdb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/disable-mozglue-in-stand-alone-builds.patch
@@ -0,0 +1,74 @@
+From 2fb531ac753500314336ccd508cb2d53f5e768e5 Mon Sep 17 00:00:00 2001
+From: Till Schneidereit <till@tillschneidereit.net>
+Date: Thu, 1 Oct 2015 12:59:09 +0200
+Subject: Disable MOZ_GLUE_IN_PROGRAM in stand-alone builds on all platforms
+
+Otherwise, build fails not being able to find HashBytes.
+
+Patch ported forward to mozjs52 by Philip Chimento
+<philip.chimento@gmail.com>.
+
+https://bugzilla.mozilla.org/show_bug.cgi?id=1176787
+
+Upstream-Status: Backport
+
+Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
+---
+ js/src/old-configure    | 20 ++++++++++++--------
+ mozglue/build/moz.build |  2 +-
+ 2 files changed, 13 insertions(+), 9 deletions(-)
+
+diff --git a/js/src/old-configure b/js/src/old-configure
+index d7afcff..8a6f142 100644
+--- a/js/src/old-configure
++++ b/js/src/old-configure
+@@ -8546,21 +8546,25 @@ if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
+ fi
+ 
+ 
+-case "${OS_TARGET}" in
+-Android|WINNT|Darwin)
++if test "$JS_STANDALONE"; then
+   MOZ_GLUE_IN_PROGRAM=
+-  ;;
+-*)
+-    MOZ_GLUE_IN_PROGRAM=1
+-  cat >> confdefs.pytmp <<\EOF
++else
++  case "${OS_TARGET}" in
++  Android|WINNT|Darwin)
++    MOZ_GLUE_IN_PROGRAM=
++    ;;
++  *)
++        MOZ_GLUE_IN_PROGRAM=1
++    cat >> confdefs.pytmp <<\EOF
+     (''' MOZ_GLUE_IN_PROGRAM ''', ' 1 ')
+ EOF
+ cat >> confdefs.h <<\EOF
+ #define MOZ_GLUE_IN_PROGRAM 1
+ EOF
+ 
+-  ;;
+-esac
++    ;;
++  esac
++fi
+ 
+ if test "$MOZ_MEMORY"; then
+   if test "x$MOZ_DEBUG" = "x1"; then
+diff --git a/mozglue/build/moz.build b/mozglue/build/moz.build
+index d289747..e3be5a2 100644
+--- a/mozglue/build/moz.build
++++ b/mozglue/build/moz.build
+@@ -6,7 +6,7 @@
+ 
+ # Build mozglue as a shared lib on Windows, OSX and Android.
+ # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
+-if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
++if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android') and not CONFIG['JS_STANDALONE']:
+     SharedLibrary('mozglue')
+ else:
+     Library('mozglue')
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix-the-compile-error-of-powerpc64.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix-the-compile-error-of-powerpc64.patch
deleted file mode 100644
index 43c4590..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix-the-compile-error-of-powerpc64.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix_milestone_compile_issue.patch b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix_milestone_compile_issue.patch
deleted file mode 100644
index abde01b..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/fix_milestone_compile_issue.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_17.0.0.bb b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_17.0.0.bb
deleted file mode 100644
index 49b7f15..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_17.0.0.bb
+++ /dev/null
@@ -1,82 +0,0 @@
-SUMMARY = "SpiderMonkey is Mozilla's JavaScript engine written in C/C++"
-HOMEPAGE = "http://www.mozilla.org/js/"
-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://Manually_mmap_heap_memory_esr17.patch;patchdir=../../ \
-           file://0001-compare-the-first-character-of-string-to-be-null-or-.patch;patchdir=../../ \
-           "
-
-SRC_URI[md5sum] = "20b6f8f1140ef6e47daa3b16965c9202"
-SRC_URI[sha256sum] = "321e964fe9386785d3bf80870640f2fa1c683e32fe988eeb201b04471c172fba"
-
-S = "${WORKDIR}/${BPN}${PV}/js/src"
-
-inherit autotools pkgconfig perlnative pythonnative
-
-DEPENDS += "nspr zlib"
-
-# Host specific flags need to be defined, otherwise target flags will be passed to the host
-export HOST_CFLAGS = "${BUILD_CFLAGS}"
-export HOST_CXXFLAGS = "${BUILD_CXXFLAGS}"
-export HOST_LDFLAGS = "${BUILD_LDFLAGS}"
-
-# 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.filter('DISTRO_FEATURES', '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() {
-    export HOST_CFLAGS="${BUILD_CFLAGS}"
-    export HOST_CXXFLAGS="${BUILD_CPPFLAGS}"
-    export HOST_LDFLAGS="${BUILD_LDFLAGS}"
-    ( 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${BPN}"
-FILES_lib${BPN} += "${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/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_52.9.1.bb b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_52.9.1.bb
new file mode 100644
index 0000000..0dfe2f8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_52.9.1.bb
@@ -0,0 +1,111 @@
+SUMMARY = "SpiderMonkey is Mozilla's JavaScript engine written in C/C++"
+HOMEPAGE = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=815ca599c9df247a0c7f619bab123dad"
+
+SRC_URI = "http://archive.ubuntu.com/ubuntu/pool/main/m/mozjs52/mozjs52_52.9.1.orig.tar.xz \
+           file://0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch \
+           file://0010-fix-cross-compilation-on-i586-targets.patch \
+           file://0001-do-not-create-python-environment.patch \
+           file://0002-fix-cannot-find-link.patch \
+           file://0003-workaround-autoconf-2.13-detection-failed.patch \
+           file://0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch \
+           file://0005-fix-do_compile-failed-on-mips.patch \
+           file://disable-mozglue-in-stand-alone-builds.patch \
+           file://add-riscv-support.patch \
+           file://0001-mozjs-fix-coredump-caused-by-getenv.patch \
+           "
+SRC_URI_append_libc-musl = " \
+           file://0006-support-musl.patch \
+           "
+SRC_URI_append_mipsarchn32 = " \
+           file://0001-fix-compiling-failure-on-mips64-n32-bsp.patch \
+           "
+
+SRC_URI[md5sum] = "c9473c625ee0a9edaaac8b742ff24c5f"
+SRC_URI[sha256sum] = "f9324a6724233ab15f10381fe13e635e89d725ef1e78025a0a7d36c58a84a0f9"
+
+inherit autotools pkgconfig perlnative pythonnative
+
+inherit distro_features_check
+CONFLICT_DISTRO_FEATURES_mipsarchn32 = "ld-is-gold"
+
+DEPENDS += "nspr zlib"
+
+# Disable null pointer optimization in gcc >= 6
+# https://bugzilla.redhat.com/show_bug.cgi?id=1328045
+CFLAGS += "-fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks"
+CXXFLAGS += "-fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks"
+
+# nspr's package-config is ignored so set libs manually
+EXTRA_OECONF = " \
+    --target=${TARGET_SYS} \
+    --host=${BUILD_SYS} \
+    --prefix=${prefix} \
+    --libdir=${libdir} \
+    --disable-tests \
+    --with-nspr-libs='-lplds4 -lplc4 -lnspr4' \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', "--enable-gold", '--disable-gold', d)} \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+PACKAGECONFIG[x11] = "--x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},,virtual/libx11"
+
+EXTRA_OEMAKE_task-compile += "OS_LDFLAGS='-Wl,-latomic ${LDFLAGS}'"
+EXTRA_OEMAKE_task-install += "STATIC_LIBRARY_NAME=js_static"
+
+do_configure() {
+    export SHELL="/bin/sh"
+    export TMP="${B}"
+    ${S}/js/src/configure ${EXTRA_OECONF}
+}
+
+do_compile_prepend() {
+    export SHELL="/bin/sh"
+    export S
+    export PYTHONPATH
+    cd ${S}
+    for sub_dir in python testing/mozbase; do
+        for module_dir in `ls $sub_dir -1`;do
+            [ $module_dir = "virtualenv" ] && continue
+            if [ -d "${S}/$sub_dir/$module_dir" ];then
+                PYTHONPATH="$PYTHONPATH:${S}/$sub_dir/$module_dir"
+            fi
+        done
+    done
+    PYTHONPATH="$PYTHONPATH:${S}/config:${S}/build"
+    cd -
+}
+
+do_install_prepend() {
+    export SHELL="/bin/sh"
+    export S
+    export PYTHONPATH
+    cd ${S}
+    for sub_dir in python testing/mozbase; do
+        for module_dir in `ls $sub_dir -1`;do
+            [ $module_dir = "virtualenv" ] && continue
+            if [ -d "${S}/$sub_dir/$module_dir" ];then
+                PYTHONPATH="$PYTHONPATH:${S}/$sub_dir/$module_dir"
+            fi
+        done
+    done
+    PYTHONPATH="$PYTHONPATH:${S}/config:${S}/build"
+    cd -
+}
+
+PACKAGES =+ "lib${BPN}"
+FILES_lib${BPN} += "${libdir}/lib*.so"
+FILES_${PN}-dev += "${bindir}/js52-config"
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:2172: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r2,r1,LSR#20'
+#| {standard input}:2173: Error: unshifted register required -- `bic r2,r2,#(1<<11)'
+#| {standard input}:2174: Error: unshifted register required -- `orr r1,r1,#(1<<20)'
+#| {standard input}:2176: Error: instruction not supported in Thumb16 mode -- `subs r2,r2,#0x300'
+#| {standard input}:2178: Error: instruction not supported in Thumb16 mode -- `subs r5,r2,#52'
+ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET_armv4 = "arm"
+
+DISABLE_STATIC = ""
diff --git a/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb b/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
index 13e67cb..419b3ee 100644
--- a/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
@@ -2,25 +2,23 @@
 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"
+LIC_FILES_CHKSUM = "file://../COPYING;md5=75859989545e37968a99b631ef42722e"
 SECTION = "System/Management"
 
 inherit setuptools
 
-DEPENDS = "python-native pywbem-native python-m2crypto pywbem"
+DEPENDS = "python-native python-pywbem-native python-m2crypto python-pywbem"
 
 SRC_URI = "http://fedorahosted.org/released/${BPN}/${BP}.tar.gz \
           "
 SRC_URI[md5sum] = "e156246cb7b49753db82f4ddf7f03e50"
 SRC_URI[sha256sum] = "292b8f5f2250655a4add8183c529b73358bc980bd4f23cfa484a940953fce9e4"
 
-do_compile_prepend() {
-    cd cli
+S = "${WORKDIR}/${BP}/cli"
+
+do_configure_prepend() {
     sed 's/@@VERSION@@/$(VERSION)/g' setup.py.skel >setup.py
 }
-do_install_prepend() {
-    cd cli
-}
 
 python() {
     if 'meta-python' not in d.getVar('BBFILE_COLLECTIONS').split():
diff --git a/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0001-Port-to-OpenSSL-1.1.0.patch b/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0001-Port-to-OpenSSL-1.1.0.patch
new file mode 100644
index 0000000..49afa56
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0001-Port-to-OpenSSL-1.1.0.patch
@@ -0,0 +1,162 @@
+From f78643d2388dd0697f83f17880403253a0596d83 Mon Sep 17 00:00:00 2001
+From: Vitezslav Crhonek <vcrhonek@redhat.com>
+Date: Wed, 5 Sep 2018 11:23:46 -0700
+Subject: [PATCH 1/2] Port to OpenSSL 1.1.0
+
+Upstream-Status: Submitted [https://github.com/Openwsman/openwsman/pull/99]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/lib/wsman-curl-client-transport.c |  6 +++-
+ src/server/shttpd/io_ssl.c            | 17 ----------
+ src/server/shttpd/shttpd.c            | 20 ++++--------
+ src/server/shttpd/ssl.h               | 46 ---------------------------
+ 4 files changed, 12 insertions(+), 77 deletions(-)
+
+diff --git a/src/lib/wsman-curl-client-transport.c b/src/lib/wsman-curl-client-transport.c
+index cd7f517a..e64ad097 100644
+--- a/src/lib/wsman-curl-client-transport.c
++++ b/src/lib/wsman-curl-client-transport.c
+@@ -241,12 +241,16 @@ write_handler( void *ptr, size_t size, size_t nmemb, void *data)
+ static int ssl_certificate_thumbprint_verify_callback(X509_STORE_CTX *ctx, void *arg)
+ {
+ 	unsigned char *thumbprint = (unsigned char *)arg;
+-	X509 *cert = ctx->cert;
+ 	EVP_MD                                  *tempDigest;
+ 
+ 	unsigned char   tempFingerprint[EVP_MAX_MD_SIZE];
+ 	unsigned int      tempFingerprintLen;
+ 	tempDigest = (EVP_MD*)EVP_sha1( );
++
++	X509 *cert = X509_STORE_CTX_get_current_cert(ctx);
++	if(!cert)
++		return 0;
++
+ 	if ( X509_digest(cert, tempDigest, tempFingerprint, &tempFingerprintLen ) <= 0)
+ 		return 0;
+ 	if(!memcmp(tempFingerprint, thumbprint, tempFingerprintLen))
+diff --git a/src/server/shttpd/io_ssl.c b/src/server/shttpd/io_ssl.c
+index 6de0db2a..7ac669e4 100644
+--- a/src/server/shttpd/io_ssl.c
++++ b/src/server/shttpd/io_ssl.c
+@@ -11,23 +11,6 @@
+ #include "defs.h"
+ 
+ #if !defined(NO_SSL)
+-struct ssl_func	ssl_sw[] = {
+-	{"SSL_free",			{0}},
+-	{"SSL_accept",			{0}},
+-	{"SSL_connect",			{0}},
+-	{"SSL_read",			{0}},
+-	{"SSL_write",			{0}},
+-	{"SSL_get_error",		{0}},
+-	{"SSL_set_fd",			{0}},
+-	{"SSL_new",			{0}},
+-	{"SSL_CTX_new",			{0}},
+-	{"SSLv23_server_method",	{0}},
+-	{"SSL_library_init",		{0}},
+-	{"SSL_CTX_use_PrivateKey_file",	{0}},
+-	{"SSL_CTX_use_certificate_file",{0}},
+-	{NULL,				{0}}
+-};
+-
+ void
+ _shttpd_ssl_handshake(struct stream *stream)
+ {
+diff --git a/src/server/shttpd/shttpd.c b/src/server/shttpd/shttpd.c
+index 5876392e..4c1dbf32 100644
+--- a/src/server/shttpd/shttpd.c
++++ b/src/server/shttpd/shttpd.c
+@@ -1476,20 +1476,14 @@ set_ssl(struct shttpd_ctx *ctx, const char *pem)
+ 	int		retval = FALSE;
+ 	EC_KEY*		key;
+ 
+-	/* Load SSL library dynamically */
+-	if ((lib = dlopen(SSL_LIB, RTLD_LAZY)) == NULL) {
+-		_shttpd_elog(E_LOG, NULL, "set_ssl: cannot load %s", SSL_LIB);
+-		return (FALSE);
+-	}
+-
+-	for (fp = ssl_sw; fp->name != NULL; fp++)
+-		if ((fp->ptr.v_void = dlsym(lib, fp->name)) == NULL) {
+-			_shttpd_elog(E_LOG, NULL,"set_ssl: cannot find %s", fp->name);
+-			return (FALSE);
+-		}
+-
+ 	/* Initialize SSL crap */
++	debug("Initialize SSL");
++	SSL_load_error_strings();
++	#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ 	SSL_library_init();
++	#else
++	OPENSSL_init_ssl(0, NULL);
++	#endif
+ 
+ 	if ((CTX = SSL_CTX_new(SSLv23_server_method())) == NULL)
+ 		_shttpd_elog(E_LOG, NULL, "SSL_CTX_new error");
+@@ -1532,7 +1526,7 @@ set_ssl(struct shttpd_ctx *ctx, const char *pem)
+ 			if (strncasecmp(protocols[idx].name, ssl_disabled_protocols, blank_ptr-ssl_disabled_protocols) == 0) {
+ 				//_shttpd_elog(E_LOG, NULL, "SSL: disable %s protocol", protocols[idx].name);
+ 				debug("SSL: disable %s protocol", protocols[idx].name);
+-				SSL_CTX_ctrl(CTX, SSL_CTRL_OPTIONS, protocols[idx].opt, NULL);
++				SSL_CTX_set_options(CTX, protocols[idx].opt);
+ 				break;
+ 			}
+ 		}
+diff --git a/src/server/shttpd/ssl.h b/src/server/shttpd/ssl.h
+index a863f2c7..8dad0109 100644
+--- a/src/server/shttpd/ssl.h
++++ b/src/server/shttpd/ssl.h
+@@ -12,50 +12,4 @@
+ 
+ #include <openssl/ssl.h>
+ 
+-#else
+-
+-/*
+- * Snatched from OpenSSL includes. I put the prototypes here to be independent
+- * from the OpenSSL source installation. Having this, shttpd + SSL can be
+- * built on any system with binary SSL libraries installed.
+- */
+-
+-typedef struct ssl_st SSL;
+-typedef struct ssl_method_st SSL_METHOD;
+-typedef struct ssl_ctx_st SSL_CTX;
+-
+-#define	SSL_ERROR_WANT_READ	2
+-#define	SSL_ERROR_WANT_WRITE	3
+-#define	SSL_ERROR_SYSCALL	5
+-#define	SSL_FILETYPE_PEM	1
+-
+ #endif
+-
+-/*
+- * Dynamically loaded SSL functionality
+- */
+-struct ssl_func {
+-	const char	*name;		/* SSL function name	*/
+-	union variant	ptr;		/* Function pointer	*/
+-};
+-
+-extern struct ssl_func	ssl_sw[];
+-
+-#define	FUNC(x)	ssl_sw[x].ptr.v_func
+-
+-#define	SSL_free(x)	(* (void (*)(SSL *)) FUNC(0))(x)
+-#define	SSL_accept(x)	(* (int (*)(SSL *)) FUNC(1))(x)
+-#define	SSL_connect(x)	(* (int (*)(SSL *)) FUNC(2))(x)
+-#define	SSL_read(x,y,z)	(* (int (*)(SSL *, void *, int)) FUNC(3))((x),(y),(z))
+-#define	SSL_write(x,y,z) \
+-	(* (int (*)(SSL *, const void *,int)) FUNC(4))((x), (y), (z))
+-#define	SSL_get_error(x,y)(* (int (*)(SSL *, int)) FUNC(5))((x), (y))
+-#define	SSL_set_fd(x,y)	(* (int (*)(SSL *, int)) FUNC(6))((x), (y))
+-#define	SSL_new(x)	(* (SSL * (*)(SSL_CTX *)) FUNC(7))(x)
+-#define	SSL_CTX_new(x)	(* (SSL_CTX * (*)(SSL_METHOD *)) FUNC(8))(x)
+-#define	SSLv23_server_method()	(* (SSL_METHOD * (*)(void)) FUNC(9))()
+-#define	SSL_library_init() (* (int (*)(void)) FUNC(10))()
+-#define	SSL_CTX_use_PrivateKey_file(x,y,z)	(* (int (*)(SSL_CTX *, \
+-		const char *, int)) FUNC(11))((x), (y), (z))
+-#define	SSL_CTX_use_certificate_file(x,y,z)	(* (int (*)(SSL_CTX *, \
+-		const char *, int)) FUNC(12))((x), (y), (z))
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch b/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch
new file mode 100644
index 0000000..5ae2e00
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch
@@ -0,0 +1,48 @@
+From 75669b077bd54bedbc086c60cbe137e7f4c685b5 Mon Sep 17 00:00:00 2001
+From: Vitezslav Crhonek <vcrhonek@redhat.com>
+Date: Mon, 24 Apr 2017 11:28:39 +0200
+Subject: [PATCH 2/2] Check OpenSSL version number to allow builds with older
+ version
+
+Upstream-Status: Submitted [https://github.com/Openwsman/openwsman/pull/99]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/lib/wsman-curl-client-transport.c | 4 ++++
+ src/server/shttpd/shttpd.c            | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/src/lib/wsman-curl-client-transport.c b/src/lib/wsman-curl-client-transport.c
+index e64ad097..4fc047e8 100644
+--- a/src/lib/wsman-curl-client-transport.c
++++ b/src/lib/wsman-curl-client-transport.c
+@@ -247,7 +247,11 @@ static int ssl_certificate_thumbprint_verify_callback(X509_STORE_CTX *ctx, void
+ 	unsigned int      tempFingerprintLen;
+ 	tempDigest = (EVP_MD*)EVP_sha1( );
+ 
++	#if OPENSSL_VERSION_NUMBER < 0x10100000L
++	X509 *cert = ctx->cert;
++	#else
+ 	X509 *cert = X509_STORE_CTX_get_current_cert(ctx);
++	#endif
+ 	if(!cert)
+ 		return 0;
+ 
+diff --git a/src/server/shttpd/shttpd.c b/src/server/shttpd/shttpd.c
+index 4c1dbf32..161720c8 100644
+--- a/src/server/shttpd/shttpd.c
++++ b/src/server/shttpd/shttpd.c
+@@ -1526,7 +1526,11 @@ set_ssl(struct shttpd_ctx *ctx, const char *pem)
+ 			if (strncasecmp(protocols[idx].name, ssl_disabled_protocols, blank_ptr-ssl_disabled_protocols) == 0) {
+ 				//_shttpd_elog(E_LOG, NULL, "SSL: disable %s protocol", protocols[idx].name);
+ 				debug("SSL: disable %s protocol", protocols[idx].name);
++				#if OPENSSL_VERSION_NUMBER < 0x10100000L
++				SSL_CTX_ctrl(CTX, SSL_CTRL_OPTIONS, protocols[idx].opt, NULL);
++				#else
+ 				SSL_CTX_set_options(CTX, protocols[idx].opt);
++				#endif
+ 				break;
+ 			}
+ 		}
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.3.bb b/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.5.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.3.bb
rename to meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.5.bb
index f618f02..5fba385 100644
--- a/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.5.bb
@@ -15,13 +15,15 @@
 inherit distro_features_check
 REQUIRED_DISTRO_FEATURES = "pam"
 
-SRCREV = "feb7ec9b004fcaea0dbe65ce8a1a79cc29dd994c"
-PV = "2.6.3"
+SRCREV = "e90e5c96e3006c372bf45e0185e33c9250e67df6"
+PV = "2.6.5"
 
 SRC_URI = "git://github.com/Openwsman/openwsman.git \
            file://libssl-is-required-if-eventint-supported.patch \
            file://openwsmand.service \
            file://0001-lock.c-Define-PTHREAD_MUTEX_RECURSIVE_NP-if-undefine.patch \
+           file://0001-Port-to-OpenSSL-1.1.0.patch \
+           file://0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch \
            "
 
 S = "${WORKDIR}/git"
@@ -68,3 +70,4 @@
                    "
 
 INSANE_SKIP_${PN} = "dev-so"
+RDEPENDS_${PN} = "ruby"
diff --git a/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb b/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb
index d986da9..13479a9 100644
--- a/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/p7zip/p7zip_16.02.bb
@@ -17,26 +17,9 @@
 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
-    cat > ${D}${bindir}/7z << 'EOF'
-#!/bin/sh
-exec "$(dirname "$0")"/7z.bin "$@"
-EOF
-    chmod 0755 ${D}${bindir}/7z
+	install -d ${D}${bindir}
+	install -m 0755 ${S}/bin/* ${D}${bindir}
+	ln -s 7za ${D}${bindir}/7z
 }
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-extended/p8platform/files/0001-Make-resulting-cmake-config-relocatable.patch b/meta-openembedded/meta-oe/recipes-extended/p8platform/files/0001-Make-resulting-cmake-config-relocatable.patch
new file mode 100644
index 0000000..9ff85b1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/p8platform/files/0001-Make-resulting-cmake-config-relocatable.patch
@@ -0,0 +1,64 @@
+From 2650bb3bd3644784359be373252b0436873ca8cb Mon Sep 17 00:00:00 2001
+From: Pascal Bach <pascal.bach@siemens.com>
+Date: Fri, 28 Sep 2018 16:44:37 +0200
+Subject: [PATCH] Make resulting cmake config relocatable
+
+This change avoids hardcoded install prefix in the p8-platform-config.cmake.
+Especially important when doing cross compilation with Yocto for example.
+
+Upstream-Status: Submitted [https://github.com/Pulse-Eight/platform/pull/38]
+
+---
+ CMakeLists.txt              |  4 ----
+ p8-platform-config.cmake.in | 13 +++++++++----
+ 2 files changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7144b0b..f2db66e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -22,10 +22,6 @@ if(WIN32)
+                    src/windows/os-threads.cpp)
+ endif()
+ 
+-set(p8-platform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/p8-platform")
+-IF(WIN32)
+-  LIST(APPEND p8-platform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/p8-platform/windows")
+-ENDIF(WIN32)
+ set(p8-platform_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+ 
+ if(NOT ${CORE_SYSTEM_NAME} STREQUAL "")
+diff --git a/p8-platform-config.cmake.in b/p8-platform-config.cmake.in
+index 47f30f1..b08e96c 100644
+--- a/p8-platform-config.cmake.in
++++ b/p8-platform-config.cmake.in
+@@ -9,17 +9,22 @@
+ #  p8-platform_LIBRARY_DIRS - directories in which the libraries are situated
+ #
+ # propagate these properties from one build system to the other
++get_filename_component(_p8-platform_rootdir ${CMAKE_CURRENT_LIST_DIR}/../ ABSOLUTE)
++
+ set (p8-platform_VERSION "@p8-platform_VERSION_MAJOR@.@p8-platform_VERSION_MINOR@")
+-set (p8-platform_INCLUDE_DIRS @p8-platform_INCLUDE_DIRS@ @CMAKE_INSTALL_PREFIX@/include)
+-set (p8-platform_LIBRARY_DIRS "@CMAKE_LIBRARY_OUTPUT_DIRECTORY@")
++set (p8-platform_INCLUDE_DIRS "${_p8-platform_rootdir}/include" "${_p8-platform_rootdir}/include/p8-platform")
++if(WIN32)
++  list(APPEND p8-platform_INCLUDE_DIRS "${_p8-platform_rootdir}/include/p8-platform/windows")
++endif(WIN32)
++set (p8-platform_LIBRARY_DIRS "${_p8-platform_rootdir}")
+ set (p8-platform_LINKER_FLAGS "@p8-platform_LINKER_FLAGS@")
+ set (p8-platform_CONFIG_VARS "@p8-platform_CONFIG_VARS@")
+ 
+ # libraries come from the build tree where this file was generated
+ if(WIN32)
+-  set (p8-platform_LIBRARY "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/p8-platform.lib")
++  set (p8-platform_LIBRARY "${_p8-platform_rootdir}/p8-platform.lib")
+ else(WIN32)
+-  set (p8-platform_LIBRARY "-L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -lp8-platform")
++  set (p8-platform_LIBRARY "-L${_p8-platform_rootdir} -lp8-platform")
+ endif(WIN32)
+ set (p8-platform_LIBRARIES ${p8-platform_LIBRARY} "@p8-platform_LIBRARIES@")
+ mark_as_advanced (p8-platform_LIBRARY)
+-- 
+2.11.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/p8platform/p8platform_git.bb b/meta-openembedded/meta-oe/recipes-extended/p8platform/p8platform_git.bb
index f6347c2..0690d4b 100644
--- a/meta-openembedded/meta-oe/recipes-extended/p8platform/p8platform_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/p8platform/p8platform_git.bb
@@ -4,10 +4,11 @@
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://src/os.h;md5=752555fa94e82005d45fd201fee5bd33"
 
-PV = "2.1.0"
+PV = "2.1.0.1"
 
-SRC_URI = "git://github.com/Pulse-Eight/platform.git"
-SRCREV = "d7bceb64541cb046421cbcd4c98d91e9bf24822f"
+SRC_URI = "git://github.com/Pulse-Eight/platform.git \
+           file://0001-Make-resulting-cmake-config-relocatable.patch"
+SRCREV = "2d90f98620e25f47702c9e848380c0d93f29462b"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb
new file mode 100644
index 0000000..95d879d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb
@@ -0,0 +1,22 @@
+SUMMARY = "PAM cached credentials module"
+HOMEPAGE = "https://www.padl.com/OSS/pam_ccreds.html"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libpam openssl db"
+
+inherit distro_features_check
+REQUIRED_DISTRO_FEATURES = "pam"
+
+SRCREV = "e2145df09469bf84878e4729b4ecd814efb797d1"
+
+SRC_URI = "git://github.com/PADL/pam_ccreds"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+EXTRA_OECONF += "--libdir=${base_libdir} "
+
+FILES_${PN} += "${base_libdir}/security/pam*"
diff --git a/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb
new file mode 100644
index 0000000..c59a259
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb
@@ -0,0 +1,23 @@
+SUMMARY = "PAM searchless LDAP authentication module"
+HOMEPAGE = "https://github.com/rmbreak/pam_ldapdb"
+BUGTRACKER = "https://github.com/rmbreak/pam_ldapdb/issues"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=41ab94182d94be9bb35e2a8b933f1e7d"
+
+DEPENDS = "libpam openldap"
+
+inherit distro_features_check
+REQUIRED_DISTRO_FEATURES = "pam"
+
+SRC_URI = "https://github.com/rmbreak/pam_ldapdb/archive/v${PV}.tar.gz;downloadfilename=${BP}.tar.gz"
+SRC_URI[md5sum] = "2dd4f1370fcfe995ee0ad09611109b87"
+SRC_URI[sha256sum] = "8ed92b36523556bb5d9bf3eb33a1035e46041d4be767c8d62136930c0ca0e45b"
+
+S = "${WORKDIR}/pam_ldapdb-${PV}"
+
+do_install () {
+    oe_runmake install DESTDIR=${D} PAMDIR=${base_libdir}/security
+}
+
+FILES_${PN} += "${base_libdir}/security/pam_ldapdb.so"
diff --git a/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb b/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
index 1638c41..2a461fc 100644
--- a/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
@@ -11,7 +11,7 @@
 SRC_URI[md5sum] = "8dbe90ab3625e545036333e6f51ccf1d"
 SRC_URI[sha256sum] = "3c53d358d6eaed1b211239df017c27c6f9970995d14102ae67bae16d4f47a763"
 
-DEPENDS += "libpam openssl"
+DEPENDS += "libpam openssl10"
 
 inherit distro_features_check
 REQUIRED_DISTRO_FEATURES = "pam"
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch
new file mode 100644
index 0000000..747538b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch
@@ -0,0 +1,29 @@
+From 2a22dc96c3bbb5c9bbcc008f58d4f5c64e3d19e6 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Mon, 23 Jul 2018 11:23:39 -0700
+Subject: [PATCH] jemalloc/jemalloc.cfg: Specify the host when building
+ jemalloc
+
+To avoid this error:
+    configure: error: cannot run C compiled programs.
+    If you meant to cross compile, use `--host'.
+when cross compiling specify the host when configuring jemalloc.
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [configuration]
+---
+ src/jemalloc/jemalloc.cfg | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/jemalloc/jemalloc.cfg b/src/jemalloc/jemalloc.cfg
+index 196129de6..79ebbab1c 100644
+--- a/src/jemalloc/jemalloc.cfg
++++ b/src/jemalloc/jemalloc.cfg
+@@ -3,3 +3,4 @@
+ --with-private-namespace=je_vmem_
+ --disable-xmalloc
+ --disable-munmap
++--host=${HOST_SYS}
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0002-Makefile-Don-t-install-the-docs.patch b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0002-Makefile-Don-t-install-the-docs.patch
new file mode 100644
index 0000000..bd1b97c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0002-Makefile-Don-t-install-the-docs.patch
@@ -0,0 +1,26 @@
+From 460a96e390cb80278784cfe36629e280fe7ffef7 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Mon, 23 Jul 2018 11:31:17 -0700
+Subject: [PATCH 2/2] Makefile: Don't install the docs
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [disable feature]
+---
+ Makefile | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 224a315f6..ce7f84afb 100644
+--- a/Makefile
++++ b/Makefile
+@@ -144,7 +144,6 @@ rpm dpkg: pkg-clean source
+ 
+ install uninstall:
+ 	$(MAKE) -C src $@
+-	$(MAKE) -C doc $@
+ 
+ .PHONY: all clean clobber test check cstyle check-license install uninstall\
+ 	source rpm dpkg pkg-clean pcheck check-remote format doc $(SUBDIRS)
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0003-Makefile-Don-t-build-the-examples.patch b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0003-Makefile-Don-t-build-the-examples.patch
new file mode 100644
index 0000000..f75d941
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0003-Makefile-Don-t-build-the-examples.patch
@@ -0,0 +1,34 @@
+From a7f07dca2468ea226d2f07fc0105166e75cadaf8 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Thu, 6 Sep 2018 16:18:50 -0700
+Subject: [PATCH] Makefile: Don't build the examples
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [disable feature]
+---
+ src/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 4b50dd8b5..e00501e31 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -38,13 +38,13 @@ include $(TOP)/src/version.inc
+ 
+ TARGETS = libpmem libvmem libpmemblk libpmemlog libpmemobj libpmempool\
+ 		  libpmemcto libvmmalloc tools
+-ALL_TARGETS = $(TARGETS) common librpmem examples benchmarks
++ALL_TARGETS = $(TARGETS) common librpmem benchmarks
+ 
+ SCOPE_DIRS = $(TARGETS) common librpmem rpmem_common
+ 
+ DEBUG_RELEASE_TARGETS = common libpmem libvmem libpmemblk libpmemlog libpmemobj\
+ 	libpmempool libvmmalloc librpmem libpmemcto
+-RELEASE_TARGETS = tools examples benchmarks
++RELEASE_TARGETS = tools benchmarks
+ 
+ CLEAN_NO_JE_TARGETS = $(ALL_TARGETS) rpmem_common test
+ CLEAN_TARGETS = $(CLEAN_NO_JE_TARGETS) jemalloc
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0004-os_posix-Manually-implement-secure_getenv-if-require.patch b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0004-os_posix-Manually-implement-secure_getenv-if-require.patch
new file mode 100644
index 0000000..624f17b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0004-os_posix-Manually-implement-secure_getenv-if-require.patch
@@ -0,0 +1,30 @@
+From 33affa9ee97691efb73f439fcdba4adb8625a26a Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Mon, 10 Sep 2018 12:59:48 -0700
+Subject: [PATCH] os_posix: Manually implement secure_getenv() if required
+
+Manually implement the secure_getenv() if we need to, this is required
+if using musl.
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Pending
+---
+ src/common/os_posix.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/common/os_posix.c b/src/common/os_posix.c
+index 2d70a0a29..fb09b6ce0 100644
+--- a/src/common/os_posix.c
++++ b/src/common/os_posix.c
+@@ -261,7 +261,7 @@ os_setenv(const char *name, const char *value, int overwrite)
+ /*
+  * secure_getenv -- provide GNU secure_getenv for FreeBSD
+  */
+-#ifdef __FreeBSD__
++#if defined(__FreeBSD__) || !HAVE___SECURE_GETENV
+ static char *
+ secure_getenv(const char *name)
+ {
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0005-pmempool-Remove-unused-__USE_UNIX98-define.patch b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0005-pmempool-Remove-unused-__USE_UNIX98-define.patch
new file mode 100644
index 0000000..75c35f8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0005-pmempool-Remove-unused-__USE_UNIX98-define.patch
@@ -0,0 +1,30 @@
+From 92e63699ea83074298971b0251f002562be4dbd3 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Mon, 10 Sep 2018 13:23:37 -0700
+Subject: [PATCH 2/3] pmempool: Remove unused __USE_UNIX98 define
+
+Remove the unused __USE_UNIX98 to fix musl build failures.
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Pending
+---
+ src/tools/pmempool/info.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/src/tools/pmempool/info.c b/src/tools/pmempool/info.c
+index b4010bf35..7b890a123 100644
+--- a/src/tools/pmempool/info.c
++++ b/src/tools/pmempool/info.c
+@@ -45,9 +45,6 @@
+ #include <inttypes.h>
+ #include <assert.h>
+ #include <sys/param.h>
+-#ifndef __FreeBSD__
+-#define __USE_UNIX98
+-#endif
+ #include <unistd.h>
+ #include <sys/mman.h>
+ 
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch
new file mode 100644
index 0000000..2042fdb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch
@@ -0,0 +1,29 @@
+From a88e806f9ce8cc071e81abad688643d53f393176 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Mon, 10 Sep 2018 14:18:38 -0700
+Subject: [PATCH 3/3] Makefile.inc: Allow extra libs to be specified
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Pending
+---
+ src/Makefile.inc       | 2 ++
+ src/common.inc         | 2 ++
+ src/tools/Makefile.inc | 1 +
+ 3 files changed, 5 insertions(+)
+
+diff --git a/src/common.inc b/src/common.inc
+index 032cb83ea..2d5c4bedf 100644
+--- a/src/common.inc
++++ b/src/common.inc
+@@ -74,6 +74,8 @@ GCOV_CFLAGS=-fprofile-arcs -ftest-coverage --coverage
+ GCOV_LDFLAGS=-fprofile-arcs -ftest-coverage
+ GCOV_LIBS=-lgcov
+ 
++LIBS += $(EXTRA_LIBS)
++
+ osdep = $(1)_$(shell uname -s | tr "[:upper:]" "[:lower:]")$(2)
+ get_arch = $(shell $(CC) -dumpmachine | awk -F'[/-]' '{print $$1}')
+ 
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.4.2.bb b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.4.2.bb
new file mode 100644
index 0000000..3da22a9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.4.2.bb
@@ -0,0 +1,64 @@
+SUMMARY = "Persistent Memory Development Kit"
+DESCRIPTION = "Persistent Memory Development Kit"
+HOMEPAGE = "http://pmem.io"
+SECTION = "libs"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7db1106255a1baa80391fd2e21eebab7"
+DEPENDS = "ndctl"
+
+# Required to have the fts.h header for musl
+DEPENDS_append_libc-musl = " fts"
+
+SRC_URI = "https://github.com/pmem/${BPN}/archive/${PV}.tar.gz \
+           file://0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch \
+           file://0002-Makefile-Don-t-install-the-docs.patch \
+           file://0003-Makefile-Don-t-build-the-examples.patch \
+           file://0005-pmempool-Remove-unused-__USE_UNIX98-define.patch \
+           file://0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch \
+          "
+
+SRC_URI_append_libc-musl = " file://0004-os_posix-Manually-implement-secure_getenv-if-require.patch"
+
+SRC_URI[md5sum] = "bde73bca9ef5b90911deb0fdcfb15ccf"
+SRC_URI[sha256sum] = "df7e658e75d28cd80f6d2ff7b9fc9ae2885d52f8923fdbacecfd46215115fb4c"
+
+inherit autotools-brokensep pkgconfig
+
+# Fix jemalloc error:
+# | configure: error: cannot run C compiled programs.
+# | If you meant to cross compile, use `--host'.
+#
+# Also fix #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
+EXTRA_OEMAKE = "HOST_SYS='${HOST_SYS}' EXTRA_CFLAGS='${SELECTED_OPTIMIZATION}'"
+
+# Fix the missing fts libs when using musl
+EXTRA_OEMAKE_append_libc-musl = " EXTRA_LIBS='-lfts'"
+
+do_install() {
+	oe_runmake PREFIX=${prefix} DESTDIR=${D} install
+
+	# Copy these into the standard directories
+	install -d ${D}${bindir}/
+	mv ${D}/usr/local/bin/pmempool ${D}${bindir}/
+	mv ${D}/usr/local/bin/daxio ${D}${bindir}/
+
+	install -d ${D}${libdir}
+	mv ${D}/usr/local/lib/*so* ${D}${libdir}/
+
+	install -d ${D}${libdir}/pkgconfig
+	mv ${D}/usr/local/lib/pkgconfig/*.pc ${D}${libdir}/pkgconfig/
+
+	install -d ${D}${includedir}
+	mv ${D}/usr/local/include/* ${D}${includedir}/
+
+	# Remove uneeded files
+	rm -rf ${D}/usr/local/
+}
+
+# Include these by default otherwise the SDK is not very useful
+FILES_${PN} += "${bindir}/pmempool ${bindir}/daxio"
+FILES_${PN} += "${libdir}/*so*"
+FILES_${PN} += "${libdir}/pkgconfig/*.pc"
+FILES_${PN} += "${includedir}/libpmemobj++/* ${includedir}/libpmemobj/*"
+
+COMPATIBLE_HOST='(x86_64).*'
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch
index 4e3af87..3b0ef5e 100644
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch
@@ -12,16 +12,19 @@
 ---
 Upstream-Status: Pending
 
+Rebase to 0.115
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
  configure.ac                                          | 2 +-
  src/polkitbackend/polkitbackendinteractiveauthority.c | 6 +++++-
- src/polkitbackend/polkitbackendjsauthority.c          | 5 ++---
- 3 files changed, 8 insertions(+), 5 deletions(-)
+ src/polkitbackend/polkitbackendjsauthority.cpp        | 2 ++
+ 3 files changed, 8 insertions(+), 2 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 07982d1..21590b2 100644
+index 8b3e1b1..1c392df 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -158,7 +158,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
+@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
  	     [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
  AC_SUBST(EXPAT_LIBS)
  
@@ -31,10 +34,10 @@
  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
+index cb6fdab..de3f752 100644
 --- a/src/polkitbackend/polkitbackendinteractiveauthority.c
 +++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
-@@ -2213,7 +2213,7 @@ get_users_in_group (PolkitIdentity                    *group,
+@@ -2224,7 +2224,7 @@ get_users_in_group (PolkitIdentity                    *group,
   out:
    return ret;
  }
@@ -43,7 +46,7 @@
  static GList *
  get_users_in_net_group (PolkitIdentity                    *group,
                          gboolean                           include_root)
-@@ -2270,6 +2270,8 @@ get_users_in_net_group (PolkitIdentity                    *group,
+@@ -2285,6 +2285,8 @@ get_users_in_net_group (PolkitIdentity                    *group,
    return ret;
  }
  
@@ -52,7 +55,7 @@
  /* ---------------------------------------------------------------------------------------------------- */
  
  static void
-@@ -2355,10 +2357,12 @@ authentication_agent_initiate_challenge (AuthenticationAgent         *agent,
+@@ -2369,10 +2371,12 @@ authentication_agent_initiate_challenge (AuthenticationAgent         *agent,
          {
            user_identities = g_list_concat (user_identities, get_users_in_group (identity, FALSE));
          }
@@ -65,43 +68,26 @@
        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);
+diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
+index 517f3c6..6042dd2 100644
+--- a/src/polkitbackend/polkitbackendjsauthority.cpp
++++ b/src/polkitbackend/polkitbackendjsauthority.cpp
+@@ -1502,6 +1502,7 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
+   user = JS_EncodeString (cx, args[0].toString());
+   netgroup = JS_EncodeString (cx, args[1].toString());
  
 +#if defined HAVE_INNETGR
    if (innetgr (netgroup,
                 NULL,  /* host */
                 user,
-@@ -1525,6 +1525,7 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
+@@ -1509,6 +1510,7 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,
      {
-       is_in_netgroup =  JS_TRUE;
+       is_in_netgroup =  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
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/polkit-1_pam.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/polkit-1_pam.patch
index 74647ef..c491abf 100644
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/polkit-1_pam.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/polkit-1_pam.patch
@@ -4,9 +4,18 @@
 
 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 @@
+Upstream-Status: Inappropriate [oe specific]
+Rebase to 0.115
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ configure.ac | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 36df239..8b3e1b1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -471,10 +471,10 @@ elif test x$with_os_type = xfreebsd -o x$with_os_type = xnetbsd; then
      PAM_FILE_INCLUDE_PASSWORD=system
      PAM_FILE_INCLUDE_SESSION=system
  else
@@ -21,3 +30,6 @@
  fi
  
  AC_SUBST(PAM_FILE_INCLUDE_AUTH)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.113.bb b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.115.bb
similarity index 86%
rename from meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.113.bb
rename to meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.115.bb
index f34928f..ad0f66a 100644
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.113.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.115.bb
@@ -24,10 +24,13 @@
     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"
+SRC_URI[md5sum] = "f03b055d6ae5fc8eac76838c7d83d082"
+SRC_URI[sha256sum] = "2f87ecdabfbd415c6306673ceadc59846f059b18ef2fce42bac63fe283f12131"
 
-EXTRA_OECONF = "--with-os-type=moblin --disable-man-pages"
+EXTRA_OECONF = "--with-os-type=moblin \
+                --disable-man-pages \
+                --disable-libelogind \
+               "
 
 do_compile_prepend () {
     export GIR_EXTRA_LIBS_PATH="${B}/src/polkit/.libs"
@@ -40,6 +43,7 @@
     ${nonarch_libdir}/${BPN}-1 \
     ${datadir}/dbus-1 \
     ${datadir}/${BPN}-1 \
+    ${datadir}/gettext \
 "
 
 FILES_${PN}-examples = "${bindir}/*example*"
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-update-Makefile-to-add-symbols-to-staticlib.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-update-Makefile-to-add-symbols-to-staticlib.patch
deleted file mode 100644
index 2b3b587..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-update-Makefile-to-add-symbols-to-staticlib.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- redis-3.0.2/deps/hiredis/Makefile.orig	2016-05-06 19:36:26.179003036 -0700
-+++ redis-3.0.2/deps/hiredis/Makefile	2016-05-06 19:40:15.341340736 -0700
-@@ -25,7 +25,7 @@
- 
- # Fallback to gcc when $CC is not in $PATH.
- CC?=$(shell sh -c 'type $(CC) >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
--OPTIMIZATION?=-O3
-+OPTIMIZATION?=-O2
- WARNINGS=-Wall -W -Wstrict-prototypes -Wwrite-strings
- DEBUG?= -g -ggdb
- REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG) $(ARCH)
-@@ -68,6 +68,7 @@
- 
- $(STLIBNAME): $(OBJ)
- 	$(STLIB_MAKE_CMD) $(OBJ)
-+	$(RANLIB) $@
- 
- dynamic: $(DYLIBNAME)
- static: $(STLIBNAME)
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-use-default-CC-if-it-is-set.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-use-default-CC-if-it-is-set.patch
index f9f1c0d..421f306 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-use-default-CC-if-it-is-set.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis/hiredis-use-default-CC-if-it-is-set.patch
@@ -8,23 +8,23 @@
 
 Signed-off-by: Venture Research <tech@ventureresearch.com>
 
-Update to work with 3.0.x
-Signed-off-by: Armin Kuster <akuster808@gmail.com>
+Update to work with 4.0.8
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
 
 ---
  deps/hiredis/Makefile | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-Index: deps/hiredis/Makefile
-===================================================================
+diff --git a/deps/hiredis/Makefile b/deps/hiredis/Makefile
+index 9a4de836..271c06ba 100644
 --- a/deps/hiredis/Makefile
 +++ b/deps/hiredis/Makefile
-@@ -24,7 +24,7 @@ endef
+@@ -36,7 +36,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')
+ CXX:=$(shell sh -c 'type $(CXX) >/dev/null 2>/dev/null && echo $(CXX) || echo g++')
  OPTIMIZATION?=-O3
  WARNINGS=-Wall -W -Wstrict-prototypes -Wwrite-strings
- DEBUG?= -g -ggdb
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/oe-use-libc-malloc.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/oe-use-libc-malloc.patch
index b768a77..6745f3d 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis/oe-use-libc-malloc.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis/oe-use-libc-malloc.patch
@@ -11,15 +11,15 @@
 
 Signed-off-by: Venture Research <tech@ventureresearch.com>
 
-Update to work with 3.0.x
-Signed-off-by: Armin Kuster <akuster808@gmail.com>
+Update to work with 4.0.8
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
 
 ---
  src/Makefile | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-Index: src/Makefile
-===================================================================
+diff --git a/src/Makefile b/src/Makefile
+index 86e0b3fe..a810180b 100644
 --- a/src/Makefile
 +++ b/src/Makefile
 @@ -13,7 +13,8 @@
@@ -29,6 +29,6 @@
 -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"
+ uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not')
  OPTIMIZATION?=-O2
  DEPENDENCY_TARGETS=hiredis linenoise lua
- 
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/redis.conf b/meta-openembedded/meta-oe/recipes-extended/redis/redis/redis.conf
index ab024ad..75037d6 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis/redis.conf
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis/redis.conf
@@ -1,4 +1,9 @@
-# Redis configuration file example
+# Redis configuration file example.
+#
+# Note that in order to read the configuration file, Redis must be
+# started with the file path as first argument:
+#
+# ./redis-server /path/to/redis.conf
 
 # 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:
@@ -12,48 +17,160 @@
 #
 # 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.
+################################## INCLUDES ###################################
+
+# Include one or more other config files here.  This is useful if you
+# have a standard template that goes to all Redis servers but also need
+# to customize a few per-server settings.  Include files can include
+# other files, so use this wisely.
 #
+# Notice option "include" won't be rewritten by command "CONFIG REWRITE"
+# from admin or Redis Sentinel. Since Redis always uses the last processed
+# line as value of a configuration directive, you'd better put includes
+# at the beginning of this file to avoid overwriting config change at runtime.
+#
+# If instead you are interested in using includes to override configuration
+# options, it is better to use include as the last line.
+#
+# include /path/to/local.conf
+# include /path/to/other.conf
+
+################################## MODULES #####################################
+
+# Load modules at startup. If the server is not able to load modules
+# it will abort. It is possible to use multiple loadmodule directives.
+#
+# loadmodule /path/to/my_module.so
+# loadmodule /path/to/other_module.so
+
+################################## NETWORK #####################################
+
+# By default, if no "bind" configuration directive is specified, Redis listens
+# for connections from all the network interfaces available on the server.
+# It is possible to listen to just one or multiple selected interfaces using
+# the "bind" configuration directive, followed by one or more IP addresses.
+#
+# Examples:
+#
+# bind 192.168.1.100 10.0.0.1
+# bind 127.0.0.1 ::1
+#
+# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
+# internet, binding to all the interfaces is dangerous and will expose the
+# instance to everybody on the internet. So by default we uncomment the
+# following bind directive, that will force Redis to listen only into
+# the IPv4 lookback interface address (this means Redis will be able to
+# accept connections only from clients running into the same computer it
+# is running).
+#
+# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
+# JUST COMMENT THE FOLLOWING LINE.
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+bind 127.0.0.1
+
+# Protected mode is a layer of security protection, in order to avoid that
+# Redis instances left open on the internet are accessed and exploited.
+#
+# When protected mode is on and if:
+#
+# 1) The server is not binding explicitly to a set of addresses using the
+#    "bind" directive.
+# 2) No password is configured.
+#
+# The server only accepts connections from clients connecting from the
+# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
+# sockets.
+#
+# By default protected mode is enabled. You should disable it only if
+# you are sure you want clients from other hosts to connect to Redis
+# even if no authentication is configured, nor a specific set of interfaces
+# are explicitly listed using the "bind" directive.
+protected-mode yes
+
+# Accept connections on the specified port, default is 6379 (IANA #815344).
+# If port 0 is specified Redis will not listen on a TCP socket.
+port 6379
+
+# TCP listen() backlog.
+#
+# In high requests-per-second environments you need an high backlog in order
+# to avoid slow clients connections issues. Note that the Linux kernel
+# will silently truncate it to the value of /proc/sys/net/core/somaxconn so
+# make sure to raise both the value of somaxconn and tcp_max_syn_backlog
+# in order to get the desired effect.
+tcp-backlog 511
+
+# Unix socket.
+#
+# 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 700
+
+# Close the connection after a client is idle for N seconds (0 to disable)
+timeout 0
+
+# TCP keepalive.
+#
+# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence
+# of communication. This is useful for two reasons:
+#
+# 1) Detect dead peers.
+# 2) Take the connection alive from the point of view of network
+#    equipment in the middle.
+#
+# On Linux, the specified value (in seconds) is the period used to send ACKs.
+# Note that to close the connection the double of the time is needed.
+# On other kernels the period depends on the kernel configuration.
+#
+# A reasonable value for this option is 300 seconds, which is the new
+# Redis default starting with Redis 3.2.1.
+tcp-keepalive 300
+
+################################# GENERAL #####################################
+
 # OE: run as a daemon.
-#
 daemonize yes
 
+# If you run Redis from upstart or systemd, Redis can interact with your
+# supervision tree. Options:
+#   supervised no      - no supervision interaction
+#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
+#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
+#   supervised auto    - detect upstart or systemd method based on
+#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
+# Note: these supervision methods only signal "process is ready."
+#       They do not enable continuous liveness pings back to your supervisor.
+supervised no
+
+# If a pid file is specified, Redis writes it where specified at startup
+# and removes it at exit.
+#
+# When the server runs non daemonized, no pid file is created if none is
+# specified in the configuration. When the server is daemonized, the pid file
+# is used even if not specified, defaulting to "/var/run/redis.pid".
+#
+# Creating a pid file is best effort: if Redis is not able to create it
+# nothing bad happens, the server will start and run normally.
+
 # 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:
+# Specify the server verbosity level.
+# This 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
+# Specify the log file name. Also the empty string 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
+logfile ""
 
 # To enable logging to the system logger, just set 'syslog-enabled' to yes,
 # and optionally update the other syslog parameters to suit your needs.
@@ -62,7 +179,7 @@
 # Specify the syslog identity.
 syslog-ident redis
 
-# Specify the syslog facility.  Must be USER or between LOCAL0-LOCAL7.
+# 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
@@ -70,7 +187,15 @@
 # dbid is a number between 0 and 'databases'-1
 databases 16
 
-################################ SNAPSHOTTING  #################################
+# By default Redis shows an ASCII art logo only when started to log to the
+# standard output and if the standard output is a TTY. Basically this means
+# that normally a logo is displayed only in interactive sessions.
+#
+# However it is possible to force the pre-4.0 behavior and always show a
+# ASCII art logo in startup logs by setting the following option to yes.
+always-show-logo yes
+
+################################ SNAPSHOTTING  ################################
 #
 # Save the DB on disk:
 #
@@ -84,7 +209,7 @@
 #   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.
+#   Note: you can disable saving completely by commenting out all "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
@@ -103,16 +228,16 @@
 
 # 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
+# This will make the user aware (in a hard way) that data is not persisting
 # on disk properly, otherwise chances are that no one will notice and some
-# distater will happen.
+# disaster 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,
+# continue to work as usual even if there are problems with disk,
 # permissions, and so forth.
 stop-writes-on-bgsave-error yes
 
@@ -122,7 +247,7 @@
 # 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.
+# Since version 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.
@@ -138,18 +263,27 @@
 #
 # 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.
-# 
+#
+# The Append Only File will also 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.
+# another Redis server. A few things to understand ASAP about Redis replication.
+#
+# 1) Redis replication is asynchronous, but you can configure a master to
+#    stop accepting writes if it appears to be not connected with at least
+#    a given number of slaves.
+# 2) Redis slaves are able to perform a partial resynchronization with the
+#    master if the replication link is lost for a relatively small amount of
+#    time. You may want to configure the replication backlog size (see the next
+#    sections of this file) with a sensible value depending on your needs.
+# 3) Replication is automatic and does not need user intervention. After a
+#    network partition slaves automatically try to reconnect to masters
+#    and resynchronize with them.
 #
 # slaveof <masterip> <masterport>
 
@@ -160,14 +294,14 @@
 #
 # masterauth <master-password>
 
-# When a slave lost the connection with the master, or when the replication
+# When a slave loses its 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
+# 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.
 #
@@ -184,19 +318,65 @@
 # 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
+# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve
 # security of read only slaves using 'rename-command' to shadow all the
 # administrative / dangerous commands.
 slave-read-only yes
 
+# Replication SYNC strategy: disk or socket.
+#
+# -------------------------------------------------------
+# WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY
+# -------------------------------------------------------
+#
+# New slaves and reconnecting slaves that are not able to continue the replication
+# process just receiving differences, need to do what is called a "full
+# synchronization". An RDB file is transmitted from the master to the slaves.
+# The transmission can happen in two different ways:
+#
+# 1) Disk-backed: The Redis master creates a new process that writes the RDB
+#                 file on disk. Later the file is transferred by the parent
+#                 process to the slaves incrementally.
+# 2) Diskless: The Redis master creates a new process that directly writes the
+#              RDB file to slave sockets, without touching the disk at all.
+#
+# With disk-backed replication, while the RDB file is generated, more slaves
+# can be queued and served with the RDB file as soon as the current child producing
+# the RDB file finishes its work. With diskless replication instead once
+# the transfer starts, new slaves arriving will be queued and a new transfer
+# will start when the current one terminates.
+#
+# When diskless replication is used, the master waits a configurable amount of
+# time (in seconds) before starting the transfer in the hope that multiple slaves
+# will arrive and the transfer can be parallelized.
+#
+# With slow disks and fast (large bandwidth) networks, diskless replication
+# works better.
+repl-diskless-sync no
+
+# When diskless replication is enabled, it is possible to configure the delay
+# the server waits in order to spawn the child that transfers the RDB via socket
+# to the slaves.
+#
+# This is important since once the transfer starts, it is not possible to serve
+# new slaves arriving, that will be queued for the next RDB transfer, so the server
+# waits a delay in order to let more slaves arrive.
+#
+# The delay is specified in seconds, and by default is 5 seconds. To disable
+# it entirely just set it to 0 seconds and the transfer will start ASAP.
+repl-diskless-sync-delay 5
+
 # 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.
+# The following option sets the replication timeout for:
+#
+# 1) Bulk transfer I/O during SYNC, from the point of view of slave.
+# 2) Master timeout from the point of view of slaves (data, pings).
+# 3) Slave timeout from the point of view of masters (REPLCONF ACK pings).
 #
 # 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
@@ -204,13 +384,54 @@
 #
 # repl-timeout 60
 
+# Disable TCP_NODELAY on the slave socket after SYNC?
+#
+# If you select "yes" Redis will use a smaller number of TCP packets and
+# less bandwidth to send data to slaves. But this can add a delay for
+# the data to appear on the slave side, up to 40 milliseconds with
+# Linux kernels using a default configuration.
+#
+# If you select "no" the delay for data to appear on the slave side will
+# be reduced but more bandwidth will be used for replication.
+#
+# By default we optimize for low latency, but in very high traffic conditions
+# or when the master and slaves are many hops away, turning this to "yes" may
+# be a good idea.
+repl-disable-tcp-nodelay no
+
+# Set the replication backlog size. The backlog is a buffer that accumulates
+# slave data when slaves are disconnected for some time, so that when a slave
+# wants to reconnect again, often a full resync is not needed, but a partial
+# resync is enough, just passing the portion of data the slave missed while
+# disconnected.
+#
+# The bigger the replication backlog, the longer the time the slave can be
+# disconnected and later be able to perform a partial resynchronization.
+#
+# The backlog is only allocated once there is at least a slave connected.
+#
+# repl-backlog-size 1mb
+
+# After a master has no longer connected slaves for some time, the backlog
+# will be freed. The following option configures the amount of seconds that
+# need to elapse, starting from the time the last slave disconnected, for
+# the backlog buffer to be freed.
+#
+# Note that slaves never free the backlog for timeout, since they may be
+# promoted to masters later, and should be able to correctly "partially
+# resynchronize" with the slaves: hence they should always accumulate backlog.
+#
+# A value of 0 means to never release the backlog.
+#
+# repl-backlog-ttl 3600
+
 # 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.
+# pick the one with 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
@@ -219,6 +440,57 @@
 # By default the priority is 100.
 slave-priority 100
 
+# It is possible for a master to stop accepting writes if there are less than
+# N slaves connected, having a lag less or equal than M seconds.
+#
+# The N slaves need to be in "online" state.
+#
+# The lag in seconds, that must be <= the specified value, is calculated from
+# the last ping received from the slave, that is usually sent every second.
+#
+# This option does not GUARANTEE that N replicas will accept the write, but
+# will limit the window of exposure for lost writes in case not enough slaves
+# are available, to the specified number of seconds.
+#
+# For example to require at least 3 slaves with a lag <= 10 seconds use:
+#
+# min-slaves-to-write 3
+# min-slaves-max-lag 10
+#
+# Setting one or the other to 0 disables the feature.
+#
+# By default min-slaves-to-write is set to 0 (feature disabled) and
+# min-slaves-max-lag is set to 10.
+
+# A Redis master is able to list the address and port of the attached
+# slaves in different ways. For example the "INFO replication" section
+# offers this information, which is used, among other tools, by
+# Redis Sentinel in order to discover slave instances.
+# Another place where this info is available is in the output of the
+# "ROLE" command of a master.
+#
+# The listed IP and address normally reported by a slave is obtained
+# in the following way:
+#
+#   IP: The address is auto detected by checking the peer address
+#   of the socket used by the slave to connect with the master.
+#
+#   Port: The port is communicated by the slave during the replication
+#   handshake, and is normally the port that the slave is using to
+#   list for connections.
+#
+# However when port forwarding or Network Address Translation (NAT) is
+# used, the slave may be actually reachable via different IP and port
+# pairs. The following two options can be used by a slave in order to
+# report to its master a specific set of IP and port, so that both INFO
+# and ROLE will report those values.
+#
+# There is no need to use both the options if you need to override just
+# the port or the IP address.
+#
+# slave-announce-ip 5.5.5.5
+# slave-announce-port 1234
+
 ################################## SECURITY ###################################
 
 # Require clients to issue AUTH <PASSWORD> before processing any other
@@ -227,7 +499,7 @@
 #
 # 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.
@@ -238,23 +510,26 @@
 #
 # 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.
+# hard to guess so that it will still be 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
+# It is also possible to completely kill a command by renaming it into
 # an empty string:
 #
 # rename-command CONFIG ""
+#
+# Please note that changing the name of commands that are logged into the
+# AOF file or transmitted to slaves may cause problems.
 
-################################### LIMITS ####################################
+################################### CLIENTS ####################################
 
 # 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
+# able to 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).
 #
@@ -263,17 +538,19 @@
 #
 # maxclients 10000
 
-# Don't use more memory than the specified amount of bytes.
+############################## MEMORY MANAGEMENT ################################
+
+# Set a memory usage limit to 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).
+# according to the eviction policy selected (see maxmemory-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).
+# This option is usually useful when using Redis as an LRU or LFU cache, or to
+# set a 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
@@ -289,19 +566,27 @@
 # 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.
+# is reached. You can select among five behaviors:
 #
-#       At the date of writing this commands are: set setnx setex append
+# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
+# allkeys-lru -> Evict any key using approximated LRU.
+# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
+# allkeys-lfu -> Evict any key using approximated LFU.
+# volatile-random -> Remove a random key among the ones 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 evict anything, just return an error on write operations.
+#
+# LRU means Least Recently Used
+# LFU means Least Frequently Used
+#
+# Both LRU, LFU and volatile-ttl are implemented using approximated
+# randomized algorithms.
+#
+# Note: with any of the above policies, Redis will return an error on write
+#       operations, when there are no suitable keys for eviction.
+#
+#       At the date of writing these 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
@@ -309,15 +594,67 @@
 #
 # The default is:
 #
-# maxmemory-policy volatile-lru
+# maxmemory-policy noeviction
 
-# 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.
+# LRU, LFU and minimal TTL algorithms are not precise algorithms but approximated
+# algorithms (in order to save memory), so you can tune it for speed or
+# accuracy. For default Redis will check five keys and pick the one that was
+# used less recently, you can change the sample size using the following
+# configuration directive.
 #
-# maxmemory-samples 3
+# The default of 5 produces good enough results. 10 Approximates very closely
+# true LRU but costs more CPU. 3 is faster but not very accurate.
+#
+# maxmemory-samples 5
+
+############################# LAZY FREEING ####################################
+
+# Redis has two primitives to delete keys. One is called DEL and is a blocking
+# deletion of the object. It means that the server stops processing new commands
+# in order to reclaim all the memory associated with an object in a synchronous
+# way. If the key deleted is associated with a small object, the time needed
+# in order to execute the DEL command is very small and comparable to most other
+# O(1) or O(log_N) commands in Redis. However if the key is associated with an
+# aggregated value containing millions of elements, the server can block for
+# a long time (even seconds) in order to complete the operation.
+#
+# For the above reasons Redis also offers non blocking deletion primitives
+# such as UNLINK (non blocking DEL) and the ASYNC option of FLUSHALL and
+# FLUSHDB commands, in order to reclaim memory in background. Those commands
+# are executed in constant time. Another thread will incrementally free the
+# object in the background as fast as possible.
+#
+# DEL, UNLINK and ASYNC option of FLUSHALL and FLUSHDB are user-controlled.
+# It's up to the design of the application to understand when it is a good
+# idea to use one or the other. However the Redis server sometimes has to
+# delete keys or flush the whole database as a side effect of other operations.
+# Specifically Redis deletes objects independently of a user call in the
+# following scenarios:
+#
+# 1) On eviction, because of the maxmemory and maxmemory policy configurations,
+#    in order to make room for new data, without going over the specified
+#    memory limit.
+# 2) Because of expire: when a key with an associated time to live (see the
+#    EXPIRE command) must be deleted from memory.
+# 3) Because of a side effect of a command that stores data on a key that may
+#    already exist. For example the RENAME command may delete the old key
+#    content when it is replaced with another one. Similarly SUNIONSTORE
+#    or SORT with STORE option may delete existing keys. The SET command
+#    itself removes any old content of the specified key in order to replace
+#    it with the specified string.
+# 4) During replication, when a slave performs a full resynchronization with
+#    its master, the content of the whole database is removed in order to
+#    load the RDB file just transfered.
+#
+# In all the above cases the default is to delete objects in a blocking way,
+# like if DEL was called. However you can configure each case specifically
+# in order to instead release memory in a non-blocking way like if UNLINK
+# was called, using the following configuration directives:
+
+lazyfree-lazy-eviction no
+lazyfree-lazy-expire no
+lazyfree-lazy-server-del no
+slave-lazy-flush no
 
 ############################## APPEND ONLY MODE ###############################
 
@@ -339,24 +676,24 @@
 #
 # 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
+
+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 
+# instead of waiting 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.
+# 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
+# The default is "everysec", as 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
@@ -384,21 +721,22 @@
 # 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
+# This means that while another child is saving, the durability of Redis is
+# the same as "appendfsync none". In practical terms, this means that it is
+# possible to lose 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.
-# 
+# BGREWRITEAOF when the AOF log size grows 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
+# latest rewrite (if no rewrite has 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
@@ -413,6 +751,44 @@
 auto-aof-rewrite-percentage 100
 auto-aof-rewrite-min-size 64mb
 
+# An AOF file may be found to be truncated at the end during the Redis
+# startup process, when the AOF data gets loaded back into memory.
+# This may happen when the system where Redis is running
+# crashes, especially when an ext4 filesystem is mounted without the
+# data=ordered option (however this can't happen when Redis itself
+# crashes or aborts but the operating system still works correctly).
+#
+# Redis can either exit with an error when this happens, or load as much
+# data as possible (the default now) and start if the AOF file is found
+# to be truncated at the end. The following option controls this behavior.
+#
+# If aof-load-truncated is set to yes, a truncated AOF file is loaded and
+# the Redis server starts emitting a log to inform the user of the event.
+# Otherwise if the option is set to no, the server aborts with an error
+# and refuses to start. When the option is set to no, the user requires
+# to fix the AOF file using the "redis-check-aof" utility before to restart
+# the server.
+#
+# Note that if the AOF file will be found to be corrupted in the middle
+# the server will still exit with an error. This option only applies when
+# Redis will try to read more data from the AOF file but not enough bytes
+# will be found.
+aof-load-truncated yes
+
+# When rewriting the AOF file, Redis is able to use an RDB preamble in the
+# AOF file for faster rewrites and recoveries. When this option is turned
+# on the rewritten AOF file is composed of two different stanzas:
+#
+#   [RDB file][AOF tail]
+#
+# When loading Redis recognizes that the AOF file starts with the "REDIS"
+# string and loads the prefixed RDB file, and continues loading the AOF
+# tail.
+#
+# This is currently turned off by default in order to avoid the surprise
+# of a format change, but will at some point be used as the default.
+aof-use-rdb-preamble no
+
 ################################ LUA SCRIPTING  ###############################
 
 # Max execution time of a Lua script in milliseconds.
@@ -421,16 +797,157 @@
 # 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
+# When a long running script exceeds 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
+# is the only way to shut down the server in the case a write command was
+# already issued by the script but the user doesn'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
 
+################################ REDIS CLUSTER  ###############################
+#
+# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however
+# in order to mark it as "mature" we need to wait for a non trivial percentage
+# of users to deploy it in production.
+# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#
+# Normal Redis instances can't be part of a Redis Cluster; only nodes that are
+# started as cluster nodes can. In order to start a Redis instance as a
+# cluster node enable the cluster support uncommenting the following:
+#
+# cluster-enabled yes
+
+# Every cluster node has a cluster configuration file. This file is not
+# intended to be edited by hand. It is created and updated by Redis nodes.
+# Every Redis Cluster node requires a different cluster configuration file.
+# Make sure that instances running in the same system do not have
+# overlapping cluster configuration file names.
+#
+# cluster-config-file nodes-6379.conf
+
+# Cluster node timeout is the amount of milliseconds a node must be unreachable
+# for it to be considered in failure state.
+# Most other internal time limits are multiple of the node timeout.
+#
+# cluster-node-timeout 15000
+
+# A slave of a failing master will avoid to start a failover if its data
+# looks too old.
+#
+# There is no simple way for a slave to actually have an exact measure of
+# its "data age", so the following two checks are performed:
+#
+# 1) If there are multiple slaves able to failover, they exchange messages
+#    in order to try to give an advantage to the slave with the best
+#    replication offset (more data from the master processed).
+#    Slaves will try to get their rank by offset, and apply to the start
+#    of the failover a delay proportional to their rank.
+#
+# 2) Every single slave computes the time of the last interaction with
+#    its master. This can be the last ping or command received (if the master
+#    is still in the "connected" state), or the time that elapsed since the
+#    disconnection with the master (if the replication link is currently down).
+#    If the last interaction is too old, the slave will not try to failover
+#    at all.
+#
+# The point "2" can be tuned by user. Specifically a slave will not perform
+# the failover if, since the last interaction with the master, the time
+# elapsed is greater than:
+#
+#   (node-timeout * slave-validity-factor) + repl-ping-slave-period
+#
+# So for example if node-timeout is 30 seconds, and the slave-validity-factor
+# is 10, and assuming a default repl-ping-slave-period of 10 seconds, the
+# slave will not try to failover if it was not able to talk with the master
+# for longer than 310 seconds.
+#
+# A large slave-validity-factor may allow slaves with too old data to failover
+# a master, while a too small value may prevent the cluster from being able to
+# elect a slave at all.
+#
+# For maximum availability, it is possible to set the slave-validity-factor
+# to a value of 0, which means, that slaves will always try to failover the
+# master regardless of the last time they interacted with the master.
+# (However they'll always try to apply a delay proportional to their
+# offset rank).
+#
+# Zero is the only value able to guarantee that when all the partitions heal
+# the cluster will always be able to continue.
+#
+# cluster-slave-validity-factor 10
+
+# Cluster slaves are able to migrate to orphaned masters, that are masters
+# that are left without working slaves. This improves the cluster ability
+# to resist to failures as otherwise an orphaned master can't be failed over
+# in case of failure if it has no working slaves.
+#
+# Slaves migrate to orphaned masters only if there are still at least a
+# given number of other working slaves for their old master. This number
+# is the "migration barrier". A migration barrier of 1 means that a slave
+# will migrate only if there is at least 1 other working slave for its master
+# and so forth. It usually reflects the number of slaves you want for every
+# master in your cluster.
+#
+# Default is 1 (slaves migrate only if their masters remain with at least
+# one slave). To disable migration just set it to a very large value.
+# A value of 0 can be set but is useful only for debugging and dangerous
+# in production.
+#
+# cluster-migration-barrier 1
+
+# By default Redis Cluster nodes stop accepting queries if they detect there
+# is at least an hash slot uncovered (no available node is serving it).
+# This way if the cluster is partially down (for example a range of hash slots
+# are no longer covered) all the cluster becomes, eventually, unavailable.
+# It automatically returns available as soon as all the slots are covered again.
+#
+# However sometimes you want the subset of the cluster which is working,
+# to continue to accept queries for the part of the key space that is still
+# covered. In order to do so, just set the cluster-require-full-coverage
+# option to no.
+#
+# cluster-require-full-coverage yes
+
+# In order to setup your cluster make sure to read the documentation
+# available at http://redis.io web site.
+
+########################## CLUSTER DOCKER/NAT support  ########################
+
+# In certain deployments, Redis Cluster nodes address discovery fails, because
+# addresses are NAT-ted or because ports are forwarded (the typical case is
+# Docker and other containers).
+#
+# In order to make Redis Cluster working in such environments, a static
+# configuration where each node knows its public address is needed. The
+# following two options are used for this scope, and are:
+#
+# * cluster-announce-ip
+# * cluster-announce-port
+# * cluster-announce-bus-port
+#
+# Each instruct the node about its address, client port, and cluster message
+# bus port. The information is then published in the header of the bus packets
+# so that other nodes will be able to correctly map the address of the node
+# publishing the information.
+#
+# If the above options are not used, the normal Redis Cluster auto-detection
+# will be used instead.
+#
+# Note that when remapped, the bus port may not be at the fixed offset of
+# clients port + 10000, so you can specify any port and bus-port depending
+# on how they get remapped. If the bus-port is not set, a fixed offset of
+# 10000 will be used as usually.
+#
+# Example:
+#
+# cluster-announce-ip 10.1.1.5
+# cluster-announce-port 6379
+# cluster-announce-bus-port 6380
+
 ################################## SLOW LOG ###################################
 
 # The Redis Slow Log is a system to log queries that exceeded a specified
@@ -439,7 +956,7 @@
 # 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
@@ -455,6 +972,73 @@
 # You can reclaim memory used by the slow log with SLOWLOG RESET.
 slowlog-max-len 128
 
+################################ LATENCY MONITOR ##############################
+
+# The Redis latency monitoring subsystem samples different operations
+# at runtime in order to collect data related to possible sources of
+# latency of a Redis instance.
+#
+# Via the LATENCY command this information is available to the user that can
+# print graphs and obtain reports.
+#
+# The system only logs operations that were performed in a time equal or
+# greater than the amount of milliseconds specified via the
+# latency-monitor-threshold configuration directive. When its value is set
+# to zero, the latency monitor is turned off.
+#
+# By default latency monitoring is disabled since it is mostly not needed
+# if you don't have latency issues, and collecting data has a performance
+# impact, that while very small, can be measured under big load. Latency
+# monitoring can easily be enabled at runtime using the command
+# "CONFIG SET latency-monitor-threshold <milliseconds>" if needed.
+latency-monitor-threshold 0
+
+############################# EVENT NOTIFICATION ##############################
+
+# Redis can notify Pub/Sub clients about events happening in the key space.
+# This feature is documented at http://redis.io/topics/notifications
+#
+# For instance if keyspace events notification is enabled, and a client
+# performs a DEL operation on key "foo" stored in the Database 0, two
+# messages will be published via Pub/Sub:
+#
+# PUBLISH __keyspace@0__:foo del
+# PUBLISH __keyevent@0__:del foo
+#
+# It is possible to select the events that Redis will notify among a set
+# of classes. Every class is identified by a single character:
+#
+#  K     Keyspace events, published with __keyspace@<db>__ prefix.
+#  E     Keyevent events, published with __keyevent@<db>__ prefix.
+#  g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
+#  $     String commands
+#  l     List commands
+#  s     Set commands
+#  h     Hash commands
+#  z     Sorted set commands
+#  x     Expired events (events generated every time a key expires)
+#  e     Evicted events (events generated when a key is evicted for maxmemory)
+#  A     Alias for g$lshzxe, so that the "AKE" string means all the events.
+#
+#  The "notify-keyspace-events" takes as argument a string that is composed
+#  of zero or multiple characters. The empty string means that notifications
+#  are disabled.
+#
+#  Example: to enable list and generic events, from the point of view of the
+#           event name, use:
+#
+#  notify-keyspace-events Elg
+#
+#  Example 2: to get the stream of the expired keys subscribing to channel
+#             name __keyevent@0__:expired use:
+#
+#  notify-keyspace-events Ex
+#
+#  By default all notifications are disabled because most users don't need
+#  this feature and the feature has some overhead. Note that if you don't
+#  specify at least one of K or E, no events will be delivered.
+notify-keyspace-events ""
+
 ############################### ADVANCED CONFIG ###############################
 
 # Hashes are encoded using a memory efficient data structure when they have a
@@ -463,14 +1047,39 @@
 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
+# Lists are also encoded in a special way to save a lot of space.
+# The number of entries allowed per internal list node can be specified
+# as a fixed maximum size or a maximum number of elements.
+# For a fixed maximum size, use -5 through -1, meaning:
+# -5: max size: 64 Kb  <-- not recommended for normal workloads
+# -4: max size: 32 Kb  <-- not recommended
+# -3: max size: 16 Kb  <-- probably not recommended
+# -2: max size: 8 Kb   <-- good
+# -1: max size: 4 Kb   <-- good
+# Positive numbers mean store up to _exactly_ that number of elements
+# per list node.
+# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size),
+# but if your use case is unique, adjust the settings as necessary.
+list-max-ziplist-size -2
+
+# Lists may also be compressed.
+# Compress depth is the number of quicklist ziplist nodes from *each* side of
+# the list to *exclude* from compression.  The head and tail of the list
+# are always uncompressed for fast push/pop operations.  Settings are:
+# 0: disable all list compression
+# 1: depth 1 means "don't start compressing until after 1 node into the list,
+#    going from either the head or tail"
+#    So: [head]->node->node->...->node->[tail]
+#    [head], [tail] will always be uncompressed; inner nodes will compress.
+# 2: [head]->[next]->node->node->...->node->[prev]->[tail]
+#    2 here means: don't compress head or head->next or tail->prev or tail,
+#    but compress all nodes between them.
+# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]
+# etc.
+list-compress-depth 0
 
 # 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 just strings that happen 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.
@@ -482,20 +1091,34 @@
 zset-max-ziplist-entries 128
 zset-max-ziplist-value 64
 
+# HyperLogLog sparse representation bytes limit. The limit includes the
+# 16 bytes header. When an HyperLogLog using the sparse representation crosses
+# this limit, it is converted into the dense representation.
+#
+# A value greater than 16000 is totally useless, since at that point the
+# dense representation is more memory efficient.
+#
+# The suggested value is ~ 3000 in order to have the benefits of
+# the space efficient encoding without slowing down too much PFADD,
+# which is O(N) with the sparse encoding. The value can be raised to
+# ~ 10000 when CPU is not a concern, but space is, and the data set is
+# composed of many HyperLogLogs with cardinality in the 0 - 15000 range.
+hll-sparse-max-bytes 3000
+
 # 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
+# performs a lazy rehashing: the more operation you run into a 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.
+# actively rehash 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
+# not a good thing in your environment that Redis can reply from time to time
 # to queries with 2 milliseconds delay.
 #
 # use "activerehashing yes" if you don't have such hard requirements but
@@ -509,9 +1132,9 @@
 #
 # 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
+# normal -> normal clients including MONITOR clients
+# slave  -> slave clients
+# pubsub -> clients subscribed to at least one pubsub channel or pattern
 #
 # The syntax of every client-output-buffer-limit directive is the following:
 #
@@ -534,17 +1157,158 @@
 # 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.
+# Both the hard or the soft limit can be disabled by setting them 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.
+# Client query buffers accumulate new commands. They are limited to a fixed
+# amount by default in order to avoid that a protocol desynchronization (for
+# instance due to a bug in the client) will lead to unbound memory usage in
+# the query buffer. However you can configure it here if you have very special
+# needs, such us huge multi/exec requests or alike.
 #
-# include /path/to/local.conf
-# include /path/to/other.conf
+# client-query-buffer-limit 1gb
+
+# In the Redis protocol, bulk requests, that are, elements representing single
+# strings, are normally limited ot 512 mb. However you can change this limit
+# here.
+#
+# proto-max-bulk-len 512mb
+
+# Redis calls an internal function to perform many background tasks, like
+# closing connections of clients in timeout, purging expired keys that are
+# never requested, and so forth.
+#
+# Not all tasks are performed with the same frequency, but Redis checks for
+# tasks to perform according to the specified "hz" value.
+#
+# By default "hz" is set to 10. Raising the value will use more CPU when
+# Redis is idle, but at the same time will make Redis more responsive when
+# there are many keys expiring at the same time, and timeouts may be
+# handled with more precision.
+#
+# The range is between 1 and 500, however a value over 100 is usually not
+# a good idea. Most users should use the default of 10 and raise this up to
+# 100 only in environments where very low latency is required.
+hz 10
+
+# When a child rewrites the AOF file, if the following option is enabled
+# the file will be fsync-ed every 32 MB of data generated. This is useful
+# in order to commit the file to the disk more incrementally and avoid
+# big latency spikes.
+aof-rewrite-incremental-fsync yes
+
+# Redis LFU eviction (see maxmemory setting) can be tuned. However it is a good
+# idea to start with the default settings and only change them after investigating
+# how to improve the performances and how the keys LFU change over time, which
+# is possible to inspect via the OBJECT FREQ command.
+#
+# There are two tunable parameters in the Redis LFU implementation: the
+# counter logarithm factor and the counter decay time. It is important to
+# understand what the two parameters mean before changing them.
+#
+# The LFU counter is just 8 bits per key, it's maximum value is 255, so Redis
+# uses a probabilistic increment with logarithmic behavior. Given the value
+# of the old counter, when a key is accessed, the counter is incremented in
+# this way:
+#
+# 1. A random number R between 0 and 1 is extracted.
+# 2. A probability P is calculated as 1/(old_value*lfu_log_factor+1).
+# 3. The counter is incremented only if R < P.
+#
+# The default lfu-log-factor is 10. This is a table of how the frequency
+# counter changes with a different number of accesses with different
+# logarithmic factors:
+#
+# +--------+------------+------------+------------+------------+------------+
+# | factor | 100 hits   | 1000 hits  | 100K hits  | 1M hits    | 10M hits   |
+# +--------+------------+------------+------------+------------+------------+
+# | 0      | 104        | 255        | 255        | 255        | 255        |
+# +--------+------------+------------+------------+------------+------------+
+# | 1      | 18         | 49         | 255        | 255        | 255        |
+# +--------+------------+------------+------------+------------+------------+
+# | 10     | 10         | 18         | 142        | 255        | 255        |
+# +--------+------------+------------+------------+------------+------------+
+# | 100    | 8          | 11         | 49         | 143        | 255        |
+# +--------+------------+------------+------------+------------+------------+
+#
+# NOTE: The above table was obtained by running the following commands:
+#
+#   redis-benchmark -n 1000000 incr foo
+#   redis-cli object freq foo
+#
+# NOTE 2: The counter initial value is 5 in order to give new objects a chance
+# to accumulate hits.
+#
+# The counter decay time is the time, in minutes, that must elapse in order
+# for the key counter to be divided by two (or decremented if it has a value
+# less <= 10).
+#
+# The default value for the lfu-decay-time is 1. A Special value of 0 means to
+# decay the counter every time it happens to be scanned.
+#
+# lfu-log-factor 10
+# lfu-decay-time 1
+
+########################### ACTIVE DEFRAGMENTATION #######################
+#
+# WARNING THIS FEATURE IS EXPERIMENTAL. However it was stress tested
+# even in production and manually tested by multiple engineers for some
+# time.
+#
+# What is active defragmentation?
+# -------------------------------
+#
+# Active (online) defragmentation allows a Redis server to compact the
+# spaces left between small allocations and deallocations of data in memory,
+# thus allowing to reclaim back memory.
+#
+# Fragmentation is a natural process that happens with every allocator (but
+# less so with Jemalloc, fortunately) and certain workloads. Normally a server
+# restart is needed in order to lower the fragmentation, or at least to flush
+# away all the data and create it again. However thanks to this feature
+# implemented by Oran Agra for Redis 4.0 this process can happen at runtime
+# in an "hot" way, while the server is running.
+#
+# Basically when the fragmentation is over a certain level (see the
+# configuration options below) Redis will start to create new copies of the
+# values in contiguous memory regions by exploiting certain specific Jemalloc
+# features (in order to understand if an allocation is causing fragmentation
+# and to allocate it in a better place), and at the same time, will release the
+# old copies of the data. This process, repeated incrementally for all the keys
+# will cause the fragmentation to drop back to normal values.
+#
+# Important things to understand:
+#
+# 1. This feature is disabled by default, and only works if you compiled Redis
+#    to use the copy of Jemalloc we ship with the source code of Redis.
+#    This is the default with Linux builds.
+#
+# 2. You never need to enable this feature if you don't have fragmentation
+#    issues.
+#
+# 3. Once you experience fragmentation, you can enable this feature when
+#    needed with the command "CONFIG SET activedefrag yes".
+#
+# The configuration parameters are able to fine tune the behavior of the
+# defragmentation process. If you are not sure about what they mean it is
+# a good idea to leave the defaults untouched.
+
+# Enabled active defragmentation
+# activedefrag yes
+
+# Minimum amount of fragmentation waste to start active defrag
+# active-defrag-ignore-bytes 100mb
+
+# Minimum percentage of fragmentation to start active defrag
+# active-defrag-threshold-lower 10
+
+# Maximum percentage of fragmentation at which we use maximum effort
+# active-defrag-threshold-upper 100
+
+# Minimal effort for defrag in CPU percentage
+# active-defrag-cycle-min 25
+
+# Maximal effort for defrag in CPU percentage
+# active-defrag-cycle-max 75
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch b/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch
new file mode 100644
index 0000000..23b2f2a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch
@@ -0,0 +1,72 @@
+From c486455e0691f9915018b9d8b133200a6c61a3c5 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Thu, 24 May 2018 09:58:42 -0700
+Subject: [PATCH] Remove atomics
+
+Based on this patch:
+https://github.com/patrikx3/lede-redis/blob/master/redis/patches/010-redis.patch
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+---
+ deps/jemalloc/src/pages.c | 22 +---------------------
+ src/atomicvar.h           |  4 ++--
+ 2 files changed, 3 insertions(+), 23 deletions(-)
+
+diff --git a/deps/jemalloc/src/pages.c b/deps/jemalloc/src/pages.c
+index 83a167f6..8e82c78d 100644
+--- a/deps/jemalloc/src/pages.c
++++ b/deps/jemalloc/src/pages.c
+@@ -147,27 +147,7 @@ pages_purge(void *addr, size_t size)
+ {
+ 	bool unzeroed;
+ 
+-#ifdef _WIN32
+-	VirtualAlloc(addr, size, MEM_RESET, PAGE_READWRITE);
+-	unzeroed = true;
+-#elif defined(JEMALLOC_HAVE_MADVISE)
+-#  ifdef JEMALLOC_PURGE_MADVISE_DONTNEED
+-#    define JEMALLOC_MADV_PURGE MADV_DONTNEED
+-#    define JEMALLOC_MADV_ZEROS true
+-#  elif defined(JEMALLOC_PURGE_MADVISE_FREE)
+-#    define JEMALLOC_MADV_PURGE MADV_FREE
+-#    define JEMALLOC_MADV_ZEROS false
+-#  else
+-#    error "No madvise(2) flag defined for purging unused dirty pages."
+-#  endif
+-	int err = madvise(addr, size, JEMALLOC_MADV_PURGE);
+-	unzeroed = (!JEMALLOC_MADV_ZEROS || err != 0);
+-#  undef JEMALLOC_MADV_PURGE
+-#  undef JEMALLOC_MADV_ZEROS
+-#else
+-	/* Last resort no-op. */
+-	unzeroed = true;
+-#endif
++	unzeroed = false;
+ 	return (unzeroed);
+ }
+ 
+diff --git a/src/atomicvar.h b/src/atomicvar.h
+index 84a5bbc5..f9b563c2 100644
+--- a/src/atomicvar.h
++++ b/src/atomicvar.h
+@@ -68,7 +68,7 @@
+  * is reported. */
+ // #define __ATOMIC_VAR_FORCE_SYNC_MACROS
+ 
+-#if !defined(__ATOMIC_VAR_FORCE_SYNC_MACROS) && defined(__ATOMIC_RELAXED) && !defined(__sun) && (!defined(__clang__) || !defined(__APPLE__) || __apple_build_version__ > 4210057)
++#if defined(CONFIG_EDAC_ATOMIC_SCRUB) &&  !defined(__ATOMIC_VAR_FORCE_SYNC_MACROS) && defined(__ATOMIC_RELAXED) && !defined(__sun) && (!defined(__clang__) || !defined(__APPLE__) || __apple_build_version__ > 4210057)
+ /* Implementation using __atomic macros. */
+ 
+ #define atomicIncr(var,count) __atomic_add_fetch(&var,(count),__ATOMIC_RELAXED)
+@@ -82,7 +82,7 @@
+ #define atomicSet(var,value) __atomic_store_n(&var,value,__ATOMIC_RELAXED)
+ #define REDIS_ATOMIC_API "atomic-builtin"
+ 
+-#elif defined(HAVE_ATOMIC)
++#elif defined(CONFIG_EDAC_ATOMIC_SCRUB) && defined(HAVE_ATOMIC)
+ /* Implementation using __sync macros. */
+ 
+ #define atomicIncr(var,count) __sync_add_and_fetch(&var,(count))
+-- 
+2.17.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis_3.0.2.bb b/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.8.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-extended/redis/redis_3.0.2.bb
rename to meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.8.bb
index 9395b33..80d36d2 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis_3.0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.8.bb
@@ -13,11 +13,13 @@
            file://redis.conf \
            file://init-redis-server \
            file://redis.service \
-           file://hiredis-update-Makefile-to-add-symbols-to-staticlib.patch \
 "
 
-SRC_URI[md5sum] = "87be8867447f62524b584813e5a7bd14"
-SRC_URI[sha256sum] = "93e422c0d584623601f89b956045be158889ebe594478a2c24e1bf218495633f"
+SRC_URI_append_mips = " file://remove-atomics.patch"
+SRC_URI_append_arm = " file://remove-atomics.patch"
+
+SRC_URI[md5sum] = "c75b11e4177e153e4dc1d8dd3a6174e4"
+SRC_URI[sha256sum] = "ff0c38b8c156319249fec61e5018cf5b5fe63a65b61690bec798f4c998c232ad"
 
 inherit autotools-brokensep update-rc.d systemd useradd
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.6.0.bb b/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.6.0.bb
rename to meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb
index 797bcaa..ff99574 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.6.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb
@@ -4,13 +4,13 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=3349111ed0533471494beec99715bc9d"
 
-DEPENDS = "libpng zlib cairo pango glib-2.0 libxml2 groff-native"
+DEPENDS = "libpng zlib cairo pango glib-2.0 libxml2 groff-native python-setuptools-native"
 
-SRCREV = "61f116744262c4c18922dcf806e496715f199669"
-PV = "1.6.0"
+SRCREV = "bfc82d5242855628b826018479df00e0ec4e8360"
+PV = "1.7.0"
 
 SRC_URI = "\
-    git://github.com/oetiker/rrdtool-1.x.git;branch=1.6;protocol=http; \
+    git://github.com/oetiker/rrdtool-1.x.git;branch=master;protocol=http; \
 "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-fix-jump-misses-init-error.patch b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-fix-jump-misses-init-error.patch
new file mode 100644
index 0000000..68b6863
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-fix-jump-misses-init-error.patch
@@ -0,0 +1,71 @@
+From 3e5a0cb440c788e2383e40ab23ac1cf01d96961b Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Tue, 24 Jul 2018 01:30:25 -0700
+Subject: [PATCH] src/tcp.c: fix jump-misses-init error
+
+Fix below jump-misses-init error
+
+| In file included from ../../git/src/tcp.c:51:
+| ../../git/src/tcp.c: In function 'relpTcpConnect':
+| ../../git/src/relp.h:220:3: error: jump skips variable initialization [-Werror=jump-misses-init]
+|    goto finalize_it;  \
+|    ^~~~
+| ../../git/src/tcp.c:1951:3: note: in expansion of macro 'ABORT_FINALIZE'
+|    ABORT_FINALIZE(RELP_RET_IO_ERR);
+|    ^~~~~~~~~~~~~~
+| ../../git/src/tcp.c:2005:1: note: label 'finalize_it' defined here
+|  finalize_it:
+|  ^~~~~~~~~~~
+| ../../git/src/tcp.c:1991:6: note: 'r' declared here
+|   int r = getsockopt(pThis->sock, SOL_SOCKET, SO_ERROR, &so_error, &len);
+|       ^
+| In file included from ../../git/src/tcp.c:51:
+| ../../git/src/relp.h:220:3: error: jump skips variable initialization [-Werror=jump-misses-init]
+|    goto finalize_it;  \
+|    ^~~~
+| ../../git/src/tcp.c:1951:3: note: in expansion of macro 'ABORT_FINALIZE'
+|    ABORT_FINALIZE(RELP_RET_IO_ERR);
+|    ^~~~~~~~~~~~~~
+| ../../git/src/tcp.c:2005:1: note: label 'finalize_it' defined here
+|  finalize_it:
+|  ^~~~~~~~~~~
+| ../../git/src/tcp.c:1989:12: note: 'len' declared here
+|   socklen_t len = sizeof so_error;
+|             ^~~
+
+Upstream-Status: Submitted[https://github.com/rsyslog/librelp/pull/117]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ src/tcp.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/tcp.c b/src/tcp.c
+index f35eb84..fb34dc7 100644
+--- a/src/tcp.c
++++ b/src/tcp.c
+@@ -1936,6 +1936,9 @@ relpTcpConnect(relpTcp_t *const pThis,
+ 	struct addrinfo hints;
+ 	struct addrinfo *reslocal = NULL;
+ 	struct pollfd pfd;
++	int so_error;
++	socklen_t len = sizeof so_error;
++	int r;
+ 
+ 	ENTER_RELPFUNC;
+ 	RELPOBJ_assert(pThis, Tcp);
+@@ -1985,10 +1988,8 @@ relpTcpConnect(relpTcp_t *const pThis,
+ 		ABORT_FINALIZE(RELP_RET_TIMED_OUT);
+ 	}
+ 
+-	int so_error;
+-	socklen_t len = sizeof so_error;
+ 
+-	int r = getsockopt(pThis->sock, SOL_SOCKET, SO_ERROR, &so_error, &len);
++	r = getsockopt(pThis->sock, SOL_SOCKET, SO_ERROR, &so_error, &len);
+ 	if (r == -1 || so_error != 0) {
+ 		pThis->pEngine->dbgprint("socket has an error %d\n", so_error);
+ 		ABORT_FINALIZE(RELP_RET_IO_ERR);
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-increase-the-size-of-szHname.patch b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-increase-the-size-of-szHname.patch
new file mode 100644
index 0000000..5a62e15
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-increase-the-size-of-szHname.patch
@@ -0,0 +1,53 @@
+From d8950ad273d79ec516468289adbd427e681dbc66 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Mon, 30 Jul 2018 01:22:56 -0700
+Subject: [PATCH] src/tcp.c: increase the size of szHname
+
+Increase the size of szHname to fix below
+error:
+| ../../git/src/tcp.c: In function 'relpTcpSetRemHost':
+| ../../git/src/tcp.c:352:57: error: '%s' directive output may be truncated writing up to 1024 bytes into a region of size 1011 [-Werror=format-truncation=]
+|      snprintf((char*)szHname, NI_MAXHOST, "[MALICIOUS:IP=%s]", szIP);
+|                                                          ^~    ~~~~
+| In file included from /poky-build/tmp/work/i586-poky-linux/librelp/1.2.16-r0/recipe-sysroot/usr/include/stdio.h:862,
+|                  from ../../git/src/tcp.c:38:
+| /poky-build/tmp/work/i586-poky-linux/librelp/1.2.16-r0/recipe-sysroot/usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 16 and 1040 bytes into a destination of size 1025
+|    return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
+|           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+|         __bos (__s), __fmt, __va_arg_pack ());
+|         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+| cc1: all warnings being treated as errors
+| Makefile:536: recipe for target 'librelp_la-tcp.lo' failed
+
+Upstream-Status: Submitted[https://github.com/rsyslog/librelp/pull/118]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ src/tcp.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/tcp.c b/src/tcp.c
+index fb34dc7..2c38b0b 100644
+--- a/src/tcp.c
++++ b/src/tcp.c
+@@ -319,7 +319,7 @@ relpTcpSetRemHost(relpTcp_t *const pThis, struct sockaddr *pAddr)
+ 	relpEngine_t *pEngine;
+ 	int error;
+ 	unsigned char szIP[NI_MAXHOST] = "";
+-	unsigned char szHname[NI_MAXHOST] = "";
++	unsigned char szHname[1045] = "";
+ 	struct addrinfo hints, *res;
+ 	size_t len;
+ 	
+@@ -349,7 +349,7 @@ relpTcpSetRemHost(relpTcp_t *const pThis, struct sockaddr *pAddr)
+ 			if(getaddrinfo((char*)szHname, NULL, &hints, &res) == 0) {
+ 				freeaddrinfo (res);
+ 				/* OK, we know we have evil, so let's indicate this to our caller */
+-				snprintf((char*)szHname, NI_MAXHOST, "[MALICIOUS:IP=%s]", szIP);
++				snprintf((char*)szHname, sizeof(szHname), "[MALICIOUS:IP=%s]", szIP);
+ 				pEngine->dbgprint("Malicious PTR record, IP = \"%s\" HOST = \"%s\"", szIP, szHname);
+ 				iRet = RELP_RET_MALICIOUS_HNAME;
+ 			}
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.14.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.14.bb
deleted file mode 100644
index 28047eb..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.14.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "A reliable logging library"
-HOMEPAGE = "https://github.com/rsyslog/libfastjson"
-
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1fb9c10ed9fd6826757615455ca893a9"
-
-DEPENDS = "gmp nettle libidn zlib gnutls"
-
-SRC_URI = "git://github.com/rsyslog/librelp.git;protocol=https"
-
-SRCREV = "fc512e337bfc7c92770246dbff5f482b879498b9"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.16.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.16.bb
new file mode 100644
index 0000000..17478ef
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.16.bb
@@ -0,0 +1,18 @@
+SUMMARY = "A reliable logging library"
+HOMEPAGE = "https://github.com/rsyslog/libfastjson"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1fb9c10ed9fd6826757615455ca893a9"
+
+DEPENDS = "gmp nettle libidn zlib gnutls"
+
+SRC_URI = "git://github.com/rsyslog/librelp.git;protocol=https \
+           file://0001-src-tcp.c-fix-jump-misses-init-error.patch \
+           file://0001-src-tcp.c-increase-the-size-of-szHname.patch \
+"
+
+SRCREV = "5e849ff060be0c7dce972e194c54fdacfee0adc2"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/0001-Include-sys-time-h.patch b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/0001-Include-sys-time-h.patch
index ca88dd3..6ce8b7a 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/0001-Include-sys-time-h.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/0001-Include-sys-time-h.patch
@@ -1,6 +1,6 @@
-From 9739095de6ae5f844354756ae968f5f8864eb3e3 Mon Sep 17 00:00:00 2001
+From 7baf35b88d742032a2dc456c396843e17e866f8e Mon Sep 17 00:00:00 2001
 From: Ming Liu <peter.x.liu@external.atlascopco.com>
-Date: Sun, 26 Feb 2017 14:10:21 +0100
+Date: Wed, 27 Jun 2018 14:04:57 +0800
 Subject: [PATCH] Include sys/time.h
 
 struct timeval is defined in sys/time.h with a musl libc.
@@ -8,13 +8,13 @@
 Upstream-Status: Inappropriate [musl libc specific]
 
 Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
-
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
 ---
  tests/msleep.c | 4 ----
  1 file changed, 4 deletions(-)
 
 diff --git a/tests/msleep.c b/tests/msleep.c
-index 26a8206..ca818be 100644
+index 98dbece..96f6950 100644
 --- a/tests/msleep.c
 +++ b/tests/msleep.c
 @@ -26,11 +26,7 @@
@@ -26,6 +26,7 @@
 -#else
 -#include <time.h>
 -#endif
- 
- int main(int argc, char *argv[])
- {
+ #if defined(HAVE_SYS_SELECT_H)
+ #include <sys/select.h>
+ #endif
+2.7.4
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.conf b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.conf
index 324ae6d..dbfefb7 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.conf
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.conf
@@ -84,3 +84,8 @@
 # UDP Syslog Server:
 #$ModLoad imudp.so  # provides UDP syslog reception
 #$UDPServerRun 514 # start a UDP syslog server at standard port 514
+
+#
+# Include all config files in /etc/rsyslog.d/
+#
+$IncludeConfig /etc/rsyslog.d/*.conf
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
index 94ec517..5f8568f 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
@@ -9,7 +9,7 @@
         delaycompress
         compress
         postrotate
-		/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
+		@BINDIR@/pkill -HUP rsyslogd 2> /dev/null || true
         endscript
 }
 
@@ -34,6 +34,6 @@
         delaycompress
         sharedscripts
         postrotate
-		/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
+		@BINDIR@/pkill -HUP rsyslogd 2> /dev/null || true
         endscript
 }
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use-pkgconfig-to-check-libgcrypt.patch b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use-pkgconfig-to-check-libgcrypt.patch
index 162d239..0352587 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use-pkgconfig-to-check-libgcrypt.patch
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/use-pkgconfig-to-check-libgcrypt.patch
@@ -3,7 +3,7 @@
 Date: Wed, 18 Jun 2014 13:46:52 +0800
 Subject: [PATCH] use pkgconfig to check libgcrypt
 
-Upstream-status: Inappropriate [configuration]
+Upstream-Status: Inappropriate [configuration]
 
 libgcrypt does no longer provide libgcrypt-config, and provide
 *.pc, so we should use pkgconfig to check
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.29.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.37.0.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.29.0.bb
rename to meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.37.0.bb
index 476540d..1fb4390 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.29.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.37.0.bb
@@ -30,8 +30,11 @@
     file://0001-Include-sys-time-h.patch \
 "
 
-SRC_URI[md5sum] = "3805617f65a4b4bea34606487a5255a0"
-SRC_URI[sha256sum] = "220ba30b5afb0f3ddb328613fea7aa3966b01e4d0c52d6de9ab27b0858f19738"
+SRC_URI[md5sum] = "e0942b4b88a13602a6b6352bf9f05091"
+SRC_URI[sha256sum] = "295c289b4c8abd8f8f3fe35a83249b739cedabe82721702b910255f9faf147e7"
+
+UPSTREAM_CHECK_URI = "https://github.com/rsyslog/rsyslog/releases"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
 
 inherit autotools pkgconfig systemd update-rc.d ptest
 
@@ -40,7 +43,7 @@
 # first line is default yes in configure
 PACKAGECONFIG ??= " \
     rsyslogd rsyslogrt klog inet regexp uuid libgcrypt \
-    imdiag gnutls imfile \
+    fmhttp imdiag gnutls imfile \
     ${@bb.utils.filter('DISTRO_FEATURES', 'snmp systemd', d)} \
     ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'testbench relp ${VALGRIND}', '', d)} \
 "
@@ -49,6 +52,7 @@
 PACKAGECONFIG[relp] = "--enable-relp,--disable-relp,librelp,"
 PACKAGECONFIG[rsyslogd] = "--enable-rsyslogd,--disable-rsyslogd,,"
 PACKAGECONFIG[rsyslogrt] = "--enable-rsyslogrt,--disable-rsyslogrt,,"
+PACKAGECONFIG[fmhttp] = "--enable-fmhttp,--disable-fmhttp,curl,"
 PACKAGECONFIG[inet] = "--enable-inet,--disable-inet,,"
 PACKAGECONFIG[klog] = "--enable-klog,--disable-klog,,"
 PACKAGECONFIG[regexp] = "--enable-regexp,--disable-regexp,,"
@@ -63,6 +67,7 @@
 PACKAGECONFIG[snmp] = "--enable-snmp,--disable-snmp,net-snmp,"
 PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls,"
 PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
+PACKAGECONFIG[imjournal] = "--enable-imjournal,--disable-imjournal,"
 PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,"
 PACKAGECONFIG[postgresql] = "--enable-pgsql,--disable-pgsql,postgresql,"
 PACKAGECONFIG[libdbi] = "--enable-libdbi,--disable-libdbi,libdbi,"
@@ -82,10 +87,14 @@
 
     # do NOT need to rebuild Makefile itself
     sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    # do NOT need to rebuild $(check_PROGRAMS)
+    sed -i 's/^check-TESTS:.*$/check-TESTS:/' ${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
+    # fix the abs_top_builddir
+    sed -i 's,^\(abs_top_builddir = \).*,\1${PTEST_PATH}/,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
 
     # valgrind is not compatible with arm and mips,
     # so remove related test cases if there is no valgrind.
@@ -121,6 +130,12 @@
     install -m 755 ${WORKDIR}/initscript ${D}${sysconfdir}/init.d/syslog
     install -m 644 ${WORKDIR}/rsyslog.conf ${D}${sysconfdir}/rsyslog.conf
     install -m 644 ${WORKDIR}/rsyslog.logrotate ${D}${sysconfdir}/logrotate.d/logrotate.rsyslog
+    sed -i -e "s#@BINDIR@#${bindir}#g" ${D}${sysconfdir}/logrotate.d/logrotate.rsyslog
+
+    if ${@bb.utils.contains('PACKAGECONFIG', 'imjournal', 'true', 'false', d)}; then
+        install -d 0755 ${D}${sysconfdir}/rsyslog.d
+        echo '$ModLoad imjournal' >> ${D}${sysconfdir}/rsyslog.d/imjournal.conf
+    fi
 }
 
 FILES_${PN} += "${bindir}"
@@ -146,5 +161,6 @@
 VALGRIND_mips64n32 = ""
 VALGRIND_arm = ""
 VALGRIND_aarch64 = ""
+VALGRIND_riscv64 = ""
 RDEPENDS_${PN}-ptest += "make diffutils gzip bash gawk coreutils procps"
 RRECOMMENDS_${PN}-ptest += "${TCLIBC}-dbg ${VALGRIND}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-fix-compile-failure-with-libc-musl.patch b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-fix-compile-failure-with-libc-musl.patch
new file mode 100644
index 0000000..e4bde80
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-fix-compile-failure-with-libc-musl.patch
@@ -0,0 +1,80 @@
+From c51c2c543f3c78b2a68acc61f786f903f2e0fec8 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Sun, 9 Sep 2018 07:28:09 -0400
+Subject: [PATCH] fix compile failure with libc musl
+
+The lack of random_r in musl:
+[snip]
+|main.c:1393:7: warning: implicit declaration of function 'random_r';
+did you mean 'random'? [-Wimplicit-function-declaration]
+|  rv = random_r(&rand_data, &val);
+|       ^~~~~~~~
+|       random
+|main.c:1408:30: error: invalid application of 'sizeof' to incomplete
+type 'struct random_data'
+|  memset(&rand_data, 0, sizeof(rand_data));
+[snip]
+
+s/random_r/random/, s/initstate_r/initstate/ and remove `static struct
+random_data rand_data'
+
+Here is the man of `random_r()':
+[snip]
+The random_r() function is like random(3), except that instead of using
+state information maintained in a global variable
+[snip]
+
+So use random without state information is OK.
+
+Upstream-Status: Submitted [sanlock-devel@lists.fedorahosted.org]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ src/main.c | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/src/main.c b/src/main.c
+index f60b4d3..602c400 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -84,7 +84,6 @@ static char command[COMMAND_MAX];
+ static int cmd_argc;
+ static char **cmd_argv;
+ static struct thread_pool pool;
+-static struct random_data rand_data;
+ static char rand_state[32];
+ static pthread_mutex_t rand_mutex = PTHREAD_MUTEX_INITIALIZER;
+ static const char *run_dir = NULL;
+@@ -1386,16 +1385,15 @@ int get_rand(int a, int b);
+ 
+ int get_rand(int a, int b)
+ {
+-	int32_t val;
+-	int rv;
++	long int rv;
+ 
+ 	pthread_mutex_lock(&rand_mutex);
+-	rv = random_r(&rand_data, &val);
++	rv = random();
+ 	pthread_mutex_unlock(&rand_mutex);
+ 	if (rv < 0)
+ 		return rv;
+ 
+-	return a + (int) (((float)(b - a + 1)) * val / (RAND_MAX+1.0));
++	return a + (int) (((float)(b - a + 1)) * rv / (RAND_MAX+1.0));
+ }
+ 
+ static void setup_host_name(void)
+@@ -1405,9 +1403,7 @@ static void setup_host_name(void)
+ 	uuid_t uu;
+ 
+ 	memset(rand_state, 0, sizeof(rand_state));
+-	memset(&rand_data, 0, sizeof(rand_data));
+-
+-	initstate_r(time(NULL), rand_state, sizeof(rand_state), &rand_data);
++	initstate(time(NULL), rand_state, sizeof(rand_state));
+ 
+ 	/* use host name from command line */
+ 
+-- 
+2.8.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.6.0.bb b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.6.0.bb
new file mode 100644
index 0000000..c51bccc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.6.0.bb
@@ -0,0 +1,36 @@
+SUMMARY = "A shared storage lock manager"
+DESCRIPTION = "sanlock  is  a lock manager built on shared storage.  Hosts with access \
+to the storage can perform locking.   An  application  running  on  the \
+hosts  is  given  a small amount of space on the shared block device or \
+file, and uses sanlock for its  own  application-specific  synchronization. \
+Internally,  the  sanlock  daemon manages locks using two disk-based \
+lease algorithms: delta leases and paxos leases."
+HOMEPAGE = "https://pagure.io/sanlock"
+SECTION = "utils"
+
+LICENSE = "LGPLv2+ & GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://README.license;md5=60487bf0bf429d6b5aa72b6d37a0eb22"
+
+SRC_URI = "git://pagure.io/sanlock.git;protocol=http \
+           file://0001-fix-compile-failure-with-libc-musl.patch \
+          "
+SRCREV = "90b2ffa77edd46bea007b7bb39bfd4d2db2ff7af"
+S = "${WORKDIR}/git"
+
+DEPENDS = "libaio util-linux"
+
+inherit distutils
+
+do_configure[noexec] = "1"
+
+do_compile_prepend () {
+    oe_runmake -C wdmd CMD_LDFLAGS="${LDFLAGS}" LIB_LDFLAGS="${LDFLAGS}"
+    oe_runmake -C src CMD_LDFLAGS="${LDFLAGS}" LIB_ENTIRE_LDFLAGS="${LDFLAGS}" LIB_CLIENT_LDFLAGS="${LDFLAGS}"
+    cd ${S}/python
+}
+
+do_install_prepend () {
+    oe_runmake -C wdmd DESTDIR=${D} LIBDIR=${libdir} install
+    oe_runmake -C src DESTDIR=${D} LIBDIR=${libdir} install
+    cd ${S}/python
+}
diff --git a/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.9-fix-sfcbinst2mof.patch b/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.9-fix-sfcbinst2mof.patch
new file mode 100644
index 0000000..7279d84
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb-1.4.9/sblim-sfcb-1.4.9-fix-sfcbinst2mof.patch
@@ -0,0 +1,31 @@
+From ad6ca4f392bf549239b1ed3b2b372070eb127e7f Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Wed, 11 Jul 2018 11:06:04 +0800
+Subject: [PATCH] Makefile.am: fix sfcbinst2mof_DEPENDENCIES
+
+Fixed build with automake 1.16.1:
+/path/to/i586-poky-linux/8.1.0/ld: cannot find -lsfcBrokerCore
+collect2: error: ld returned 1 exit status
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index 34ac319..47deed7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -360,6 +360,7 @@ sfcbproc_SOURCES=sfcbproc.c
+ 
+ sfcbinst2mof_SOURCES=sfcbinst2mof.c
+ sfcbinst2mof_LDADD = -lsfcFileRepository -lsfcBrokerCore
++sfcbinst2mof_DEPENDENCIES = libsfcBrokerCore.la libsfcFileRepository.la
+ 
+ sfcbtrace_SOURCES=sfcbtrace.c
+ sfcbtrace_LDADD = -lsfcBrokerCore
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb b/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb
index 10ffaaa..91c5002 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb
@@ -25,6 +25,7 @@
            file://sblim-sfcb-1.4.9-fix-ftbfs.patch \
            file://0001-include-stdint.h-system-header-for-UINT16_MAX.patch \
            file://0001-Replace-need-for-error.h-when-it-does-not-exist.patch \
+           file://sblim-sfcb-1.4.9-fix-sfcbinst2mof.patch \
 "
 
 SRC_URI[md5sum] = "28021cdabc73690a94f4f9d57254ce30"
@@ -67,14 +68,8 @@
 }
 
 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
+        $INTERCEPT_DIR/postinst_intercept delay_to_first_boot ${PKG} mlprefix=${MLPREFIX}
     fi
 
     ${datadir}/sfcb/genSslCert.sh ${sysconfdir}/sfcb
diff --git a/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb b/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb
index e202d16..77d3cfe 100644
--- a/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb
@@ -33,16 +33,14 @@
 INITSCRIPT_NAME_${PN}-raidmon = "sgraid"
 INITSCRIPT_PARAMS_${PN}-raidmon = "defaults 80 20"
 
-PACKAGES =+ "${PN}-diskmon ${PN}-diskmon-dbg"
-PACKAGES =+ "${PN}-raidmon ${PN}-raidmon-dbg"
+PACKAGES =+ "${PN}-diskmon"
+PACKAGES =+ "${PN}-raidmon"
 
-FILES_${PN}-dbg += "/usr/share/scsirastools/.debug"
+RPROVIDES_${PN}-dbg += "${PN}-diskmon-dbg ${PN}-raidmon-dbg"
 
 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}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sedutil/sedutil_git.bb b/meta-openembedded/meta-oe/recipes-extended/sedutil/sedutil_git.bb
new file mode 100644
index 0000000..cec569f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/sedutil/sedutil_git.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "A utility to manage self encrypting drives that conform \
+to the Trusted Computing Group OPAL 2.0 SSC specification."
+SUMMARY = "The Drive Trust Alliance Self Encrypting Drive Utility"
+HOMEPAGE = "https://github.com/Drive-Trust-Alliance/sedutil"
+SECTION = "console/utils"
+LICENSE = "GPLv3"
+
+LIC_FILES_CHKSUM = "file://Common/LICENSE.txt;md5=d32239bcb673463ab874e80d47fae504"
+
+BASEPV = "1.15.1"
+PV = "${BASEPV}+git${SRCPV}"
+SRCREV = "358cc758948be788284d5faba46ccf4cc1813796"
+SRC_URI = "git://github.com/Drive-Trust-Alliance/sedutil.git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep
diff --git a/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch b/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch
new file mode 100644
index 0000000..91e64d2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch
@@ -0,0 +1,28 @@
+From f28aa188e5b0ea85369febe657b8807b8025038b Mon Sep 17 00:00:00 2001
+From: chrfranke <authors@smartmontools.org>
+Date: Wed, 8 Nov 2017 06:15:50 +0000
+Subject: [PATCH] os_linux.cpp: Use 'realpath()' (BSD, POSIX) instead of
+ 'canonicalize_file_name()' (GNU extension). This fixes build on systems with
+ musl libc (#921).
+
+git-svn-id: http://svn.code.sf.net/p/smartmontools/code/trunk@4603 4ea69e1a-61f1-4043-bf83-b5c94c648137
+
+Upstream-Status: Backport [https://www.smartmontools.org/ticket/921]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ os_linux.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/os_linux.cpp b/os_linux.cpp
+index 134d5bc..935f9c7 100644
+--- a/os_linux.cpp
++++ b/os_linux.cpp
+@@ -3176,7 +3176,7 @@ static bool is_hpsa(const char * name)
+ {
+   char path[128];
+   snprintf(path, sizeof(path), "/sys/block/%s/device", name);
+-  char * syshostpath = canonicalize_file_name(path);
++  char * syshostpath = realpath(name, (char *)0);
+   if (!syshostpath)
+     return false;
+ 
diff --git a/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.6.bb b/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.6.bb
index 1a1767e..c77c105 100644
--- a/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.6.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.6.bb
@@ -1,6 +1,6 @@
 SUMMARY = "Control and monitor storage systems using S.M.A.R.T"
-DESCRIPTION = \
-"The smartmontools package contains two utility programs (smartctl \
+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 \
@@ -13,10 +13,11 @@
 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 \
-"
+           file://initd.smartd \
+           file://smartmontools.default \
+           file://smartd.service \
+           file://0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch \
+           "
 
 PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'libcap-ng selinux', d)}"
 PACKAGECONFIG[libcap-ng] = "--with-libcap-ng=yes,--with-libcap-ng=no,libcap-ng"
diff --git a/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.7.bb b/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.7.bb
new file mode 100644
index 0000000..9f37c5f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.7.bb
@@ -0,0 +1,25 @@
+#
+# Copyright (C) 2014 Wind River Systems, Inc.
+# Released under the BSD-3-Clause license (see COPYING.BSD-3 for the terms)
+#
+SUMMARY = "A compression/decompression library"
+DESCRIPTION = "Snappy is a fast data compression and decompression library \
+It was designed to be very fast and stable, but not to achieve a high \
+compression ratio."
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f62f3080324a97b3159a7a7e61812d0c"
+
+SRC_URI = "https://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.7.tar.gz/sha512/32046f532606ba545a4e4825c0c66a19be449f2ca2ff760a6fa170a3603731479a7deadb683546e5f8b5033414c50f4a9a29f6d23b7a41f047e566e69eca7caf/snappy-1.1.7.tar.gz"
+
+SRC_URI[md5sum] = "ee9086291c9ae8deb4dac5e0b85bf54a"
+SRC_URI[sha256sum] = "3dfa02e873ff51a11ee02b9ca391807f0c8ea0529a4924afa645fbf97163f9d4"
+
+inherit cmake pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[lzo] = "-DHAVE_LIBLZO2=1,-DHAVE_LIBLZO2=0,lzo,"
+TARGET_CFLAGS += "-fPIC"
+
+EXTRA_OECMAKE += '-DBUILD_SHARED_LIBS="ON" \
+                  '
diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
index 3c019eb..6ce3cab 100644
--- a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
@@ -1,6 +1,6 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=72d977d697c3c05830fdff00a7448931"
-SRCREV = "d1248b0f22ea8dc3b9d84a61bd35a83309bdb4b4"
+SRCREV = "6003f9997587e6a563cebf1f246bcd0eb6deff3d"
 PV = "1.0+git${SRCPV}"
 
 SRC_URI = "git://github.com/hartkopp/can-isotp.git;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0001-Fix-build-when-S-B.patch b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0001-Fix-build-when-S-B.patch
new file mode 100644
index 0000000..51756b8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0001-Fix-build-when-S-B.patch
@@ -0,0 +1,28 @@
+From ad907b1aff217fe3b431ae052025ba8ba6cacc01 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Jun 2018 23:14:58 -0700
+Subject: [PATCH] Fix build when S != B
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.in b/src/Makefile.in
+index 4392c06..2c5cae4 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -69,7 +69,7 @@ install:
+ 	$(INSTALL) -d $(DESTDIR)$(bindir)
+ 	$(INSTALL) -m 0755 tiptop $(DESTDIR)$(bindir)
+ 	$(INSTALL) -d $(DESTDIR)$(man1dir)
+-	$(INSTALL) -m 0644 tiptop.1 $(DESTDIR)$(man1dir)
++	$(INSTALL) -m 0644 $(srcdir)/tiptop.1 $(DESTDIR)$(man1dir)
+ 	ln $(DESTDIR)$(bindir)/tiptop $(DESTDIR)$(bindir)/ptiptop
+ 	ln $(DESTDIR)$(man1dir)/tiptop.1 $(DESTDIR)$(man1dir)/ptiptop.1
+ 
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0001-Fix-parallel-build-problems-by-Adrian-Bunk.patch b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0001-Fix-parallel-build-problems-by-Adrian-Bunk.patch
new file mode 100644
index 0000000..ae676ae
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0001-Fix-parallel-build-problems-by-Adrian-Bunk.patch
@@ -0,0 +1,28 @@
+From 848983a30dc99248ec45632bfc31718716a86e9d Mon Sep 17 00:00:00 2001
+From: Tomasz Buchert <tomasz@debian.org>
+Date: Fri, 7 Jul 2017 21:15:58 +0200
+Subject: [PATCH] Fix parallel build problems (by Adrian Bunk)
+
+Taken from debian
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/Makefile.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/Makefile.in b/src/Makefile.in
+index 32ab563..1993c9b 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -59,8 +59,9 @@ lex.yy.c: calc.lex
+ lex.yy.o: lex.yy.c
+ 	$(CC) $(CFLAGS) -I$(srcdir) -c lex.yy.c
+ 
++y.tab.c: y.tab.h
+ 
+-y.tab.c y.tab.h: calc.y
++y.tab.h: calc.y
+ 	$(YACC) -d $(srcdir)/calc.y
+ 
+ y.tab.o: y.tab.c
diff --git a/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0002-fix-reproducibility-of-build-process.patch b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0002-fix-reproducibility-of-build-process.patch
new file mode 100644
index 0000000..cecb70b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop/0002-fix-reproducibility-of-build-process.patch
@@ -0,0 +1,32 @@
+From 89dd9d8705408dccd5c5e47d22eba6fd6ec22b50 Mon Sep 17 00:00:00 2001
+From: Tomasz Buchert <tomasz@debian.org>
+Date: Thu, 9 Jul 2015 16:07:23 +0200
+Subject: [PATCH] fix reproducibility of build process
+
+The upstream Makefile sets macros that depend on
+a particular platform where the package is built.
+We don't set them which fixes the problem.
+
+Taken from debian
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/Makefile.in | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/src/Makefile.in b/src/Makefile.in
+index 1993c9b..4392c06 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -48,9 +48,7 @@ Makefile: Makefile.in ../config.status
+ 
+ 
+ version.o: version.c
+-	$(CC) $(CFLAGS) -DCOMPILE_HOST="\""`hostname`"\"" \
+-                        -DCOMPILE_DATE="\"`date`\"" \
+-                        -c $(srcdir)/version.c
++	$(CC) $(CFLAGS) -c $(srcdir)/version.c
+ 
+ 
+ lex.yy.c: calc.lex
diff --git a/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.1.bb b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.1.bb
index 0a00a36..cf67a08 100644
--- a/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/tiptop/tiptop_2.3.1.bb
@@ -2,15 +2,20 @@
 HOMEPAGE = "http://tiptop.gforge.inria.fr/"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "ncurses libxml2"
+DEPENDS = "ncurses libxml2 bison-native flex-native"
 
-SRC_URI = "http://tiptop.gforge.inria.fr/releases/${BP}.tar.gz"
+SRC_URI = "http://tiptop.gforge.inria.fr/releases/${BP}.tar.gz \
+           file://0001-Fix-parallel-build-problems-by-Adrian-Bunk.patch \
+           file://0002-fix-reproducibility-of-build-process.patch \
+           file://0001-Fix-build-when-S-B.patch \
+           "
 SRC_URI[md5sum] = "46ca0fdf0236f02dd2b96d347626d2a2"
 SRC_URI[sha256sum] = "51c4449c95bba34f16b429729c2f58431490665d8093efaa8643b2e1d1084182"
 
-inherit autotools-brokensep
+inherit autotools
+
 EXTRA_OECONF = "CFLAGS="$CFLAGS -I${STAGING_INCDIR}/libxml2""
-COMPATIBLE_HOST = "(i.86|x86_64|arm|powerpc).*-linux"
+COMPATIBLE_HOST = "(i.86|x86_64|arm|powerpc|aarch64).*-linux"
 
 do_configure_prepend () {
     # Two bugs in configure.ac when cross-compiling.
diff --git a/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Replace-strncpy-with-memcpy.patch b/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Replace-strncpy-with-memcpy.patch
new file mode 100644
index 0000000..4b17087
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Replace-strncpy-with-memcpy.patch
@@ -0,0 +1,49 @@
+From d314f26e024aaf15bf4ab22ceb98501148d0eac8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 7 May 2018 19:53:33 -0700
+Subject: [PATCH] Replace strncpy with memcpy
+
+gcc8 detects that strncpy is overwiritng the null terminating character
+the source strings are already initialized to 0 so memcpy would do the same
+job
+
+Fixes
+rn2903.c:153:5: error: 'strncpy' output may be truncated copying 16 bytes from a string of length 511 [-Werror=stringop-truncation]
+     strncpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64);
+     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/ecezo/ecezo.c   | 2 +-
+ src/rn2903/rn2903.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/ecezo/ecezo.c b/src/ecezo/ecezo.c
+index 6a195fc1..56c6dab3 100644
+--- a/src/ecezo/ecezo.c
++++ b/src/ecezo/ecezo.c
+@@ -488,7 +488,7 @@ int ecezo_send_command(const ecezo_context dev, char *cmd, char *buffer,
+     // our write buffer
+     char writeBuffer[ECEZO_MAX_BUFFER_LEN];
+ 
+-    strncpy(writeBuffer, cmd, ECEZO_MAX_BUFFER_LEN);
++    memcpy(writeBuffer, cmd, ECEZO_MAX_BUFFER_LEN-1);
+     writeBuffer[ECEZO_MAX_BUFFER_LEN - 1] = 0;
+ 
+     int writelen = strlen(writeBuffer);
+diff --git a/src/rn2903/rn2903.c b/src/rn2903/rn2903.c
+index f30a33ae..01a011da 100644
+--- a/src/rn2903/rn2903.c
++++ b/src/rn2903/rn2903.c
+@@ -150,7 +150,7 @@ static rn2903_context _rn2903_postinit(rn2903_context dev,
+         rn2903_close(dev);
+         return NULL;
+     }
+-    strncpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64);
++    memcpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64);
+ 
+     return dev;
+ }
+-- 
+2.17.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-include-sys-types.h-for-uint-definition.patch b/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-include-sys-types.h-for-uint-definition.patch
new file mode 100644
index 0000000..a0a4741
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-include-sys-types.h-for-uint-definition.patch
@@ -0,0 +1,33 @@
+From 48a580bd402cf6a3ee9e42013653219bfeb3caf6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Jun 2018 18:39:16 -0700
+Subject: [PATCH] include sys/types.h for uint definition
+
+uint is defined in sys/types.h, therefore this
+header needs to be included, it gets exposed with
+musl where this header is not getting included indirectly
+as it is happening when building on glibc
+
+Fixes build errors on musl e.g.
+upm/src/kx122/kx122.hpp:456:31: error: 'uint' has not been declared
+|        void setBufferThreshold(uint samples);
+|                                ^~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Submitted [https://github.com/intel-iot-devkit/upm/pull/656]
+ src/kx122/kx122.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/kx122/kx122.h b/src/kx122/kx122.h
+index 1622ed50..56e5215e 100644
+--- a/src/kx122/kx122.h
++++ b/src/kx122/kx122.h
+@@ -31,6 +31,7 @@ extern "C"{
+ #include <assert.h>
+ #include <unistd.h>
+ #include <math.h>
++#include <sys/types.h>
+ 
+ #include <mraa/i2c.h>
+ #include <mraa/spi.h>
diff --git a/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb b/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
index d742a5e..babe5f4 100644
--- a/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
@@ -7,12 +7,13 @@
 
 DEPENDS = "libjpeg-turbo mraa"
 
-SRCREV = "cc7fec9ae0228add9011bf1c2cd5e0ca2ba0d4f0"
+SRCREV = "dc45cd78595c7c24c8a8574c63bb48b5bb99c5aa"
 PV = "1.6.0-git${SRCPV}"
 
-SRC_URI = " \
-    git://github.com/intel-iot-devkit/${BPN}.git;protocol=http \
-"
+SRC_URI = "git://github.com/intel-iot-devkit/${BPN}.git;protocol=http \
+           file://0001-Replace-strncpy-with-memcpy.patch \
+           file://0001-include-sys-types.h-for-uint-definition.patch \
+           "
 
 S = "${WORKDIR}/git"
 
@@ -21,7 +22,6 @@
 
 inherit distutils3-base cmake
 
-
 # override this in local.conf to get needed bindings.
 # BINDINGS_pn-upm="python"
 # will result in only the python bindings being built/packaged.
diff --git a/meta-openembedded/meta-oe/recipes-extended/volume_key/files/0001-explicitly-support-python3-by-pkg-config.patch b/meta-openembedded/meta-oe/recipes-extended/volume_key/files/0001-explicitly-support-python3-by-pkg-config.patch
deleted file mode 100644
index 03edb13..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/volume_key/files/0001-explicitly-support-python3-by-pkg-config.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 18415c0b4c6e50ed9b99dfdae8d210590d0ab72e Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 28 Apr 2017 04:50:30 -0400
-Subject: [PATCH] explicitly support python3 by pkg-config
-
-The PYTHON_CPPFLAGS and -lpython$(PYTHON_VERSION) is hardcoded,
-use pkg-config to replace
-
-Upstream-Status: Inappropriate [wr-installer specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- Makefile.am  | 5 ++---
- configure.ac | 2 ++
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 4569bbf..7a8daf4 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -20,7 +20,6 @@ ACLOCAL_AMFLAGS = -I m4
- AM_CPPFLAGS = $(blkid_CFLAGS) $(glib_CFLAGS) $(GPGME_CFLAGS) \
- 	$(libcryptsetup_CFLAGS) $(nss_CFLAGS)
- LOCALEDIR_CPPFLAGS = -DLOCALEDIR='"$(localedir)"'
--PYTHON_CPPFLAGS = -I/usr/include/python$(PYTHON_VERSION)
- 
- ## Targets
- SUBDIRS = po
-@@ -63,9 +62,9 @@ lib_libvolume_key_la_LIBADD = $(blkid_LIBS) $(glib_LIBS) $(GPGME_LIBS) \
- 	$(LTLIBINTL) $(libcryptsetup_LIBS) $(nss_LIBS)
- 
- python__volume_key_la_SOURCES = python/volume_key_wrap.c
--python__volume_key_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_CPPFLAGS)
-+python__volume_key_la_CPPFLAGS = $(AM_CPPFLAGS) $(python3_CFLAGS)
- python__volume_key_la_LDFLAGS = -module -avoid-version $(glib_LIBS)
--python__volume_key_la_LIBADD = lib/libvolume_key.la -lpython$(PYTHON_VERSION) \
-+python__volume_key_la_LIBADD = lib/libvolume_key.la $(python3_LIBS) \
- 	$(glib_LIBS) $(nss_LIBS)
- 
- src_volume_key_SOURCES = src/volume_key.c
-diff --git a/configure.ac b/configure.ac
-index ff35dd0..0928a6c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -27,6 +27,8 @@ AM_INIT_AUTOMAKE([no-dist-gzip dist-xz no-define subdir-objects -Wall])
- AC_PROG_CC
- AM_PROG_CC_C_O
- LT_INIT([disable-static])
-+
-+PKG_CHECK_MODULES(python3, [python3])
- AM_PATH_PYTHON
- 
- dnl Not gpg2, it cannot receive passphrases from gpgme
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.9.bb b/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.11.bb
similarity index 78%
rename from meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.9.bb
rename to meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.11.bb
index febf3f2..c41b20c 100644
--- a/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.9.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.11.bb
@@ -9,10 +9,9 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
 SRC_URI = "https://releases.pagure.org/volume_key/volume_key-${PV}.tar.xz \
-           file://0001-explicitly-support-python3-by-pkg-config.patch \
 "
-SRC_URI[md5sum] = "a2d14931177c660e1f3ebbcf5f47d8e2"
-SRC_URI[sha256sum] = "450a54fe9bf56acec6850c1e71371d3e4913c9ca1ef0cdc3a517b4b6910412a6"
+SRC_URI[md5sum] = "30df56c7743eb7c965293b3d61194232"
+SRC_URI[sha256sum] = "e6b279c25ae477b555f938db2e41818f90c8cde942b0eec92f70b6c772095f6d"
 
 SRCNAME = "volume_key"
 S = "${WORKDIR}/${SRCNAME}-${PV}"
@@ -25,6 +24,7 @@
     cryptsetup \
     nss \
     gpgme \
+    swig-native \
 "
 
 RDEPENDS_python3-${PN} += "${PN}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_git.bb b/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_git.bb
index 86e6d30..de75164 100644
--- a/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_git.bb
@@ -14,7 +14,7 @@
 
 inherit pkgconfig
 
-EXTRA_OEMAKE = "CC='${CC}' LD='${LD}'"
+EXTRA_OEMAKE = "CC='${CC}' LD='${LD}' LIBRARY_PATH=${baselib}"
 
 do_install() {
     oe_runmake install PREFIX=${D}${exec_prefix} INSTALL=install
diff --git a/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.26.bb b/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.26.bb
new file mode 100644
index 0000000..0128a7c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.26.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "A Python module to deal with freedesktop.org specifications"
+HOMEPAGE = "http://freedesktop.org/wiki/Software/pyxdg"
+SECTION = "devel/python"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f30a9716ef3762e3467a2f62bf790f0a"
+
+SRCREV = "7db14dcf4c4305c3859a2d9fcf9f5da2db328330"
+SRC_URI = "git://anongit.freedesktop.org/xdg/pyxdg"
+
+inherit distutils
+
+S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
index bd66a28..96aa311 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
+++ b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
@@ -20,6 +20,7 @@
            file://union-sigval.patch \
            file://use-PTHREAD_MUTEX_RECURSIVE.patch \
            file://fix-client-gfx_state-initialisation.patch \
+           file://fix-tslib-version-check.patch \
           "
 
 S = "${WORKDIR}/DirectFB-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/fix-tslib-version-check.patch b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/fix-tslib-version-check.patch
new file mode 100644
index 0000000..352bfaf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/fix-tslib-version-check.patch
@@ -0,0 +1,38 @@
+fix tslib version check in configure.in
+
+The patch makes sure that the old as well as the new tslib pkg-config
+metadata file naming style is handled correctly.
+
+tslib 0.0 to 1.0 created only a tslib-<VERSION>.pc pkg-config metadata
+file.
+
+With tslib 1.1 the tslib-<VERSION>.pc phase out was started.
+Additionally, the pkg-config metadata file tslib.pc was added.
+
+Since tslib 1.6 the tslib-<VERSION>.pc metadata file is deprecated.
+Now, there is only a tslib.pc.
+
+Upstream-Status: Inappropriate [no upstream]
+Signed-off-by: Ben Guan <ben.guan@cn.bosch.com>
+Signed-off-by: Mark Jonas <mark.jonas@de.bosch.com>
+
+diff -Nru DirectFB-1.7.7.orig/configure.in DirectFB-1.7.7/configure.in
+--- DirectFB-1.7.7.orig/configure.in	2015-02-10 01:16:46.000000000 +0800
++++ DirectFB-1.7.7/configure.in	2018-06-06 17:19:18.472143103 +0800
+@@ -2459,10 +2459,13 @@
+ 
+ enable_tslib=no
+ if test "$checkfor_tslib" = "yes"; then
+-  PKG_CHECK_MODULES([TSLIB], [tslib-1.0 >= 1.0.0], [enable_tslib=yes], [enable_tslib=no])
++  PKG_CHECK_MODULES([TSLIB], [tslib >= 1.1], [enable_tslib=yes], [enable_tslib=no])
+   if test "$enable_tslib" = "no"; then
+-     PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [enable_tslib=yes], [enable_tslib=no
+-       AC_MSG_WARN([*** no tslib -- tslib driver will not be built.])])
++    PKG_CHECK_MODULES([TSLIB], [tslib-1.0 >= 1.0], [enable_tslib=yes], [enable_tslib=no])
++    if test "$enable_tslib" = "no"; then
++      PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [enable_tslib=yes], [enable_tslib=no
++        AC_MSG_WARN([*** no tslib -- tslib driver will not be built.])])
++    fi
+   fi
+ fi
+ 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20170731.bb b/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20170731.bb
index 481fedf..947d36e 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20170731.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20170731.bb
@@ -45,7 +45,9 @@
     cd $currdir
 }
 
-PACKAGES =+ "${PN}-python-dbg ${PN}-python"
+PACKAGES =+ "${PN}-python"
+
+RPROVIDES_${PN}-dbg += "${PN}-python-dbg"
 
 FILES_${PN} += " \
     ${datadir}/mime \
@@ -53,7 +55,6 @@
 "
 
 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
diff --git a/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9-a2.bb b/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9-a2.bb
index 4e2ee23..7f16708 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9-a2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9-a2.bb
@@ -4,9 +4,7 @@
 Shading Language (GLSL) specifications."
 HOMEPAGE = "https://glm.g-truc.net"
 BUGTRACKER = "https://github.com/g-truc/glm/issues"
-
 SECTION = "libs"
-
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://readme.md;beginline=21;endline=22;md5=3075b5727d36f29edccf97b93e72b790"
 
@@ -16,13 +14,13 @@
     file://0002-glm-install-headers-only.patch \
 "
 SRCREV = "fcbedf5058ef8613dd02aac62ef00d55dcfeadd7"
+
 S = "${WORKDIR}/git"
 
 inherit cmake
 
 EXTRA_OECMAKE = "-DGLM_ENABLE_EXPERIMENTAL=ON"
 
-FILES_${PN}-dev += "${libdir}/cmake"
 RDEPENDS_${PN}-dev = ""
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.16.bb b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.16.bb
rename to meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb
index 7a691c6..91c5ed2 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.16.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb
@@ -16,8 +16,8 @@
            file://0001-configure.ac-remove-AM_PO_SUBDIRS.patch \
 "
 
-SRC_URI[libgphoto2.md5sum] = "084d220d078d28c0c7a3ba13f4476128"
-SRC_URI[libgphoto2.sha256sum] = "e757416d1623e01a9d0d294b2e790162e434c0964f50d3b7ff1a3424b62a2906"
+SRC_URI[libgphoto2.md5sum] = "ae78e7a7936a6962c3a22b256bee1869"
+SRC_URI[libgphoto2.sha256sum] = "417464f0a313fa937e8a71cdf18a371cf01e750830195cd63ae31da0d092b555"
 
 inherit autotools pkgconfig gettext lib_package
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-gfx_2.0.25.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-gfx_2.0.25.bb
new file mode 100644
index 0000000..b077a0b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-gfx_2.0.25.bb
@@ -0,0 +1,19 @@
+SUMMARY = "SDL graphics drawing primitives and other support functions"
+SECTION = "libs"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5d1de21f0b70830e299905eac3419084"
+
+DEPENDS = "virtual/libsdl"
+
+SRC_URI = "http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-${PV}.tar.gz"
+SRC_URI[md5sum] = "ea24ed4b82ff1304809c363494fa8e16"
+SRC_URI[sha256sum] = "556eedc06b6cf29eb495b6d27f2dcc51bf909ad82389ba2fa7bdc4dec89059c0"
+
+S = "${WORKDIR}/SDL_gfx-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += " \
+    --disable-mmx \
+"
+
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image/configure.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-image/configure.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image/configure.patch
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-image/configure.patch
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image_1.2.12.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-image_1.2.12.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl-image_1.2.12.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-image_1.2.12.bb
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer/configure.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-mixer/configure.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer/configure.patch
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-mixer/configure.patch
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer_1.2.12.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-mixer_1.2.12.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl-mixer_1.2.12.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-mixer_1.2.12.bb
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net/am_foreign.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net/am_foreign.patch
new file mode 100644
index 0000000..fb3ff7e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net/am_foreign.patch
@@ -0,0 +1,11 @@
+diff -Nurd SDL_net-1.2.8/Makefile.am SDL_net-1.2.8/Makefile.am
+--- SDL_net-1.2.8/Makefile.am	2012-01-15 18:20:10.000000000 +0200
++++ SDL_net-1.2.8/Makefile.am	2014-08-01 21:18:52.720815807 +0300
+@@ -1,5 +1,7 @@
+ # Makefile.am for the SDL sample image loading library and viewer
+ 
++AUTOMAKE_OPTIONS = foreign
++
+ lib_LTLIBRARIES = libSDL_net.la
+ 
+ libSDL_netincludedir = $(includedir)/SDL
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net/libtool2.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net/libtool2.patch
new file mode 100644
index 0000000..9718a3b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net/libtool2.patch
@@ -0,0 +1,21 @@
+From f9417c864183a0f6d0e90f66f5254a63b04a041a Mon Sep 17 00:00:00 2001
+From: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
+Date: Wed, 17 Oct 2012 20:51:51 +0200
+
+---
+ configure.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/configure.in b/configure.in
+index c42bd0c..71a4825 100644
+--- a/configure.in
++++ b/configure.in
+@@ -44,6 +44,8 @@ AC_CANONICAL_HOST
+ dnl Setup for automake
+ AM_INIT_AUTOMAKE(SDL_net, $VERSION)
+ 
++dnl got macros
++AC_CONFIG_MACRO_DIR([acinclude])
+ dnl Check for tools
+ AC_PROG_LIBTOOL
+ AC_PROG_CC
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net_1.2.8.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net_1.2.8.bb
new file mode 100644
index 0000000..b021e56
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-net_1.2.8.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Simple DirectMedia Layer networking library."
+SECTION = "libs/network"
+
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9cf3de2d872bf510f88eb20d06d700b5"
+
+inherit autotools pkgconfig
+
+DEPENDS = "virtual/libsdl"
+
+SRC_URI = " \
+  https://www.libsdl.org/projects/SDL_net/release/SDL_net-${PV}.tar.gz \
+  file://libtool2.patch \
+  file://am_foreign.patch \
+"
+
+S = "${WORKDIR}/SDL_net-${PV}"
+
+SRC_URI[md5sum] = "20e64e61d65662db66c379034f11f718"
+SRC_URI[sha256sum] = "5f4a7a8bb884f793c278ac3f3713be41980c5eedccecff0260411347714facb4"
diff --git a/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl-ttf/use.pkg-config.for.freetype2.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-ttf/use.pkg-config.for.freetype2.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl-ttf/use.pkg-config.for.freetype2.patch
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-ttf/use.pkg-config.for.freetype2.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl-ttf_2.0.11.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-ttf_2.0.11.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl-ttf_2.0.11.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-ttf_2.0.11.bb
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl2-image_2.0.1.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb
similarity index 79%
rename from meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl2-image_2.0.1.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb
index 1f9c794..6deb352 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libsdl-image/libsdl2-image_2.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb
@@ -2,13 +2,13 @@
 SECTION = "libs"
 
 LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=ec65b9778f5584a0bd8dfc17d6340ba0"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=a855a9eb5507fc556e672080c4b428ca"
 
 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"
+SRC_URI[md5sum] = "c6baf6dfa80fa8a66853661a36a6034e"
+SRC_URI[sha256sum] = "3510c25da735ffcd8ce3b65073150ff4f7f9493b866e85b83738083b556d2368"
 
 S = "${WORKDIR}/SDL2_image-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl2-mixer_2.0.2.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.2.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-multimedia/libsdl-mixer/libsdl2-mixer_2.0.2.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.2.bb
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-net_2.0.1.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-net_2.0.1.bb
new file mode 100644
index 0000000..0ea96fe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-net_2.0.1.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Simple DirectMedia Layer networking library."
+SECTION = "libs/network"
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=fe9d52a78585a65224776875510ed127"
+
+SRC_URI = " \
+  https://www.libsdl.org/projects/SDL_net/release/SDL2_net-${PV}.tar.gz \
+"
+S = "${WORKDIR}/SDL2_net-${PV}"
+
+inherit autotools pkgconfig
+
+DEPENDS = "virtual/libsdl2"
+
+SRC_URI[md5sum] = "5c1d9d1cfa63301b141cb5c0de2ea7c4"
+SRC_URI[sha256sum] = "15ce8a7e5a23dafe8177c8df6e6c79b6749a03fff1e8196742d3571657609d21"
+
+do_configure_prepend() {
+    # create dummy files which autotools consider as mandatory
+    touch ${S}/NEWS ${S}/README ${S}/AUTHORS ${S}/ChangeLog  
+
+    # Remove old libtool macros.
+    for macro in libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4; do
+        echo ${S}/acinclude/macro
+        rm -f ${S}/acinclude/$macro
+    done
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf/automake_foreign.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/automake_foreign.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf/automake_foreign.patch
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/automake_foreign.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf/use.pkg-config.for.freetype2.patch b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf/use.pkg-config.for.freetype2.patch
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf_2.0.14.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.14.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/libsdl-ttf/libsdl2-ttf_2.0.14.bb
rename to meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.14.bb
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-Use-override-consistently.patch b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-Use-override-consistently.patch
new file mode 100644
index 0000000..6d4bdc2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-Use-override-consistently.patch
@@ -0,0 +1,147 @@
+From 0acfb67f99fd8d6af323311fee8c08116295b148 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 5 Sep 2018 18:21:19 -0700
+Subject: [PATCH 1/2] Use override consistently
+
+Make clang++ happy
+error: 'setApplicationTitle' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-over ride]
+
+Upstream-Status: Submitted [https://github.com/libyui/libyui-ncurses/pull/69]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/NCApplication.h | 46 ++++++++++++++++++++++-----------------------
+ 1 file changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/src/NCApplication.h b/src/NCApplication.h
+index e24c3eb..09e4708 100644
+--- a/src/NCApplication.h
++++ b/src/NCApplication.h
+@@ -60,7 +60,7 @@ public:
+      * Reimplemented from YApplication.
+      **/
+     virtual void setLanguage( const std::string & language,
+-			      const std::string & encoding = std::string() );
++			      const std::string & encoding = std::string() ) override;
+ 
+     /**
+      * Open a directory selection box and prompt the user for an existing
+@@ -77,7 +77,7 @@ public:
+      * Implemented from YApplication.
+      **/
+     virtual std::string askForExistingDirectory( const std::string & startDir,
+-					    const std::string & headline );
++					    const std::string & headline ) override;
+ 
+     /**
+      * Open a file selection box and prompt the user for an existing file.
+@@ -97,7 +97,7 @@ public:
+      **/
+     virtual std::string askForExistingFile( const std::string & startWith,
+ 				       const std::string & filter,
+-				       const std::string & headline );
++				       const std::string & headline ) override;
+ 
+     /**
+      * Open a file selection box and prompt the user for a file to save data
+@@ -119,28 +119,28 @@ public:
+      **/
+     virtual std::string askForSaveFileName( const std::string & startWith,
+ 				       const std::string & filter,
+-				       const std::string & headline );
++				       const std::string & headline ) override;
+ 
+     /**
+      * Beep.
+      *
+      * Reimplemented from YApplication.
+      **/
+-    virtual void beep();
++    virtual void beep() override;
+ 
+     /**
+      * Redraw the screen.
+      *
+      * Reimplemented from YApplication.
+      **/
+-    virtual void redrawScreen();
++    virtual void redrawScreen() override;
+ 
+     /**
+      * Initialize the (text) console keyboard.
+      *
+      * Reimplemented from YApplication.
+      **/
+-    virtual void initConsoleKeyboard();
++    virtual void initConsoleKeyboard() override;
+ 
+     /**
+      * Set the (text) console font according to the current encoding etc.
+@@ -152,7 +152,7 @@ public:
+ 				 const std::string & font,
+ 				 const std::string & screen_map,
+ 				 const std::string & unicode_map,
+-				 const std::string & language );
++				 const std::string & language ) override;
+ 
+     /**
+      * Run a shell command (typically an interactive program using NCurses)
+@@ -165,7 +165,7 @@ public:
+      *
+      * Reimplemented from YApplication.
+      **/
+-    virtual int runInTerminal( const std::string & command );
++    virtual int runInTerminal( const std::string & command ) override;
+ 
+ 
+     /// @{
+@@ -183,33 +183,33 @@ public:
+     //
+     // All implemented from YApplication.
+ 
+-    virtual int	 displayWidth();
+-    virtual int	 displayHeight();
+-    virtual int	 displayDepth();
+-    virtual long displayColors();
++    virtual int	 displayWidth() override;
++    virtual int	 displayHeight() override;
++    virtual int	 displayDepth() override;
++    virtual long displayColors() override;
+ 
+-    virtual int	 defaultWidth();
+-    virtual int	 defaultHeight();
++    virtual int	 defaultWidth() override;
++    virtual int	 defaultHeight() override;
+ 
+-    virtual bool isTextMode()			{ return true; }
++    virtual bool isTextMode() override			{ return true; }
+ 
+-    virtual bool hasImageSupport()		{ return false; }
++    virtual bool hasImageSupport() override 		{ return false; }
+ 
+-    virtual bool hasIconSupport()		{ return false; }
++    virtual bool hasIconSupport() override		{ return false; }
+ 
+-    virtual bool hasAnimationSupport()		{ return false; }
++    virtual bool hasAnimationSupport()	override	{ return false; }
+ 
+-    virtual bool hasFullUtf8Support();
+-    virtual bool richTextSupportsTable()	{ return false; }
++    virtual bool hasFullUtf8Support() override;
++    virtual bool richTextSupportsTable() override	{ return false; }
+ 
+-    virtual bool leftHandedMouse()		{ return false; }
++    virtual bool leftHandedMouse() override		{ return false; }
+     
+     /**
+      * Set the application title
+      *
+      * Reimplemented from YApplication.
+      **/
+-    virtual void setApplicationTitle(const std::string& title);
++    virtual void setApplicationTitle(const std::string& title) override;
+ };
+ 
+ 
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-use-_nl_msg_cat_cntr-only-with-glibc.patch b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-use-_nl_msg_cat_cntr-only-with-glibc.patch
deleted file mode 100644
index 8e3774c..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-use-_nl_msg_cat_cntr-only-with-glibc.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 4b84f243a70a8c07f6a38dad3c9411fa707f25c9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 4 Mar 2018 17:08:43 -0800
-Subject: [PATCH] use _nl_msg_cat_cntr only with glibc
-
-The musl libc provides libintl (similar to glibc)
-but does not use the same internals,
-so even though we are using the GNU gettext
-the libintl included with the libc does not define
-_nl_msg_cat_cntr and it does not need to.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/NCi18n.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/NCi18n.h b/src/NCi18n.h
-index 165b0e7..bfc4ed7 100644
---- a/src/NCi18n.h
-+++ b/src/NCi18n.h
-@@ -59,12 +59,13 @@ inline void setTextdomain( const char * domain )
-     bindtextdomain( domain,  YSettings::localeDir().c_str() );
-     bind_textdomain_codeset( domain, "UTF-8" );
-     textdomain( domain );
--
-+#if defined(__GLIBC__)
-     // Make change known
-     {
- 	extern int _nl_msg_cat_cntr;
- 	++_nl_msg_cat_cntr;
-     }
-+#endif
- }
- 
- 
--- 
-2.16.2
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch
new file mode 100644
index 0000000..f65cbe6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch
@@ -0,0 +1,49 @@
+From 162a0899f1dacd83007c4e82b9034f55610d8c20 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 5 Sep 2018 19:01:51 -0700
+Subject: [PATCH 2/2] Define own resize in NCPad and fix param type of
+ SetLabel()
+
+Explicitly override resize() to avoid conflicts from NCursesWindow
+definition since there is another resize definition as well
+
+Fixes
+src/NCPad.h:164:18: error: 'NCPad::resize' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
+
+NCTablePad.h:132:18: error: 'NCTableTag::SetLabel' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
+
+Upstream-Status: Submitted [https://github.com/libyui/libyui-ncurses/pull/69]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/NCPad.h      | 1 +
+ src/NCTablePad.h | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/NCPad.h b/src/NCPad.h
+index 328c4aa..d8fb324 100644
+--- a/src/NCPad.h
++++ b/src/NCPad.h
+@@ -162,6 +162,7 @@ public:
+     virtual void Destwin( NCursesWindow * dwin );
+ 
+     virtual void resize( wsze nsze );
++    virtual int resize( int lines, int columns ) { return NCursesWindow::resize(lines, columns );}
+     virtual void wRecoded();
+     virtual void setDirty() { dirty = true; }
+ 
+diff --git a/src/NCTablePad.h b/src/NCTablePad.h
+index c450529..3756796 100644
+--- a/src/NCTablePad.h
++++ b/src/NCTablePad.h
+@@ -129,7 +129,7 @@ public:
+ 
+     virtual ~NCTableTag() {}
+ 
+-    virtual void SetLabel( const NCstring & ) { /*NOOP*/; }
++    virtual void SetLabel( const NClabel & ) { /*NOOP*/; }
+ 
+     virtual void DrawAt( NCursesWindow & w, const wrect at,
+ 			 NCTableStyle & tableStyle,
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0003-Simplify-ncurses-finding-module.patch b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0003-Simplify-ncurses-finding-module.patch
new file mode 100644
index 0000000..2520ac4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0003-Simplify-ncurses-finding-module.patch
@@ -0,0 +1,35 @@
+From c2291fe28dc5682f81804941512431642975cf21 Mon Sep 17 00:00:00 2001
+From: Pascal Bach <pascal.bach@siemens.com>
+Date: Mon, 29 Oct 2018 18:17:32 +0100
+Subject: [PATCH] Simplify ncurses finding module
+
+CMake will automatically look in the right locations, there is no need to
+re-implement the logic with a for loop and NO_DEFAULT_PATH.
+
+It is already done like this to file the headers.
+
+Upstream-Status: Submitted [https://github.com/libyui/libyui-ncurses/pull/73]
+Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
+---
+ cmake/Modules/FindCurses6.cmake | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/cmake/Modules/FindCurses6.cmake b/cmake/Modules/FindCurses6.cmake
+index 0bf02c3..e298d5d 100644
+--- a/cmake/Modules/FindCurses6.cmake
++++ b/cmake/Modules/FindCurses6.cmake
+@@ -5,11 +5,9 @@
+ #  CURSES6_LIBRARIES - The libraries needed to use Curses6
+ #  CURSES6_DEFINITIONS - Compiler switches required for using Curses6
+ 
+-FOREACH(path ${CMAKE_LIBRARY_PATH} /usr/${LIB_DIR})
+-  FIND_LIBRARY(CURSES6_NCURSESW_LIBRARY NAMES ncursesw PATHS ${path}/ncurses6 ${path} NO_DEFAULT_PATH)
+-  FIND_LIBRARY(CURSES6_PANELW_LIBRARY NAMES panelw PATHS ${path}/ncurses6 ${path} NO_DEFAULT_PATH)
+-  FIND_LIBRARY(CURSES6_TINFO_LIBRARY NAMES tinfo PATHS ${path}/ncurses6 ${path} NO_DEFAULT_PATH)
+-ENDFOREACH()
++FIND_LIBRARY(CURSES6_NCURSESW_LIBRARY NAMES ncursesw PATH_SUFFIXES ncurses6)
++FIND_LIBRARY(CURSES6_PANELW_LIBRARY NAMES panelw PATH_SUFFIXES ncurses6)
++FIND_LIBRARY(CURSES6_TINFO_LIBRARY NAMES tinfo PATH_SUFFIXES ncurses6)
+ 
+ SET(CURSES6_LIBRARIES ${CURSES6_NCURSESW_LIBRARY} ${CURSES6_PANELW_LIBRARY})
+ # tinfo is optional (in 12.1 is not there)
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_git.bb b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_git.bb
index 578c713..18ea2e8 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_git.bb
@@ -5,13 +5,15 @@
 "
 
 SRC_URI = "git://github.com/libyui/libyui-ncurses.git \
-           file://0001-use-_nl_msg_cat_cntr-only-with-glibc.patch \
+           file://0001-Use-override-consistently.patch \
+           file://0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch \
+           file://0003-Simplify-ncurses-finding-module.patch \
           "
 
 SRC_URI_append_class-target = " file://0001-Fix-the-error-of-can-t-find-header-file.patch"
 
 PV = "2.48.3+git${SRCPV}"
-SRCREV = "79b804b45ffc6a0d92e28e793ff389a20b63b54b"
+SRCREV = "c941b32246e8b2952fce4fd5743f8e318222ab98"
 
 S = "${WORKDIR}/git"
 
@@ -29,8 +31,8 @@
     mkdir -p ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib64/
     cp ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib/libyui.so* ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib64/
     cd -
-    sed -i "s#\${YPREFIX}#\${PKG_CONFIG_SYSROOT_DIR}${base_prefix}&#" ${S}/CMakeLists.txt
-    sed -i "s#/usr#${PKG_CONFIG_SYSROOT_DIR}${base_prefix}&#" ${PKG_CONFIG_SYSROOT_DIR}${libdir}/cmake/libyui/LibyuiLibraryDepends-release.cmake
+    sed -i -e "s#\${YPREFIX}#\${PKG_CONFIG_SYSROOT_DIR}${base_prefix}&#" ${S}/CMakeLists.txt
+    sed -i -e "s#/usr#${PKG_CONFIG_SYSROOT_DIR}${base_prefix}&#" ${PKG_CONFIG_SYSROOT_DIR}${libdir}/cmake/libyui/LibyuiLibraryDepends-release.cmake
 }
 
 do_install_append () {
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-GCC-8-warning.patch b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-GCC-8-warning.patch
deleted file mode 100644
index c1ba42e..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-GCC-8-warning.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 1e6d40fec16a94d1a4bd40634405267200b7e969 Mon Sep 17 00:00:00 2001
-From: marxin <mliska@suse.cz>
-Date: Tue, 10 Apr 2018 15:21:40 +0200
-Subject: [PATCH] Fix GCC 8 warning:
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-/home/marxin/Programming/libyui/src/YDialog.cc: In static member function ‘static void YDialog::showText(const string&, bool)’:
-/home/marxin/Programming/libyui/src/YDialog.cc:690:26: error: catching polymorphic type ‘class YUIException’ by value [-Werror=catch-value=]
-     catch ( YUIException exception )
-                          ^~~~~~~~~
-/home/marxin/Programming/libyui/src/YDialog.cc: In static member function ‘static bool YDialog::showRelNotesText()’:
-/home/marxin/Programming/libyui/src/YDialog.cc:814:26: error: catching polymorphic type ‘class YUIException’ by value [-Werror=catch-value=]
-     catch ( YUIException exception )
-                          ^~~~~~~~~
----
-Upstream-Status: Submitted [https://github.com/libyui/libyui/pull/122]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- src/YDialog.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/YDialog.cc b/src/YDialog.cc
-index 92e5031..8ecff90 100644
---- a/src/YDialog.cc
-+++ b/src/YDialog.cc
-@@ -687,7 +687,7 @@ YDialog::showText( const std::string & text, bool useRichText )
- 	dialog->waitForEvent();
- 	dialog->destroy();
-     }
--    catch ( YUIException exception )
-+    catch ( YUIException &exception )
-     {
- 	// Don't let the application die just because help couldn't be displayed.
- 
-@@ -811,7 +811,7 @@ YDialog::showRelNotesText()
- 	}
-         dialog->destroy();
-     }
--    catch ( YUIException exception )
-+    catch ( YUIException &exception )
-     {
-         // Don't let the application die just because RN couldn't be displayed.
- 
--- 
-2.17.0
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-curly-braces-for-MAKE-variable.patch b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-curly-braces-for-MAKE-variable.patch
new file mode 100644
index 0000000..dbe2417
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-curly-braces-for-MAKE-variable.patch
@@ -0,0 +1,32 @@
+From 4eed37b1a61458fc8e5251f7cb7c6d64e8e9da8d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 5 Sep 2018 17:48:09 -0700
+Subject: [PATCH] Use curly braces for MAKE variable
+
+Fixes errors with ninja
+| ninja: error: build.ninja:142: bad $-escape (literal $ must be written as $$)
+
+Upstream-Status: Submitted [https://github.com/libyui/libyui/pull/137]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ buildtools/LibyuiCommon.cmake | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/buildtools/LibyuiCommon.cmake b/buildtools/LibyuiCommon.cmake
+index cb93307..e6fbefd 100644
+--- a/buildtools/LibyuiCommon.cmake
++++ b/buildtools/LibyuiCommon.cmake
+@@ -122,8 +122,8 @@ MACRO( SET_BUILD_FLAGS )	# setup compiler-flags depending on CMAKE_BUILD_TYPE
+     ENABLE_TESTING()
+     # add a wrapper "tests" target, the builtin "test" cannot be extended :-(
+     ADD_CUSTOM_TARGET(tests
+-      $(MAKE)
+-      COMMAND $(MAKE) test
++      ${MAKE}
++      COMMAND ${MAKE} test
+     )
+   ENDIF ( ENABLE_TESTS OR ENABLE_CODE_COVERAGE)
+ 
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-relative-install-paths-for-CMake.patch b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-relative-install-paths-for-CMake.patch
new file mode 100644
index 0000000..11a1678
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-relative-install-paths-for-CMake.patch
@@ -0,0 +1,130 @@
+From d24c2516ae25d0ee180c1020e52114ea32230585 Mon Sep 17 00:00:00 2001
+From: Pascal Bach <pascal.bach@siemens.com>
+Date: Mon, 29 Oct 2018 18:03:43 +0100
+Subject: [PATCH] Use relative install paths for CMake
+
+Files are installed via a special _PREFIX variant of the INSTALL_???_DIR
+variable which is an absolute path.
+
+This not only is redundant if CMAKE_INTALL_PREFIX is set but it even causes
+the resulting Config.cmake to be non relocatable. This means it contains absolute
+paths to the build host. This is a problem for cross compilation in Yocto.
+
+This change gets rid of the absolute path and removes the no longer needed
+_PREFIX variants.
+
+Upstream-Status: Submitted [https://github.com/libyui/libyui/pull/140]
+Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
+---
+ buildtools/LibyuiCommon.cmake | 35 ++++++++++++++---------------------
+ 1 file changed, 14 insertions(+), 21 deletions(-)
+
+diff --git a/buildtools/LibyuiCommon.cmake b/buildtools/LibyuiCommon.cmake
+index e6fbefd..5e2fc0d 100644
+--- a/buildtools/LibyuiCommon.cmake
++++ b/buildtools/LibyuiCommon.cmake
+@@ -258,13 +258,6 @@ MACRO( SET_ENVIRONMENT )	# setup the environment vars
+ 
+   SET( INSTALL_DOC_DIR "${DOC_DIR}" )
+ 
+-  FOREACH( p "DOC" LIB INCLUDE CMAKE PKGCONFIG BUILDTOOLS )
+-    SET( var "INSTALL_${p}_DIR" )
+-    IF( NOT IS_ABSOLUTE "${${var}}" )
+-      SET( ${var}_PREFIX "${YPREFIX}/${${var}}" )
+-    ENDIF( NOT IS_ABSOLUTE "${${var}}" )
+-  ENDFOREACH()
+-
+ ENDMACRO( SET_ENVIRONMENT )
+ 
+ MACRO( SET_SONAME )
+@@ -359,7 +352,7 @@ MACRO( SET_AUTODOCS )		# looks for doxygen, dot and latex and setup autodocs acc
+       IF( INSTALL_DOCS OR DOCS_ONLY )
+         INSTALL(
+           FILES "${CMAKE_BINARY_DIR}/doc/latex/refman.pdf"
+-          DESTINATION "${INSTALL_DOC_DIR_PREFIX}"
++          DESTINATION "${INSTALL_DOC_DIR}"
+         )
+       ENDIF( INSTALL_DOCS OR DOCS_ONLY )
+ 
+@@ -379,7 +372,7 @@ MACRO( SET_AUTODOCS )		# looks for doxygen, dot and latex and setup autodocs acc
+       FOREACH( p css gif html jpg js png tag )
+         INSTALL(
+           DIRECTORY "${CMAKE_BINARY_DIR}/doc/html"
+-          DESTINATION "${INSTALL_DOC_DIR_PREFIX}"
++          DESTINATION "${INSTALL_DOC_DIR}"
+           FILES_MATCHING PATTERN "*.${p}"
+         )
+       ENDFOREACH()
+@@ -638,32 +631,32 @@ MACRO( SET_INSTALL_TARGET )
+ 
+ INSTALL(
+   EXPORT ${PROJECTNAME_UC}LibraryDepends
+-  DESTINATION "${INSTALL_CMAKE_DIR_PREFIX}"
++  DESTINATION "${INSTALL_CMAKE_DIR}"
+   COMPONENT dev
+ )
+ 
+ FOREACH( p Config.cmake ConfigVersion.cmake )
+   INSTALL(
+     FILES "${CMAKE_BINARY_DIR}/${PROJECTNAME_UC}${p}"
+-    DESTINATION "${INSTALL_CMAKE_DIR_PREFIX}"
++    DESTINATION "${INSTALL_CMAKE_DIR}"
+ )
+ ENDFOREACH( p Config.cmake ConfigVersion.cmake )
+ 
+ INSTALL(
+   FILES "${CMAKE_BINARY_DIR}/${PROJECTNAME}.pc"
+-  DESTINATION "${INSTALL_PKGCONFIG_DIR_PREFIX}"
++  DESTINATION "${INSTALL_PKGCONFIG_DIR}"
+ )
+ 
+ IF( NOT PLUGINNAME AND NOT EXTENSIONNAME )
+   INSTALL(
+     DIRECTORY "${BUILDTOOLS_DIR}"
+-    DESTINATION "${INSTALL_BUILDTOOLS_DIR_PREFIX}"
++    DESTINATION "${INSTALL_BUILDTOOLS_DIR}"
+   )
+ ENDIF( NOT PLUGINNAME AND NOT EXTENSIONNAME )
+ 
+ INSTALL(
+   FILES ${BUILDTOOLS_LIST}
+-  DESTINATION "${INSTALL_BUILDTOOLS_DIR_PREFIX}"
++  DESTINATION "${INSTALL_BUILDTOOLS_DIR}"
+ )
+ 
+ ENDMACRO( SET_INSTALL_TARGET )
+@@ -724,9 +717,9 @@ MACRO( PROCESS_SOURCES )
+   INSTALL(
+     TARGETS ${TARGETLIB}
+     EXPORT ${PROJECTNAME_UC}LibraryDepends
+-    LIBRARY DESTINATION "${INSTALL_LIB_DIR_PREFIX}"
+-    ARCHIVE DESTINATION "${INSTALL_LIB_DIR_PREFIX}"
+-    PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR_PREFIX}"
++    LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
++    ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
++    PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}"
+     COMPONENT dev
+   )
+ 
+@@ -746,9 +739,9 @@ MACRO( PROCESS_SOURCES )
+     INSTALL(
+       TARGETS ${TARGETLIB}_static
+       EXPORT ${PROJECTNAME_UC}LibraryDepends
+-      LIBRARY DESTINATION "${INSTALL_LIB_DIR_PREFIX}"
+-      ARCHIVE DESTINATION "${INSTALL_LIB_DIR_PREFIX}"
+-      PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR_PREFIX}"
++      LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
++      ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
++      PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}"
+       COMPONENT dev
+      )
+ 
+@@ -776,7 +769,7 @@ MACRO( PROCESS_EXAMPLES )
+ 
+   INSTALL(
+     FILES ${EXAMPLES_LIST}
+-    DESTINATION "${INSTALL_DOC_DIR_PREFIX}/examples"
++    DESTINATION "${INSTALL_DOC_DIR}/examples"
+   )
+ 
+ ENDMACRO( PROCESS_EXAMPLES )
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_git.bb b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_git.bb
index 4294528..d313fb0 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_git.bb
@@ -6,13 +6,14 @@
                    "
 
 SRC_URI = "git://github.com/libyui/libyui.git \
-           file://0001-Fix-GCC-8-warning.patch \
            file://0001-Fix-build-with-clang.patch \
+           file://0001-Use-curly-braces-for-MAKE-variable.patch \
+           file://0001-Use-relative-install-paths-for-CMake.patch \
            "
 
 PV = "3.3.3+git"
-SRCREV = "2b634cb7821e2e79dd4b7a73caf8e67c50189376"
-
+SRCREV = "50672da835ec9d52766320a44a2677e08a24c99c"
+SRCREV_FORMAT = "default"
 S = "${WORKDIR}/git"
 
 inherit cmake gettext pkgconfig
@@ -22,9 +23,9 @@
 BBCLASSEXTEND = "native nativesdk"
 
 do_configure_prepend () {
-        cd ${S}
-        ./bootstrap.sh
-        cd -
+        (cd ${S} &&
+        ./bootstrap.sh &&
+        cd -)
 }
 
 do_install_append () {
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0001-check-for-libexecinfo-providing-backtrace-APIs.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0003-check-for-libexecinfo-providing-backtrace-APIs.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0001-check-for-libexecinfo-providing-backtrace-APIs.patch
rename to meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0003-check-for-libexecinfo-providing-backtrace-APIs.patch
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0004-fix-css-under-gtk-3.20.patch b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0004-fix-css-under-gtk-3.20.patch
new file mode 100644
index 0000000..afe11f3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm/0004-fix-css-under-gtk-3.20.patch
@@ -0,0 +1,27 @@
+From 72812894cfd9454d70e4b0753531e46580416771 Mon Sep 17 00:00:00 2001
+From: dgod <dgod.osa@gmail.com>
+Date: Mon, 21 Mar 2016 19:25:25 +0800
+Subject: [PATCH] fix css under gtk 3.20
+
+Upstream-Status: Applied [1]
+
+[1] https://git.lxde.org/gitweb/?p=lxde/lxdm.git;a=patch;h=72812894cfd9454d70e4b0753531e46580416771
+---
+ data/themes/Industrial/gtk.css | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/data/themes/Industrial/gtk.css b/data/themes/Industrial/gtk.css
+index 179f0d6..f8e6432 100644
+--- a/data/themes/Industrial/gtk.css
++++ b/data/themes/Industrial/gtk.css
+@@ -17,6 +17,7 @@
+ 	color: #000000;
+ }
+ 
++#bottom_pane label,
+ #bottom_pane GtkLabel {
+ 	font: Sans 12;
+ 	color: #9E9D9B;
+-- 
+2.14.4
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
index 8e7efcd..701266b 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
@@ -7,14 +7,15 @@
            ${@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 \
-           file://0001-check-for-libexecinfo-providing-backtrace-APIs.patch \
+           file://0003-check-for-libexecinfo-providing-backtrace-APIs.patch \
+           file://0004-fix-css-under-gtk-3.20.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 = "virtual/libintl intltool-native cairo dbus gdk-pixbuf glib-2.0 gtk+3 virtual/libx11 libxcb pango iso-codes"
 DEPENDS += "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "", "consolekit", d)}"
 DEPENDS_append_libc-musl = " libexecinfo"
 
@@ -28,7 +29,7 @@
 CFLAGS_append = " -fno-builtin-fork -fno-builtin-memset -fno-builtin-strstr "
 LDFLAGS_append_libc-musl = " -lexecinfo"
 
-EXTRA_OECONF += "--enable-gtk3=no --enable-password=yes --with-x -with-xconn=xcb \
+EXTRA_OECONF += "--enable-gtk3=yes --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)} \
 "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb b/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
index c35a0c7..f4d21b8 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
@@ -39,7 +39,6 @@
     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 ${bindir}/openbox-session ${libdir}/*${SOLIBS}"
 
 FILES_${PN}-lxde += "${datadir}/lxde/ \
@@ -54,3 +53,5 @@
 "
 
 FILES_${PN}-config += "${sysconfdir}"
+
+RDEPENDS_${PN} += "${PN}-core ${PN}-config ${PN}-theme-clearlooks python pyxdg"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/files/0001-bmp_read_info_header-reject-bmp-files-with-biBitCoun.patch b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/files/0001-bmp_read_info_header-reject-bmp-files-with-biBitCoun.patch
deleted file mode 100644
index 866d9aa..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/files/0001-bmp_read_info_header-reject-bmp-files-with-biBitCoun.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 226f07e4b49c2757b181c62e6841000c512054e3 Mon Sep 17 00:00:00 2001
-From: Even Rouault <even.rouault@spatialys.com>
-Date: Mon, 14 Aug 2017 17:26:58 +0200
-Subject: [PATCH] bmp_read_info_header(): reject bmp files with biBitCount == 0
- (#983)
-
-Upstream-Status: Backport [https://github.com/uclouvain/openjpeg/commit/baf0c1ad4572daa89caa3b12985bdd93530f0dd7]
-CVE: CVE-2017-12982
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- src/bin/jp2/convertbmp.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/bin/jp2/convertbmp.c b/src/bin/jp2/convertbmp.c
-index b49e7a0..2715fdf 100644
---- a/src/bin/jp2/convertbmp.c
-+++ b/src/bin/jp2/convertbmp.c
-@@ -392,6 +392,10 @@ static OPJ_BOOL bmp_read_info_header(FILE* IN, OPJ_BITMAPINFOHEADER* header)
- 
-     header->biBitCount  = (OPJ_UINT16)getc(IN);
-     header->biBitCount |= (OPJ_UINT16)((OPJ_UINT32)getc(IN) << 8);
-+    if (header->biBitCount == 0) {
-+        fprintf(stderr, "Error, invalid biBitCount %d\n", 0);
-+        return OPJ_FALSE;
-+    }
- 
-     if (header->biSize >= 40U) {
-         header->biCompression  = (OPJ_UINT32)getc(IN);
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0001-Ensure-cmake-files-are-installed-at-common-location.patch b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0001-Ensure-cmake-files-are-installed-at-common-location.patch
new file mode 100644
index 0000000..5c5fe64
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0001-Ensure-cmake-files-are-installed-at-common-location.patch
@@ -0,0 +1,48 @@
+From fe491c0919f5adc8d626cb98c5ec19d0b99dfe20 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Thu, 27 Sep 2018 23:45:04 +0200
+Subject: [PATCH] Ensure cmake files are installed at common location
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* Otherwise recent poppler is not able to find them
+* Include path needs adjustment with this change
+
+Upstream-Status: Inappropriate [Configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ CMakeLists.txt                | 2 +-
+ cmake/OpenJPEGConfig.cmake.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ff70a06f..23d2fac4 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -150,7 +150,7 @@ if(NOT OPENJPEG_INSTALL_PACKAGE_DIR)
+   # We could install *.cmake files in share/ however those files contains
+   # hardcoded path to libraries on a multi-arch system (fedora/debian) those
+   # path will be different (lib/i386-linux-gnu vs lib/x86_64-linux-gnu)
+-  set(OPENJPEG_INSTALL_PACKAGE_DIR "${OPENJPEG_INSTALL_LIB_DIR}/${OPENJPEG_INSTALL_SUBDIR}")
++  set(OPENJPEG_INSTALL_PACKAGE_DIR "${OPENJPEG_INSTALL_LIB_DIR}/cmake/${OPENJPEG_INSTALL_SUBDIR}")
+ endif()
+ 
+ if (APPLE)
+diff --git a/cmake/OpenJPEGConfig.cmake.in b/cmake/OpenJPEGConfig.cmake.in
+index b20294ca..6a2f4baf 100644
+--- a/cmake/OpenJPEGConfig.cmake.in
++++ b/cmake/OpenJPEGConfig.cmake.in
+@@ -26,7 +26,7 @@ get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+ if(EXISTS ${SELF_DIR}/OpenJPEGTargets.cmake)
+   # This is an install tree
+   include(${SELF_DIR}/OpenJPEGTargets.cmake)
+-  get_filename_component(OPENJPEG_INCLUDE_ROOT "${SELF_DIR}/../../@OPENJPEG_INSTALL_INCLUDE_DIR@" ABSOLUTE)
++  get_filename_component(OPENJPEG_INCLUDE_ROOT "${SELF_DIR}/../../../@OPENJPEG_INSTALL_INCLUDE_DIR@" ABSOLUTE)
+   set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG_INCLUDE_ROOT})
+ 
+ else()
+-- 
+2.14.4
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0002-Do-not-ask-cmake-to-export-binaries-they-don-t-make-.patch b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0002-Do-not-ask-cmake-to-export-binaries-they-don-t-make-.patch
new file mode 100644
index 0000000..0ba13cf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0002-Do-not-ask-cmake-to-export-binaries-they-don-t-make-.patch
@@ -0,0 +1,31 @@
+From 4681de07e21f17aa28710d3a51fabe7da60463f9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Fri, 28 Sep 2018 00:38:50 +0200
+Subject: [PATCH] Do not ask cmake to export binaries - they don't make it
+ dependants sysroots
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ src/bin/jp2/CMakeLists.txt | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/bin/jp2/CMakeLists.txt b/src/bin/jp2/CMakeLists.txt
+index 4324c36d..2c11fe02 100644
+--- a/src/bin/jp2/CMakeLists.txt
++++ b/src/bin/jp2/CMakeLists.txt
+@@ -66,7 +66,6 @@ foreach(exe opj_decompress opj_compress opj_dump)
+   endif()
+   # Install exe
+   install(TARGETS ${exe}
+-    EXPORT OpenJPEGTargets
+     DESTINATION ${OPENJPEG_INSTALL_BIN_DIR} COMPONENT Applications
+   )
+   if(OPJ_USE_DSYMUTIL)
+-- 
+2.14.4
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.2.0.bb b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.2.0.bb
deleted file mode 100644
index 4ef1c40..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.2.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "OpenJPEG library is an open-source JPEG 2000 codec"
-HOMEPAGE = "http://www.openjpeg.org"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c648878b4840d7babaade1303e7f108c"
-
-SRC_URI = "https://github.com/uclouvain/${BPN}/archive/v${PV}.tar.gz;downloadfilename=${BP}.tar.gz \
-           file://0001-bmp_read_info_header-reject-bmp-files-with-biBitCoun.patch \
-          "
-SRC_URI[md5sum] = "269bb0b175476f3addcc0d03bd9a97b6"
-SRC_URI[sha256sum] = "6fddbce5a618e910e03ad00d66e7fcd09cc6ee307ce69932666d54c73b7c6e7b"
-
-inherit cmake
-
-DEPENDS = "libpng tiff lcms zlib"
-
-# 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/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.0.bb b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.0.bb
new file mode 100644
index 0000000..c50d55e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.0.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "OpenJPEG library is an open-source JPEG 2000 codec"
+HOMEPAGE = "http://www.openjpeg.org"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c648878b4840d7babaade1303e7f108c"
+
+DEPENDS = "libpng tiff lcms zlib"
+
+SRC_URI = " \
+    git://github.com/uclouvain/openjpeg.git \
+    file://0001-Ensure-cmake-files-are-installed-at-common-location.patch \
+    file://0002-Do-not-ask-cmake-to-export-binaries-they-don-t-make-.patch \
+"
+SRCREV = "081de4b15f54cb4482035b7bf5e3fb443e4bc84b"
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/files/0001-tigervnc-remove-includedir.patch b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/files/0001-tigervnc-remove-includedir.patch
index 12c4376..f0056d6 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/files/0001-tigervnc-remove-includedir.patch
+++ b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/files/0001-tigervnc-remove-includedir.patch
@@ -1,6 +1,6 @@
-From 4b423cd2e5e4296abca3be553bf64d8cc287180a Mon Sep 17 00:00:00 2001
+From 47f175618a0b0817714ea557c9e93f22f327421e Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 20 Jul 2017 17:09:05 +0800
+Date: Tue, 31 Jul 2018 16:39:52 +0800
 Subject: [PATCH 1/4] tigervnc: remove includedir
 
 Upstream-Status: Pending
@@ -15,28 +15,28 @@
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/unix/xserver/hw/vnc/Makefile.am b/unix/xserver/hw/vnc/Makefile.am
-index 0d6a4ac..854f078 100644
+index 470424b..ee18bf9 100644
 --- a/unix/xserver/hw/vnc/Makefile.am
 +++ b/unix/xserver/hw/vnc/Makefile.am
-@@ -22,7 +22,7 @@ libvnccommon_la_SOURCES = $(HDRS) \
+@@ -23,7 +23,7 @@ libvnccommon_la_SOURCES = $(HDRS) \
  
- libvnccommon_la_CPPFLAGS = -DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
+ libvnccommon_la_CPPFLAGS = -DVENDOR_RELEASE="$(VENDOR_RELEASE)" -I$(TIGERVNC_SRCDIR)/unix/common \
  	-DVENDOR_STRING="\"$(VENDOR_STRING)\"" -I$(TIGERVNC_SRCDIR)/common -UHAVE_CONFIG_H \
 -	-I$(TIGERVNC_SRCDIR)/unix/vncconfig $(XVNC_CPPFLAGS) ${XSERVERLIBS_CFLAGS} -I$(includedir) \
 +	-I$(TIGERVNC_SRCDIR)/unix/vncconfig $(XVNC_CPPFLAGS) ${XSERVERLIBS_CFLAGS} \
  	-I$(top_srcdir)/include
  
  bin_PROGRAMS = Xvnc
-@@ -42,7 +42,7 @@ Xvnc_CPPFLAGS = $(XVNC_CPPFLAGS) -DTIGERVNC -DNO_MODULE_EXTS \
+@@ -43,7 +43,7 @@ Xvnc_CPPFLAGS = $(XVNC_CPPFLAGS) -DTIGERVNC -DNO_MODULE_EXTS \
  	-UHAVE_CONFIG_H \
  	-DXFree86Server -DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
- 	-DVENDOR_STRING="\"$(VENDOR_STRING)\"" -I$(TIGERVNC_SRCDIR)/common \
+ 	-DVENDOR_STRING="\"$(VENDOR_STRING)\"" -I$(TIGERVNC_SRCDIR)/common -I$(TIGERVNC_SRCDIR)/unix/common \
 -	-I$(top_srcdir)/include ${XSERVERLIBS_CFLAGS} -I$(includedir)
 +	-I$(top_srcdir)/include ${XSERVERLIBS_CFLAGS}
  
  Xvnc_LDADD = $(XVNC_LIBS) libvnccommon.la $(COMMON_LIBS) \
  	$(XSERVER_LIBS) $(XSERVER_SYS_LIBS) $(XVNC_SYS_LIBS) -lX11
-@@ -62,7 +62,7 @@ libvnc_la_CPPFLAGS = $(XVNC_CPPFLAGS) -I$(TIGERVNC_SRCDIR)/common -UHAVE_CONFIG_
+@@ -64,7 +64,7 @@ libvnc_la_CPPFLAGS = $(XVNC_CPPFLAGS) -I$(TIGERVNC_SRCDIR)/common -UHAVE_CONFIG_
  	-I$(top_srcdir)/hw/xfree86/os-support \
  	-I$(top_srcdir)/hw/xfree86/os-support/bus \
  	-I$(top_srcdir)/include \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/files/0005-Remove-INITARGS-from-xserver119.patch.patch b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/files/0005-Remove-INITARGS-from-xserver119.patch.patch
deleted file mode 100644
index 2f342c6..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/files/0005-Remove-INITARGS-from-xserver119.patch.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From e4ec992984983ac9107efae1f1cc552007e4229e Mon Sep 17 00:00:00 2001
-From: Vishal Biswas <vshlbiswas@ymail.com>
-Date: Mon, 8 May 2017 11:06:11 +0530
-Subject: [PATCH] Remove INITARGS from xserver119.patch
-
-Upstream-Status: Backport
-
----
- unix/xserver119.patch | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/unix/xserver119.patch b/unix/xserver119.patch
-index 614f104..7adf314 100644
---- a/unix/xserver119.patch
-+++ b/unix/xserver119.patch
-@@ -66,7 +66,7 @@ diff -up xserver/mi/miinitext.c.xserver116-rebased xserver/mi/miinitext.c
-  #include "globals.h"
-  
- +#ifdef TIGERVNC
--+extern void vncExtensionInit(INITARGS);
-++extern void vncExtensionInit(void);
- +#endif
- +
-  /* The following is only a small first step towards run-time
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.8.0.bb b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.8.0.bb
rename to meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb
index 469745f..f3dc899 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb
@@ -15,23 +15,22 @@
 inherit autotools cmake
 B = "${S}"
 
-SRCREV = "4d6e1b8306a8cca8ad5e15ff8201f6ea24459cfd"
+SRCREV = "6f2301d08e64a965ad36b401ec8dc2b24bc47075"
 
-SRC_URI = "git://github.com/TigerVNC/tigervnc.git;branch=1.8-branch \
+SRC_URI = "git://github.com/TigerVNC/tigervnc.git;branch=1.9-branch \
            file://0001-tigervnc-remove-includedir.patch \
            file://0002-do-not-build-tests-sub-directory.patch \
            file://0003-add-missing-dynamic-library-to-FLTK_LIBRARIES.patch \
            file://0004-tigervnc-add-fPIC-option-to-COMPILE_FLAGS.patch \
-           file://0005-Remove-INITARGS-from-xserver119.patch.patch \
 "
 
 # Keep sync with xorg-server in oe-core
 XORG_PN ?= "xorg-server"
-XORG_PV ?= "1.19.3"
+XORG_PV ?= "1.19.6"
 SRC_URI += "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${XORG_PV}.tar.bz2;name=xorg"
 XORG_S = "${WORKDIR}/${XORG_PN}-${XORG_PV}"
-SRC_URI[xorg.md5sum] = "015d2fc4b9f2bfe7a626edb63a62c65e"
-SRC_URI[xorg.sha256sum] = "677a8166e03474719238dfe396ce673c4234735464d6dadf2959b600d20e5a98"
+SRC_URI[xorg.md5sum] = "3e47777ff034a331aed2322b078694a8"
+SRC_URI[xorg.sha256sum] = "a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197"
 
 # It is the directory containing the Xorg source for the
 # machine on which you are building TigerVNC.
diff --git a/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.15.bb b/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.16.bb
similarity index 95%
rename from meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.15.bb
rename to meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.16.bb
index 7ae941a..8d23bd5 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.15.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.16.bb
@@ -17,8 +17,8 @@
            file://ts.conf \
            file://tslib.sh \
 "
-SRC_URI[md5sum] = "9ff36788c9ab76a10b58422227b9629e"
-SRC_URI[sha256sum] = "7ce48807cab655076d71a1ceef3ed0ab8a25df98074981d4a8fd1477ee5f710c"
+SRC_URI[md5sum] = "254a022fc8aa89d164840fe8869c2441"
+SRC_URI[sha256sum] = "c9a54651337a701a66b074c603c313225579995a7910e519bbc7b1dcdab9a755"
 
 UPSTREAM_CHECK_URI = "https://github.com/kergoth/tslib/releases"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_git.bb b/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_git.bb
index 31bcce0..b79a562 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_git.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=83af8811a28727a13f04132cc33b7f58"
 
-DEPENDS = "virtual/libx11 libxext dri2proto"
+DEPENDS = "virtual/libx11 libxext xorgproto"
 
 PV = "1.1.1+git${SRCPV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.7.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.8.bb
similarity index 69%
rename from meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.7.bb
rename to meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.8.bb
index f40dec8..62296b5 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.7.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.8.bb
@@ -11,6 +11,6 @@
 
 DEPENDS += "libice"
 
-SRC_URI[md5sum] = "25dab02f8e40d5b71ce29a07dc901b8c"
-SRC_URI[sha256sum] = "1216af2dee99b318fcf8bf9a259915273bcb37a7f1e7859af4f15d0ebf6f3f0a"
+SRC_URI[md5sum] = "3b9b79fa0f9928161f4bad94273de7ae"
+SRC_URI[sha256sum] = "e6ee213a217265cc76050e4293ea70b98c32dce6505c6421227efbda62ab60c6"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbevd_1.1.4.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbevd_1.1.4.bb
index a6fc9e7..b42c1b9 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbevd_1.1.4.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbevd_1.1.4.bb
@@ -5,7 +5,7 @@
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=208668fa9004709ba22c2b748140956c"
 
-DEPENDS += "libxkbfile"
+DEPENDS += "libxkbfile bison-native"
 
 BBCLASSEXTEND = "native"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.0.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.1.bb
similarity index 60%
rename from meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.0.bb
rename to meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.1.bb
index 85957e0..e50c082 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.1.bb
@@ -5,5 +5,5 @@
 
 DEPENDS += "libxmu"
 
-SRC_URI[md5sum] = "b54c7e3e53b4f332d41ed435433fbda0"
-SRC_URI[sha256sum] = "73827b6bbfc9d27ca287d95a1224c306d7053cd7b8156641698d7dc541ca565b"
+SRC_URI[md5sum] = "96f9423eab4d0641c70848d665737d2e"
+SRC_URI[sha256sum] = "2d23ade7cdbb487996bf77cbb32cbe9bdb34d004748a53de7a4a97660d2217b7"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_330.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_330.bb
index 16f9b78..c2feb81 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_330.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_330.bb
@@ -1,6 +1,6 @@
 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"
+DEPENDS = "libxaw xorgproto libxext libxau libxinerama libxpm ncurses"
 
 LIC_FILES_CHKSUM = "file://xterm.h;beginline=3;endline=31;md5=f02ab9ebda87b770ecf711dbb3784a33"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc_1.4.1.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc_1.4.1.bb
new file mode 100644
index 0000000..b436ef1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc_1.4.1.bb
@@ -0,0 +1,14 @@
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+
+SUMMARY = "X.Org X server -- ARM SOC display driver"
+LICENSE = "MIT-X & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=10ce5de3b111315ea652a5f74ec0c602"
+
+DEPENDS += "virtual/libx11 libdrm xorgproto"
+
+SRCREV = "8bbdb2ae3bb8ef649999a8da33ddbe11a04763b8"
+SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-armsoc"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} += "xserver-xorg-module-exa"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_7.8.0.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_18.0.1.bb
similarity index 65%
rename from meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_7.8.0.bb
rename to meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_18.0.1.bb
index d409a18..969c1a0 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_7.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_18.0.1.bb
@@ -6,18 +6,20 @@
 
 DESCRIPTION = "Open-source X.org graphics driver for ATI Radeon graphics"
 
-DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
-            virtual/libgl xineramaproto libpciaccess"
+DEPENDS += "virtual/libx11 libxvmc drm \
+            virtual/libgl xorgproto libpciaccess"
 
 inherit distro_features_check
 REQUIRED_DISTRO_FEATURES += "opengl"
 
 COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
 
-SRC_URI[md5sum] = "f34d04a755e761e03b459155fa3ddcbb"
-SRC_URI[sha256sum] = "401f5de772928f3dc4ce43a885adb0a47a2f61aa4a9e45d2ab3d184136a9d6fa"
+SRC_URI[md5sum] = "40e7c0a5a69aba3d84e0958f58705ea7"
+SRC_URI[sha256sum] = "72ea3b8127d4550b64f797457f5a7851a541fa4ee2cc3f345b6c1886b81714a0"
 
 EXTRA_OECONF += "--disable-glamor"
 
 RDEPENDS_${PN} += "xserver-xorg-module-exa"
 RRECOMMENDS_${PN} += "linux-firmware-radeon"
+
+FILES_${PN} += "${datadir}/X11"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb
index cd68059..182e18f 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb
@@ -16,6 +16,6 @@
 SRC_URI[sha256sum] = "b663cd8e6364f7c4e2637b9fcab9861d0e3971518c73b00d213f6545a1289422"
 
 PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri', '', d)}"
-PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,drm xf86driproto,xserver-xorg-extension-dri"
+PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,drm xorgproto,xserver-xorg-extension-dri"
 
 RDEPENDS_${PN} = "xserver-xorg-module-exa"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.15.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.15.bb
index 2746821..2b1b87c 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.15.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.15.bb
@@ -6,8 +6,8 @@
 
 DESCRIPTION = "Open-source X.org graphics driver for NVIDIA graphics"
 
-DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
-            virtual/libgl xineramaproto libpciaccess"
+DEPENDS += "virtual/libx11 libxvmc drm xorgproto \
+            virtual/libgl libpciaccess"
 RDEPENDS_${PN} += "xserver-xorg-module-exa"
 
 inherit distro_features_check
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil_1.1.0.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil_1.1.0.bb
index 7d26d14..3e5c31a 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil_1.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/liblbxutil_1.1.0.bb
@@ -3,7 +3,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=b0d5bdc98f7ebab3b6c3791d9bf40907"
 
 SUMMARY = "XFIXES Extension"
-DEPENDS += " xextproto xproto zlib"
+DEPENDS += " xorgproto zlib"
 PE = "1"
 PR = "r11"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.13.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.13.bb
index 8ba5ac3..cb1ffcd 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.13.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.13.bb
@@ -1,6 +1,6 @@
 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"
+DEPENDS += "xorgproto virtual/libx11 libxext libxt libxmu libxpm libxau xmlto-native"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=1c65719d42900bb81b83e8293c20a364"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxpresent_1.0.0.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxpresent_1.0.0.bb
new file mode 100644
index 0000000..4fe9992
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxpresent_1.0.0.bb
@@ -0,0 +1,11 @@
+require recipes-graphics/xorg-lib/xorg-lib-common.inc
+SUMMARY = "X Athena Widget Set"
+DEPENDS += "xorgproto libxfixes libxrandr"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0"
+
+SRC_URI = "http://xorg.freedesktop.org/archive/individual/lib/libXpresent-${PV}.tar.bz2"
+SRC_URI[md5sum] = "edd87ac15bb666081898dd7382fcbff5"
+SRC_URI[sha256sum] = "c11ae015141a9afbe10f4f2b8ee00b11adca6373dc1b9808d7c6c138b2da7b8a"
+
+XORG_PN = "libXpresent"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/fix-buildscripts.patch b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/fix-buildscripts.patch
new file mode 100644
index 0000000..3a50eff
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/fix-buildscripts.patch
@@ -0,0 +1,116 @@
+--- xscreensaver-5.39.orig/configure.in
++++ xscreensaver-5.39/configure.in
+@@ -14,6 +14,9 @@
+ #
+ ###############################################################################
+ 
++includedir=''
++libdir=''
++
+ AH_TOP([
+ /* config.h.in --- xscreensaver, Copyright (c) 1991-2014 Jamie Zawinski.
+  *
+@@ -422,12 +425,12 @@
+ 
+   OBJCC="$CC"
+ 
+-  AC_MSG_CHECKING([whether the compiler works on ANSI C])
+-  AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
+-     AC_MSG_RESULT(yes),
+-     AC_MSG_RESULT(no)
+-     AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.),
+-     AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
++#  AC_MSG_CHECKING([whether the compiler works on ANSI C])
++#  AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
++#     AC_MSG_RESULT(yes),
++#     AC_MSG_RESULT(no)
++#     AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.),
++#     AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
+ 
+   if test -n "$GCC"; then
+     AC_MSG_RESULT(Turning on gcc compiler warnings.)
+--- xscreensaver-5.39.orig/Makefile.in
++++ xscreensaver-5.39/Makefile.in
+@@ -6,7 +6,7 @@
+ VPATH		= @srcdir@
+ 
+ SHELL		= /bin/sh
+-SUBDIRS 	= utils jwxyz hacks/images hacks hacks/glx driver po
++SUBDIRS 	= utils jwxyz hacks/images hacks driver
+ SUBDIRS2	= $(SUBDIRS) OSX android
+ TARFILES	= README README.hacking README.VMS INSTALL \
+ 		  configure configure.in Makefile.in config.h.in \
+--- xscreensaver-5.39.orig/driver/Makefile.in
++++ xscreensaver-5.39/driver/Makefile.in
+@@ -10,7 +10,7 @@
+ top_srcdir	= @top_srcdir@
+ top_builddir	= ..
+ 
+-install_prefix	=
++install_prefix	= ${DESTDIR}
+ prefix		= @prefix@
+ exec_prefix	= @exec_prefix@
+ bindir		= @bindir@
+@@ -221,7 +221,7 @@
+ SCRIPTS_1	= xscreensaver-getimage-file xscreensaver-getimage-video \
+ 		  xscreensaver-text
+ SCRIPTS_OSX	= xscreensaver-getimage-desktop
+-SCRIPTS		= $(SCRIPTS_1) @SCRIPTS_OSX@
++#SCRIPTS		= $(SCRIPTS_1) @SCRIPTS_OSX@
+ 
+ HDRS		= XScreenSaver_ad.h XScreenSaver_Xm_ad.h \
+ 		  xscreensaver.h prefs.h remote.h exec.h \
+--- xscreensaver-5.39.orig/hacks/Makefile.in
++++ xscreensaver-5.39/hacks/Makefile.in
+@@ -10,7 +10,7 @@
+ top_srcdir	= @top_srcdir@
+ top_builddir	= ..
+ 
+-install_prefix	=
++install_prefix	= ${DESTDIR}
+ prefix		= @prefix@
+ exec_prefix	= @exec_prefix@
+ bindir		= @bindir@
+@@ -122,7 +122,7 @@
+ 		  asm6502.c abstractile.c lcdscrub.c hexadrop.c \
+ 		  tessellimage.c delaunay.c recanim.c binaryring.c \
+ 		  webcollage-cocoa.m webcollage-helper-cocoa.m testx11.c
+-SCRIPTS		= vidwhacker webcollage ljlatest
++#SCRIPTS		= vidwhacker webcollage ljlatest
+ 
+ # Programs that are mentioned in XScreenSaver.ad, and that have XML files,
+ # but that are not shipped with xscreensaver itself.
+@@ -163,7 +163,13 @@
+ 		  lcdscrub.o hexadrop.o tessellimage.o delaunay.o recanim.o \
+ 		  binaryring.o testx11.o
+ 
+-EXES		= attraction blitspin bouboule braid decayscreen deco \
++EXES		= fontglide
++JPEG_EXES	= webcollage-helper
++
++RETIRED_EXES	= ant bubbles critical flag forest hyperball hypercube laser \
++		  lightning lisa lissie lmorph rotor sphere spiral t3d vines \
++		  whirlygig worm xsublim juggle testx11 \
++		  attraction blitspin bouboule braid decayscreen deco \
+ 		  drift flame galaxy grav greynetic halo \
+ 		  helix hopalong ifs imsmap julia kaleidescope \
+ 		  maze moire noseguy pedal \
+@@ -179,17 +185,12 @@
+ 		  speedmine vermiculate twang apollonian euler2d \
+ 		  polyominoes thornbird  fluidballs anemone halftone \
+ 		  metaballs eruption popsquares barcode piecewise cloudlife \
+-		  fontglide apple2 xanalogtv pong  wormhole \
++		  apple2 xanalogtv pong  wormhole \
+ 		  pacman fuzzyflakes anemotaxis memscroller substrate \
+ 		  intermomentary fireworkx fiberlamp boxfit interaggregate \
+ 		  celtic cwaves m6502 abstractile lcdscrub hexadrop \
+ 		  tessellimage binaryring \
+ 		  @JPEG_EXES@
+-JPEG_EXES	= webcollage-helper
+-
+-RETIRED_EXES	= ant bubbles critical flag forest hyperball hypercube laser \
+-		  lightning lisa lissie lmorph rotor sphere spiral t3d vines \
+-		  whirlygig worm xsublim juggle testx11
+ 
+ HACK_OBJS_1	= fps.o $(UTILS_BIN)/resources.o $(UTILS_BIN)/visual.o \
+ 		  $(UTILS_BIN)/usleep.o $(UTILS_BIN)/yarandom.o \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/tweak-app-defaults.patch b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/tweak-app-defaults.patch
new file mode 100644
index 0000000..099a0b2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/tweak-app-defaults.patch
@@ -0,0 +1,273 @@
+--- xscreensaver-5.39.orig/driver/XScreenSaver.ad.in
++++ xscreensaver-5.39/driver/XScreenSaver.ad.in
+@@ -29,7 +29,7 @@
+ ! /* (xrdb prevention kludge: whole file)
+ 
+ *mode:			random
+-*timeout:		0:10:00
++*timeout:		0:15:00
+ *cycle:			0:10:00
+ *lockTimeout:		0:00:00
+ *passwdTimeout:		0:00:30
+@@ -38,7 +38,7 @@
+ *dpmsStandby:		2:00:00
+ *dpmsSuspend:		2:00:00
+ *dpmsOff:		4:00:00
+-*grabDesktopImages:	True
++*grabDesktopImages:	False
+ *grabVideoFrames:	False
+ *chooseRandomImages:	@DEFAULT_IMAGES_P@
+ ! This can be a local directory name, or the URL of an RSS or Atom feed.
+@@ -48,11 +48,11 @@
+ *lock:			False
+ *verbose:		False
+ *timestamp:		True
+-*fade:			True
++*fade:			False
+ *unfade:		False
+ *fadeSeconds:		0:00:03
+ *fadeTicks:		20
+-*splash:		True
++*splash:		False
+ *splashDuration:	0:00:05
+ *visualID:		default
+ *captureStderr: 	True
+@@ -158,236 +158,8 @@
+ ! screen savers interactively.
+ !
+ *programs:								      \
+-				maze -root				    \n\
+-@GL_KLUDGE@ GL: 				superquadrics -root			    \n\
+-				attraction -root			    \n\
+-				blitspin -root				    \n\
+-				greynetic -root				    \n\
+-				helix -root				    \n\
+-				hopalong -root				    \n\
+-				imsmap -root				    \n\
+--				noseguy -root				    \n\
+--				pyro -root				    \n\
+-				qix -root				    \n\
+--				rocks -root				    \n\
+-				rorschach -root				    \n\
+-				decayscreen -root			    \n\
+-				flame -root				    \n\
+-				halo -root				    \n\
+-				slidescreen -root			    \n\
+-				pedal -root				    \n\
+-				bouboule -root				    \n\
+--				braid -root				    \n\
+-				coral -root				    \n\
+-				deco -root				    \n\
+-				drift -root				    \n\
+--				fadeplot -root				    \n\
+-				galaxy -root				    \n\
+-				goop -root				    \n\
+-				grav -root				    \n\
+-				ifs -root				    \n\
+-@GL_KLUDGE@ GL: 				jigsaw -root				    \n\
+-				julia -root				    \n\
+--				kaleidescope -root			    \n\
+-@GL_KLUDGE@ GL: 				moebius -root				    \n\
+-				moire -root				    \n\
+-@GL_KLUDGE@ GL: 				morph3d -root				    \n\
+-				mountain -root				    \n\
+-				munch -root				    \n\
+-				penrose -root				    \n\
+-@GL_KLUDGE@ GL: 				pipes -root				    \n\
+-				rd-bomb -root				    \n\
+-@GL_KLUDGE@ GL: 				rubik -root				    \n\
+--				sierpinski -root			    \n\
+-				slip -root				    \n\
+-@GL_KLUDGE@ GL: 				sproingies -root			    \n\
+-				starfish -root				    \n\
+-				strange -root				    \n\
+-				swirl -root				    \n\
+-				triangle -root				    \n\
+-				xjack -root				    \n\
+-				xlyap -root				    \n\
+-@GL_KLUDGE@ GL: 				atlantis -root				    \n\
+-				bsod -root				    \n\
+-@GL_KLUDGE@ GL: 				bubble3d -root				    \n\
+-@GL_KLUDGE@ GL: 				cage -root				    \n\
+--				crystal -root				    \n\
+-				cynosure -root				    \n\
+-				discrete -root				    \n\
+-				distort -root				    \n\
+-				epicycle -root				    \n\
+-				flow -root				    \n\
+-@GL_KLUDGE@ GL: 				glplanet -root				    \n\
+-				interference -root			    \n\
+-				kumppa -root				    \n\
+-@GL_KLUDGE@ GL: 				lament -root				    \n\
+-				moire2 -root				    \n\
+-@GL_KLUDGE@ GL: 				sonar -root				    \n\
+-@GL_KLUDGE@ GL: 				stairs -root				    \n\
+-				truchet -root				    \n\
+--				vidwhacker -root			    \n\
+-				blaster -root				    \n\
+-				bumps -root				    \n\
+-				ccurve -root				    \n\
+-				compass -root				    \n\
+-				deluxe -root				    \n\
+--				demon -root				    \n\
+-@GLE_KLUDGE@ GL: 				extrusion -root				    \n\
+--				loop -root				    \n\
+-				penetrate -root				    \n\
+-				petri -root				    \n\
+-				phosphor -root				    \n\
+-@GL_KLUDGE@ GL: 				pulsar -root				    \n\
+-				ripples -root				    \n\
+-				shadebobs -root				    \n\
+-@GL_KLUDGE@ GL: 				sierpinski3d -root			    \n\
+-				spotlight -root				    \n\
+-				squiral -root				    \n\
+-				wander -root				    \n\
+--				webcollage -root			    \n\
+-				xflame -root				    \n\
+-				xmatrix -root				    \n\
+-@GL_KLUDGE@ GL: 				gflux -root				    \n\
+--				nerverot -root				    \n\
+-				xrayswarm -root				    \n\
+-				xspirograph -root			    \n\
+-@GL_KLUDGE@ GL: 				circuit -root				    \n\
+-@GL_KLUDGE@ GL: 				dangerball -root			    \n\
+-- GL: 				dnalogo -root				    \n\
+-@GL_KLUDGE@ GL: 				engine -root				    \n\
+-@GL_KLUDGE@ GL: 				flipscreen3d -root			    \n\
+-@GL_KLUDGE@ GL: 				gltext -root				    \n\
+-@GL_KLUDGE@ GL: 				menger -root				    \n\
+-@GL_KLUDGE@ GL: 				molecule -root				    \n\
+-				rotzoomer -root				    \n\
+-				speedmine -root				    \n\
+-@GL_KLUDGE@ GL: 				starwars -root				    \n\
+-@GL_KLUDGE@ GL: 				stonerview -root			    \n\
+-				vermiculate -root			    \n\
+-				whirlwindwarp -root			    \n\
+-				zoom -root				    \n\
+-				anemone -root				    \n\
+-				apollonian -root			    \n\
+-@GL_KLUDGE@ GL: 				boxed -root				    \n\
+-@GL_KLUDGE@ GL: 				cubenetic -root				    \n\
+-@GL_KLUDGE@ GL: 				endgame -root				    \n\
+-				euler2d -root				    \n\
+-				fluidballs -root			    \n\
+-@GL_KLUDGE@ GL: 				flurry -root				    \n\
+-- GL: 				glblur -root				    \n\
+-@GL_KLUDGE@ GL: 				glsnake -root				    \n\
+-				halftone -root				    \n\
+-@GL_KLUDGE@ GL: 				juggler3d -root				    \n\
+-@GL_KLUDGE@ GL: 				lavalite -root				    \n\
+--				polyominoes -root			    \n\
+-@GL_KLUDGE@ GL: 				queens -root				    \n\
+-- GL: 				sballs -root				    \n\
+-@GL_KLUDGE@ GL: 				spheremonics -root			    \n\
+--				thornbird -root				    \n\
+-				twang -root				    \n\
+-- GL: 				antspotlight -root			    \n\
+-				apple2 -root				    \n\
+-@GL_KLUDGE@ GL: 				atunnel -root				    \n\
+-				barcode -root				    \n\
+-@GL_KLUDGE@ GL: 				blinkbox -root				    \n\
+-@GL_KLUDGE@ GL: 				blocktube -root				    \n\
+-@GL_KLUDGE@ GL: 				bouncingcow -root			    \n\
+-				cloudlife -root				    \n\
+-@GL_KLUDGE@ GL: 				cubestorm -root				    \n\
+-				eruption -root				    \n\
+-@GL_KLUDGE@ GL: 				flipflop -root				    \n\
+-@GL_KLUDGE@ GL: 				flyingtoasters -root			    \n\
+-				fontglide -root				    \n\
+-@GL_KLUDGE@ GL: 				gleidescope -root			    \n\
+-@GL_KLUDGE@ GL: 				glknots -root				    \n\
+-@GL_KLUDGE@ GL: 				glmatrix -root				    \n\
+-- GL: 				glslideshow -root			    \n\
+-@GL_KLUDGE@ GL: 				hypertorus -root			    \n\
+-- GL: 				jigglypuff -root			    \n\
+-				metaballs -root				    \n\
+-@GL_KLUDGE@ GL: 				mirrorblob -root			    \n\
+-				piecewise -root				    \n\
+-@GL_KLUDGE@ GL: 				polytopes -root				    \n\
+-				pong -root				    \n\
+-				popsquares -root			    \n\
+-@GL_KLUDGE@ GL: 				surfaces -root				    \n\
+-				xanalogtv -root				    \n\
+-				abstractile -root			    \n\
+-				anemotaxis -root			    \n\
+-- GL: 				antinspect -root			    \n\
+-				fireworkx -root				    \n\
+-				fuzzyflakes -root			    \n\
+-				interaggregate -root			    \n\
+-				intermomentary -root			    \n\
+-				memscroller -root			    \n\
+-@GL_KLUDGE@ GL: 				noof -root				    \n\
+-				pacman -root				    \n\
+-@GL_KLUDGE@ GL: 				pinion -root				    \n\
+-@GL_KLUDGE@ GL: 				polyhedra -root				    \n\
+-- GL: 				providence -root			    \n\
+-				substrate -root				    \n\
+-				wormhole -root				    \n\
+-- GL: 				antmaze -root				    \n\
+-@GL_KLUDGE@ GL: 				boing -root				    \n\
+-				boxfit -root				    \n\
+-@GL_KLUDGE@ GL: 				carousel -root				    \n\
+-				celtic -root				    \n\
+-@GL_KLUDGE@ GL: 				crackberg -root				    \n\
+-@GL_KLUDGE@ GL: 				cube21 -root				    \n\
+-				fiberlamp -root				    \n\
+-@GL_KLUDGE@ GL: 				fliptext -root				    \n\
+-@GL_KLUDGE@ GL: 				glhanoi -root				    \n\
+-@GL_KLUDGE@ GL: 				tangram -root				    \n\
+-@GL_KLUDGE@ GL: 				timetunnel -root			    \n\
+-@GL_KLUDGE@ GL: 				glschool -root				    \n\
+-@GL_KLUDGE@ GL: 				topblock -root				    \n\
+-@GL_KLUDGE@ GL: 				cubicgrid -root				    \n\
+-				cwaves -root				    \n\
+-@GL_KLUDGE@ GL: 				gears -root				    \n\
+-@GL_KLUDGE@ GL: 				glcells -root				    \n\
+-@GL_KLUDGE@ GL: 				lockward -root				    \n\
+-				m6502 -root				    \n\
+-@GL_KLUDGE@ GL: 				moebiusgears -root			    \n\
+-@GL_KLUDGE@ GL: 				voronoi -root				    \n\
+-@GL_KLUDGE@ GL: 				hypnowheel -root			    \n\
+-@GL_KLUDGE@ GL: 				klein -root				    \n\
+--				lcdscrub -root				    \n\
+-@GL_KLUDGE@ GL: 				photopile -root				    \n\
+-@GL_KLUDGE@ GL: 				skytentacles -root			    \n\
+-@GL_KLUDGE@ GL: 				rubikblocks -root			    \n\
+-@GL_KLUDGE@ GL: 				companioncube -root			    \n\
+-@GL_KLUDGE@ GL: 				hilbert -root				    \n\
+-@GL_KLUDGE@ GL: 				tronbit -root				    \n\
+-@GL_KLUDGE@ GL: 				geodesic -root				    \n\
+-				hexadrop -root				    \n\
+-@GL_KLUDGE@ GL: 				kaleidocycle -root			    \n\
+-@GL_KLUDGE@ GL: 				quasicrystal -root			    \n\
+-@GL_KLUDGE@ GL: 				unknownpleasures -root			    \n\
+-				binaryring -root			    \n\
+-@GL_KLUDGE@ GL: 				cityflow -root				    \n\
+-@GL_KLUDGE@ GL: 				geodesicgears -root			    \n\
+-@GL_KLUDGE@ GL: 				projectiveplane -root			    \n\
+-@GL_KLUDGE@ GL: 				romanboy -root				    \n\
+-				tessellimage -root			    \n\
+-@GL_KLUDGE@ GL: 				winduprobot -root			    \n\
+-@GL_KLUDGE@ GL: 				splitflap -root				    \n\
+-@GL_KLUDGE@ GL: 				cubestack -root				    \n\
+-@GL_KLUDGE@ GL: 				cubetwist -root				    \n\
+-@GL_KLUDGE@ GL: 				discoball -root				    \n\
+-@GL_KLUDGE@ GL: 				dymaxionmap -root			    \n\
+-@GL_KLUDGE@ GL: 				energystream -root			    \n\
+-@GL_KLUDGE@ GL: 				hexstrut -root				    \n\
+-@GL_KLUDGE@ GL: 				hydrostat -root				    \n\
+-@GL_KLUDGE@ GL: 				raverhoop -root				    \n\
+-@GL_KLUDGE@ GL: 				splodesic -root				    \n\
+-@GL_KLUDGE@ GL: 				unicrud -root				    \n\
+-@GL_KLUDGE@ GL: 				esper -root				    \n\
+-@GL_KLUDGE@ GL: 				vigilance -root				    \n\
+-@GL_KLUDGE@ GL: 				crumbler -root				    \n\
+-@GL_KLUDGE@ GL: 				maze3d -root				    \n\
+-@GL_KLUDGE@ GL: 				peepers -root				    \n\
+-@GL_KLUDGE@ GL: 				razzledazzle -root			    \n
+-
++-				fontglide -root -program "date +'%F %H:%M %z'"				    \n\
++				gifview --window $XSCREENSAVER_WINDOW /usr/share/logo/bosch-black.gif			    \n
+ 
+ 
+ !=============================================================================
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/xscreensaver.service b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/xscreensaver.service
new file mode 100755
index 0000000..17dfe75
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/files/xscreensaver.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Xscreensaver service
+PartOf=xserver-nodm.service
+After=xserver-nodm.service
+
+[Service]
+ExecStart=/usr/bin/xscreensaver
+Environment="DISPLAY=:0"
+User=xuser
+Restart=always
+RestartSec=1
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.39.bb b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.39.bb
new file mode 100644
index 0000000..6ebf3c7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.39.bb
@@ -0,0 +1,29 @@
+SUMMARY = "X screen saver and locker"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://driver/xscreensaver.h;endline=10;md5=e141ab5822fb2d43694e1e47b59fc0df"
+
+SRC_URI = "https://www.jwz.org/${BPN}/${BP}.tar.gz"
+SRC_URI[md5sum] = "a5da62b91271f4e8afcc73d44697364b"
+SRC_URI[sha256sum] = "48ce1880f18b5321182be0c033aeceb5ec5628a1505b9d1ff69dbf06093c2426"
+
+SRC_URI += " \
+    file://xscreensaver.service \
+    file://fix-buildscripts.patch \
+    file://tweak-app-defaults.patch \
+"
+
+DEPENDS = "intltool-native libx11 libxext libxt libxft glib-2.0-native bc-native"
+# These are only needed as part of the stopgap screensaver implementation:
+RDEPENDS_${PN} += "xserver-nodm-init liberation-fonts"
+
+inherit systemd perlnative pkgconfig gettext autotools-brokensep distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+do_install_append() {
+    install -D ${WORKDIR}/xscreensaver.service ${D}${systemd_unitdir}/system/xscreensaver.service
+}
+
+FILES_${PN} += "${datadir}/X11/app-defaults/XScreenSaver"
+SYSTEMD_SERVICE_${PN} = "xscreensaver.service"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh b/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh
deleted file mode 100644
index fa43617..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-. /etc/formfactor/config
-
-if [ "$HAVE_TOUCHSCREEN" = "1" ]; then
-	n=1
-	while [ ! -z $TSLIB_TSDEVICE ] && [ ! -f /etc/pointercal ] && [ $n -le 5 ]
-	do
-	   /usr/bin/xtscal
-	   sleep 1
-	   n=$(($n+1))
-	done
-fi
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/change-cross.patch b/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/change-cross.patch
deleted file mode 100644
index 1da7717..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/change-cross.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Upstream-Status: Pending
-
---- tmp/main.c.orig	2007-01-02 15:39:54.000000000 +0000
-+++ tmp/main.c	2007-01-02 15:39:54.000000000 +0000
-@@ -131,9 +131,10 @@
- {
-   XRenderFillRectangles (dpy, PictOpSrc, pict, &rect_color, rectangles, 2);
- 
--  XFillArc (dpy, crosshair_w, crosshair_gc, (CROSSHAIR_SIZE / 2) - (WIDTH / 2) - 1, 
--	    (CROSSHAIR_SIZE / 2) - (WIDTH / 2) - 1,
--	    WIDTH + 1, WIDTH + 1, 0, 360 * 64);
-+  XFillRectangle (dpy, crosshair_w, crosshair_gc,
-+		  (CROSSHAIR_SIZE / 2) - (WIDTH / 2),
-+		  (CROSSHAIR_SIZE / 2) - (WIDTH / 2),
-+		  WIDTH, WIDTH);
- }
- 
- void
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/cleanup.patch b/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/cleanup.patch
deleted file mode 100644
index f7b0854..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/cleanup.patch
+++ /dev/null
@@ -1,621 +0,0 @@
----
- Makefile.am  |    9 --
- configure.ac |    3 
- gpe-dist.am  |   12 ---
- h3600_ts.h   |  216 -----------------------------------------------------------
- main.c       |  210 ++-------------------------------------------------------
- xtscal.in    |   19 -----
- 6 files changed, 14 insertions(+), 455 deletions(-)
-
-Upstream-Status: Pending
-
-Index: xtscal-0.6.3/xtscal.in
-===================================================================
---- xtscal-0.6.3.orig/xtscal.in	2004-09-10 20:10:36.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,19 +0,0 @@
--#!/bin/sh
--
--module_id() {
--    # Get model name
--    echo `grep "^Hardware" /proc/cpuinfo | sed -e "s/.*: *//" | tr a-z A-Z`
--}
--
--case `module_id` in
--	"HP IPAQ H3100" | "HP IPAQ H3800" )
--		ARGS="-rotate 90" ;;
--	"HP IPAQ H3600" | "HP IPAQ H3700" | "HP IPAQ H3900" | *COLLIE | *POODLE)
--		ARGS="-rotate 270" ;;
--	# H2200: works without rotation
--esac
--
--# the things we do for autoconf
--prefix=@prefix@
--exec_prefix=@exec_prefix@
--exec @libexecdir@/xtscal.bin $ARGS $*
-Index: xtscal-0.6.3/main.c
-===================================================================
---- xtscal-0.6.3.orig/main.c	2007-07-01 01:12:52.000000000 +0100
-+++ xtscal-0.6.3/main.c	2007-07-01 01:12:55.000000000 +0100
-@@ -22,12 +22,10 @@
- #include <X11/Xlib.h>
- 
- #include <X11/extensions/Xrender.h>
--#include <X11/extensions/Xrandr.h>
- #include <X11/Xft/Xft.h>
- #include <X11/extensions/xcalibrate.h>
- #include <X11/keysym.h>
- 
--#include "h3600_ts.h"
- #include "calibrate.h"
- 
- Display *dpy;
-@@ -45,15 +43,11 @@ XftColor xftcol;
- XftDraw *xftdraw;
- XftFont *xftfont;
- int screen_x, screen_y;
--int ts_fd;
- int samples;
- Pixmap bg_pixmap;
- int flag_debug;
--int rotation = 0;
- int error_base, event_base;
- 
--int using_xcalibrate;
--
- int moving;
- 
- #define CROSSHAIR_SIZE	25
-@@ -63,7 +57,6 @@ int moving;
- #define ENOUGH 5
- #define MAX_SAMPLES 40
- 
--#define RAW_DEVICE "/dev/h3600_tsraw"
- #define FONTNAME "sans-10"
- 
- struct point 
-@@ -287,12 +280,8 @@ sort_by_y (const void* a, const void *b)
- void
- set_calibration (calibration *cal)
- {
--  TS_CAL tc;
--  int xtrans, ytrans, xscale, yscale, xyscale, yxscale;
-   calibration ocal = *cal;
- 
--  if (using_xcalibrate)
--    {
-       FILE *fp;
-       if (flag_debug)
- 	printf ("constants are: %d %d %d %d %d %d %d\n", cal->a[1], cal->a[2], cal->a[0], cal->a[4], cal->a[5], cal->a[3], cal->a[6]);
-@@ -304,29 +293,6 @@ set_calibration (calibration *cal)
- 	}
-       fprintf (fp, "%d %d %d %d %d %d %d\n", cal->a[1], cal->a[2], cal->a[0], cal->a[4], cal->a[5], cal->a[3], cal->a[6]);
-       fclose (fp); 
--      return;
--    }
--
--  xtrans = cal->a[0] / cal->a[6];
--  ytrans = cal->a[3] / cal->a[6];
--  xscale = cal->a[1] * 256 / cal->a[6];
--  yscale = cal->a[5] * 256 / cal->a[6];
--  xyscale = cal->a[2] * 256 / cal->a[6];
--  yxscale = cal->a[4] * 256 / cal->a[6];
--  
--  tc.xtrans = xtrans;
--  tc.ytrans = ytrans;
--  tc.xscale = xscale;
--  tc.yscale = yscale;
--  tc.xyswap = 0;
--
--  printf ("%d %d %d %d %d\n", tc.xscale, tc.xtrans, tc.yscale, tc.ytrans, tc.xyswap);
--
--  if (ioctl (ts_fd, TS_SET_CAL, (void *)&tc) != 0)
--    {
--      perror ("TS_SET_CAL");
--      exit (1);
--    }
- }
- 
- void
-@@ -398,80 +364,13 @@ handle_ts_event (int x, int y, int press
- }
- 
- void
--read_ts (void)
--{
--  TS_EVENT ts_ev;
--  int r;
--
--  r = read (ts_fd, &ts_ev, sizeof (ts_ev));
--  if (r == sizeof (ts_ev))
--    handle_ts_event (ts_ev.x, ts_ev.y, ts_ev.pressure);
--}
--
--void
--do_cal (char **args)
--{
--  TS_CAL tc;
--
--  tc.xscale = atoi (args[0]);
--  tc.xtrans = atoi (args[1]);
--  tc.yscale = atoi (args[2]);
--  tc.ytrans = atoi (args[3]);
--  tc.xyswap = atoi (args[4]);
--
--  if (flag_debug)
--    fprintf (stderr, "setting: %d %d %d %d %d\n", 
--	     tc.xtrans, tc.ytrans, tc.xscale, tc.yscale, tc.xyswap);
--    
--  if (ioctl (ts_fd, TS_SET_CAL, (void *)&tc) != 0)
--    {
--      perror ("TS_SET_CAL");
--      exit (1);
--    }
--  
--  exit (0);
--}
--
--void
--show_cal (void)
--{
--  TS_CAL tc;
--
--  if (ioctl (ts_fd, TS_GET_CAL, (void *)&tc) != 0)
--    {
--      perror ("TS_GET_CAL");
--      exit (1);
--    }
--
--  printf ("%d %d %d %d %d\n", tc.xscale, tc.xtrans, tc.yscale, tc.ytrans, tc.xyswap);
--}
--
--void
- usage (const char *name)
- {
--  fprintf (stderr, "usage: %s -view\n", name);
--  fprintf (stderr, "       %s [-rotate <0 | 90 | 180 | 270>]\n", name);
--  fprintf (stderr, "       %s -cal <xs> <xt> <ys> <yt> <xyswap>\n", name);
--
-+  fprintf (stderr, "usage: %s [-debug]\n", name);
-   exit (1);
- }
- 
- int
--xrr_supported (void)
--{
--  int xrr_event_base, xrr_error_base;
--  int xrr_major, xrr_minor;
--
--  if (XRRQueryExtension (dpy, &xrr_event_base, &xrr_error_base) == False
--      || XRRQueryVersion (dpy, &xrr_major, &xrr_minor) == 0
--      || xrr_major != 1
--      || xrr_minor < 1)
--    return 0;
--
--  return 1;
--}
--
--int
- main (int argc, char *argv[])
- {
-   XSetWindowAttributes attributes;
-@@ -480,31 +379,11 @@ main (int argc, char *argv[])
-   int max_fd;
-   GC bg_gc;
-   int i;
--  int have_xrandr;
- 
-   for (i = 1; i < argc; i++)
-     {
--      if (!strcmp (argv[i], "-view"))
--	{
--	  show_cal ();
--	  exit (0);
--	}
--      else if (!strcmp (argv[i], "-debug"))
-+      if (!strcmp (argv[i], "-debug"))
- 	flag_debug = 1;
--      else if (!strcmp (argv[i], "-cal"))
--	{
--	  if (argc > (i + 5))
--	    do_cal (argv + i + 1);
--	  else
--	    usage (argv[0]);
--	}
--      else if (!strcmp (argv[i], "-rotate"))
--	{
--	  if (argc > (i + 1))
--	    rotation = atoi (argv[++i]);
--	  else
--	    usage (argv[0]);
--	}
-       else
- 	usage (argv[0]);
-     }
-@@ -531,48 +410,11 @@ main (int argc, char *argv[])
- 	  fprintf (stderr, "failed to set raw mode: error %d\n", r);
- 	  exit (1);
- 	}
--
--      using_xcalibrate = 1;
--    }
--
--  have_xrandr = xrr_supported ();
--  if (have_xrandr)
--    {
--      XRRScreenConfiguration *rr_screen;
--      Rotation current_rotation;
--
--      if (flag_debug)
--	fprintf (stderr, "XRANDR is supported\n");
--
--      rr_screen = XRRGetScreenInfo (dpy, RootWindow (dpy, screen));
--
--      XRRRotations (dpy, screen, &current_rotation);
--
--      XRRFreeScreenConfigInfo (rr_screen);
--
--      if (flag_debug)
--	fprintf (stderr, "Current RANDR rotation is %d\n", current_rotation);
--
--      switch (current_rotation)
--	{
--	case RR_Rotate_270:
--	  rotation += 90;
--	case RR_Rotate_180:
--	  rotation += 90;
--	case RR_Rotate_90:
--	  rotation += 90;
--	  rotation %= 360;
--	case RR_Rotate_0:
--	  break;
--	default:
--	  fprintf (stderr, "Unknown RANDR rotation: %d\n", current_rotation);
--	  break;
--	}
-     }
-   else
-     {
--      if (flag_debug)
--	fprintf (stderr, "XRANDR not supported\n");
-+      perror ("XCALIBRATE extension missing");
-+      exit (1);
-     }
- 
-   attributes.override_redirect = flag_debug ? False : True;
-@@ -666,45 +508,17 @@ main (int argc, char *argv[])
- 
-   for (i = 0; i < NR_POINTS; i++)
-     {
--      switch (rotation)
--	{
--	case 0:
--	  cal.xfb[i] = cal.xscr[i];
--	  cal.yfb[i] = cal.yscr[i];
--	  break;
--	case 90:
--	  cal.xfb[i] = cal.yscr[i];
--	  cal.yfb[i] = screen_x - cal.xscr[i];
--	  break;
--	case 180:
--	  cal.xfb[i] = screen_x - cal.xscr[i];
--	  cal.yfb[i] = screen_y - cal.yscr[i];
--	  break;
--	case 270:
--	  cal.xfb[i] = screen_y - cal.yscr[i];
--	  cal.yfb[i] = cal.xscr[i];
--	  break;
--	}
-+      cal.xfb[i] = cal.xscr[i];
-+      cal.yfb[i] = cal.yscr[i];
-+      XCalibrateScreenToCoord (dpy, &cal.xfb[i], &cal.yfb[i]);
- 
-       if (flag_debug)
--	printf ("rotation %d: (%d,%d) -> (%d,%d)\n", rotation, 
-+	printf ("rotation conversion: (%d,%d) -> (%d,%d)\n",
- 		cal.xscr[i], cal.yscr[i], cal.xfb[i], cal.yfb[i]);
-     }
- 
-   next_event ();
- 
--  if (!using_xcalibrate)
--    {
--      ts_fd = open (RAW_DEVICE, O_RDONLY);
--      if (ts_fd < 0)
--	{
--	  perror (RAW_DEVICE);
--	  exit (1);
--	}
--    }
--
--  max_fd = (xfd > ts_fd) ? xfd : ts_fd;
--
-   for (;;)
-     {
-       fd_set fds;
-@@ -713,12 +527,8 @@ main (int argc, char *argv[])
- 
-       FD_ZERO (&fds);
-       FD_SET (xfd, &fds);
--      if (ts_fd != -1)
--	FD_SET (ts_fd, &fds);
- 
--      select (max_fd + 1, &fds, NULL, NULL, NULL);
--      
--      if (ts_fd != -1 && FD_ISSET (ts_fd, &fds))
--	read_ts ();
-+      select (xfd + 1, &fds, NULL, NULL, NULL);
-     }
- }
-+
-Index: xtscal-0.6.3/configure.ac
-===================================================================
---- xtscal-0.6.3.orig/configure.ac	2004-09-10 20:11:12.000000000 +0100
-+++ xtscal-0.6.3/configure.ac	2007-07-01 01:12:55.000000000 +0100
-@@ -9,8 +9,7 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2])
- # Checks for programs.
- AC_PROG_CC
- 
--PKG_CHECK_MODULES(XTSCAL, x11 xft xext xrandr xcalibrate)
-+PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate)
- 
- AC_CONFIG_FILES([Makefile])
--AC_CONFIG_FILES([xtscal])
- AC_OUTPUT
-Index: xtscal-0.6.3/gpe-dist.am
-===================================================================
---- xtscal-0.6.3.orig/gpe-dist.am	2004-06-02 23:07:13.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,12 +0,0 @@
--CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_])
--
--dist-upload: dist
--	scp $(PACKAGE)-$(VERSION).tar.bz2 $(USER)@handhelds.org:/home/ftp/pub/projects/gpe/source/
--
--tag:
--	cvs tag $(CVSTAG)
--
--retag:
--	cvs tag -F $(CVSTAG)
--
--source: tag dist-upload
-Index: xtscal-0.6.3/h3600_ts.h
-===================================================================
---- xtscal-0.6.3.orig/h3600_ts.h	2003-07-05 17:27:10.000000000 +0100
-+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
-@@ -1,216 +0,0 @@
--/*
--*
--* Driver for the H3600 Touch Screen and other Atmel controlled devices.
--*
--* Copyright 2000 Compaq Computer Corporation.
--*
--* Use consistent with the GNU GPL is permitted,
--* provided that this copyright notice is
--* preserved in its entirety in all copies and derived works.
--*
--* COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED,
--* AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS
--* FITNESS FOR ANY PARTICULAR PURPOSE.
--*
--* Author: Charles Flynn.
--*
--*/
--
--
--#ifndef __H3600_TS_H__
--#define __H3600_TS_H__
--
--#include <linux/ioctl.h>
--
--enum h3600_ts_minor_devices {
--	TS_MINOR    = 0,
--	TSRAW_MINOR = 1,
--	KEY_MINOR   = 2
--};
--
--typedef struct h3600_ts_calibration {
--        int xscale;
--        int xtrans;
--        int yscale;
--        int ytrans;
--        int xyswap;
--} TS_CAL;
--
--typedef struct h3600_ts_event {
--        unsigned short pressure;
--        unsigned short x;
--        unsigned short y;
--        unsigned short pad;
--} TS_EVENT;
--
--/* Deprecated - do not use */
--typedef struct h3600_ts_return {
--        unsigned short pressure;
--        unsigned short x;
--        unsigned short y;
--        unsigned short pad;
--} TS_RET;
--
--enum power_button_mode {
--   PBM_SUSPEND           = 0,
--   PBM_GENERATE_KEYPRESS = 1
--};
--
--
--/* ++++++++++++++ +++++++++++++++++++++++++++++++++++++ */
--
--typedef struct therm_dev {
--	short data;
--} THERM_DEV;
--
--#define H3600_BATT_CHEM_ALKALINE        0x01
--#define H3600_BATT_CHEM_NICD            0x02
--#define H3600_BATT_CHEM_NIMH            0x03
--#define H3600_BATT_CHEM_LION            0x04
--#define H3600_BATT_CHEM_LIPOLY          0x05
--#define H3600_BATT_CHEM_NOT_INSTALLED   0x06
--#define H3600_BATT_CHEM_UNKNOWN         0xff
--
--/* These should match the apm_bios.h definitions */
--#define H3600_AC_STATUS_AC_OFFLINE	0x00
--#define H3600_AC_STATUS_AC_ONLINE	0x01
--#define H3600_AC_STATUS_AC_BACKUP	0x02   /* What does this mean? */
--#define H3600_AC_STATUS_AC_UNKNOWN	0xff
--
--/* These bitfields are rarely "or'd" together */
--#define H3600_BATT_STATUS_HIGH		0x01
--#define H3600_BATT_STATUS_LOW		0x02
--#define H3600_BATT_STATUS_CRITICAL	0x04
--#define H3600_BATT_STATUS_CHARGING	0x08
--#define H3600_BATT_STATUS_CHARGE_MAIN   0x10
--#define H3600_BATT_STATUS_DEAD          0x20   /* Battery will not charge */
--#define H3600_BATT_NOT_INSTALLED        0x20   /* For expansion pack batteries */
--#define H3600_BATT_STATUS_FULL          0x40   /* Battery fully charged (and connected to AC) */
--#define H3600_BATT_STATUS_NOBATT	0x80
--#define H3600_BATT_STATUS_UNKNOWN	0xff
--
--struct battery_data {
--	unsigned char  chemistry;
--	unsigned char  status;
--	unsigned short voltage;    /* Voltage for battery #0; unknown for battery #1 */
--	unsigned short percentage; /* Percentage of full charge */
--	unsigned short life;       /* Life remaining in minutes */
--};
--
--struct h3600_battery {
--        unsigned char       ac_status;
--	unsigned char       battery_count;  /* How many batteries we have */
--	struct battery_data battery[2];
--};
--
--/* -------- EEPROM and SPI Interfaces ---------------*/
--
--#define EEPROM_RD_BUFSIZ 6	/* EEPROM reads are 16 bits */
--#define EEPROM_WR_BUFSIZ 5	/* Allow room for 8bit 'addr' field in buffer*/ 
--#define SPI_RD_BUFSIZ	 16	/* SPI reads are 8 bits */
--#define SPI_WR_BUFSIZ	 7
--
--/* The EEPROM is where internal programs are stored on the Amtel.
--   You probably don't want to read or write these values */
--
--typedef struct h3600_eeprom_read_request {
--	unsigned char addr;    /* 8bit Address Offset 0-255 */
--	unsigned char len;     /* Number of 16bit words to read 0-128  */
--	unsigned short buff[EEPROM_RD_BUFSIZ];
--} EEPROM_READ;
--
--typedef struct h3600_eeprom_write_request {
--	unsigned char len;	/* used only to compute the number of bytes to send */
--	unsigned char addr;    /* 0-128  */
--	unsigned short buff[EEPROM_WR_BUFSIZ];
--} EEPROM_WRITE;
--
--/* The SPI bus connects to EEPROMs located on sleeves plugged into
--   the iPAQ.  You may want to read these values  */
--
--typedef struct h3600_spi_read_request {
--	unsigned short addr;    /* 16bit Address Offset 0-128 */
--	unsigned char len;      /* Number of bytes to read */
--	unsigned char buff[SPI_RD_BUFSIZ];
--} SPI_READ;
--
--#define SPI_READ_STATUS_BYTE  0xffff   /* Use this address to read the status byte */
--
--typedef struct h3600_spi_write_request {
--	unsigned short len;	/* used only to compute the number of bytes to send */
--	unsigned short addr;	/* this 16bit address accesses a single byte */
--	unsigned char  buff[SPI_WR_BUFSIZ];
--} SPI_WRITE;
--
--
--/* -------- end of EEPROM and SPI Interfaces ---------------*/
--
--/* User space structures for IOCTL calls */
--
--typedef struct h3600_ts_version {
--	unsigned char host_version[8];	/* ascii "x.yy" */
--	unsigned char pack_version[8];	/* ascii "x.yy" */
--	unsigned char boot_type;		/* TODO ?? */
--} VER_RET;
--
--typedef struct h3600_ts_led {
--        unsigned char OffOnBlink;       /* 0=off 1=on 2=Blink */
--        unsigned char TotalTime;        /* Units of 5 seconds */
--        unsigned char OnTime;           /* units of 100m/s */
--        unsigned char OffTime;          /* units of 100m/s */
--} LED_IN;
--
--enum flite_mode {
--        FLITE_MODE1 = 1,
--	FLITE_AUTO_MODE   = 1,     /* for reference only */
--	FLITE_MANUAL_MODE = 2,     /* Use this normally? */
--	FLITE_GET_LIGHT_SENSOR = 3 /* Returns light reading in "brightness" field */
--};
--enum flite_pwr {
--        FLITE_PWR_OFF = 0,
--        FLITE_PWR_ON  = 1
--};
--
--typedef struct h3600_ts_flite {
--        unsigned char mode;
--        unsigned char pwr;
--        unsigned char brightness;
--} FLITE_IN;
--
--/*************************** Updated "universal" structures *******************/
--
--/* Sets backlight for both H3100 and H3600 models - technically "frontlight" for H3600 */
--struct h3600_ts_backlight {
--	enum flite_pwr power;          /* 0 = off, 1 = on */
--	unsigned char  brightness;     /* 0 - 255         */
--};
--
--struct h3600_ts_contrast {            /* Only useful on H3100 model */
--	unsigned char contrast;       /* 0 - 255 */
--};
--
--/* IOCTL cmds  user or kernel space */
--
--/* Use 'f' as magic number */
--#define IOC_H3600_TS_MAGIC  'f'
--
--/* TODO: Some of these IOWR values are just plain wrong */
--#define GET_VERSION		_IOR(IOC_H3600_TS_MAGIC,  1, struct h3600_ts_version )
--#define READ_EEPROM		_IOWR(IOC_H3600_TS_MAGIC, 2, struct h3600_eeprom_read_request)
--#define WRITE_EEPROM		_IOWR(IOC_H3600_TS_MAGIC, 3, struct h3600_eeprom_write_request)
--#define GET_THERMAL		_IOR(IOC_H3600_TS_MAGIC,  4, struct therm_dev)
--#define LED_ON			_IOW(IOC_H3600_TS_MAGIC,  5, struct h3600_ts_led)
--#define GET_BATTERY_STATUS	_IOR(IOC_H3600_TS_MAGIC,  6, struct h3600_battery)
--#define FLITE_ON		_IOW(IOC_H3600_TS_MAGIC,  7, struct h3600_ts_flite)
--#define READ_SPI		_IOWR(IOC_H3600_TS_MAGIC, 8, struct h3600_spi_read_request)
--#define WRITE_SPI		_IOWR(IOC_H3600_TS_MAGIC, 9, struct h3600_spi_write_request)
--#define TS_GET_CAL		_IOR(IOC_H3600_TS_MAGIC, 10, struct h3600_ts_calibration)
--#define TS_SET_CAL		_IOW(IOC_H3600_TS_MAGIC, 11, struct h3600_ts_calibration)
--
--/* New IOCTL interfaces - defined to be more user friendly */
--#define TS_GET_BACKLIGHT        _IOR(IOC_H3600_TS_MAGIC, 20, struct h3600_ts_backlight)
--#define TS_SET_BACKLIGHT        _IOW(IOC_H3600_TS_MAGIC, 20, struct h3600_ts_backlight)
--#define TS_GET_CONTRAST         _IOR(IOC_H3600_TS_MAGIC, 21, struct h3600_ts_contrast)
--#define TS_SET_CONTRAST         _IOW(IOC_H3600_TS_MAGIC, 21, struct h3600_ts_contrast)
--
--#endif
-Index: xtscal-0.6.3/Makefile.am
-===================================================================
---- xtscal-0.6.3.orig/Makefile.am	2004-06-02 23:07:13.000000000 +0100
-+++ xtscal-0.6.3/Makefile.am	2007-07-02 12:51:02.000000000 +0100
-@@ -1,11 +1,8 @@
--libexec_PROGRAMS = xtscal.bin
--bin_SCRIPTS = xtscal
-+bin_PROGRAMS = xtscal
- 
--xtscal_bin_SOURCES = main.c calibrate.c calibrate.h h3600_ts.h
-+xtscal_SOURCES = main.c calibrate.c calibrate.h
- 
--xtscal_bin_LDADD = @XTSCAL_LIBS@
-+xtscal_LDADD = @XTSCAL_LIBS@
- 
- INCLUDES = @XTSCAL_CFLAGS@ -DNR_POINTS=5
- 
--include gpe-dist.am
--
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch b/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch
deleted file mode 100644
index 3e4533f..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-after gcc linking has changed, all the libraries must be explicitely specified 
-This patch avoids this linking error:
-
-| ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux  -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o xtscal main.o calibrate.o -lX11 -lXft -lXext -lXcalibrate^M
-| /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: ^?: invalid DSO for symbol `XRenderChangePicture' definition^M
-| /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so.1: could not read symbols: Bad value^M
-| collect2: ld returned 1 exit status^M
-| make: *** [xtscal] Error 1
-
-Nitin A Kamble <nitin.a.kamble@intel.com>
-Date: 2011/01/11
-
-Upstream-Status: Pending
-
-Index: xtscal-0.6.3/configure.ac
-===================================================================
---- xtscal-0.6.3.orig/configure.ac
-+++ xtscal-0.6.3/configure.ac
-@@ -9,7 +9,7 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2])
- # Checks for programs.
- AC_PROG_CC
- 
--PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate)
-+PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate xrender)
- 
- AC_CONFIG_FILES([Makefile])
- AC_OUTPUT
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal_0.6.3.bb b/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal_0.6.3.bb
deleted file mode 100644
index 4bfddf0..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xtscal/xtscal_0.6.3.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Touchscreen calibration utility"
-
-DESCRIPTION = "Basic touchscreen calibration utility"
-
-HOMEPAGE = "http://gpe.linuxtogo.org"
-BUGTRACKER = "http://bugs.linuxtogo.org"
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-                    file://main.c;endline=10;md5=8721bcb08ae9f24e5fe4c82941873c87"
-
-SECTION = "x11/base"
-
-DEPENDS = "virtual/libx11 libxft libxcalibrate"
-
-PR = "r13"
-
-SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2 \
-           file://change-cross.patch \
-           file://cleanup.patch \
-           file://dso_linking_change_build_fix.patch \
-           file://30xTs_Calibrate.sh"
-
-SRC_URI[md5sum] = "9bcab80b474d5454477d1ca166a68c34"
-SRC_URI[sha256sum] = "27b9dc2203de9b1706ca39fa6ca80ecab8807909ec901c4a345b8e41178800a1"
-
-inherit autotools pkgconfig distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-do_install_append() {
-    install -d ${D}${sysconfdir}/X11/Xsession.d/
-    install -m 0755 ${WORKDIR}/30xTs_Calibrate.sh ${D}${sysconfdir}/X11/Xsession.d/
-}
diff --git a/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb b/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
new file mode 100644
index 0000000..fd0653a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Inspect and manipulate eBPF programs and maps"
+DESCRIPTION = "bpftool is a kernel tool for inspection and simple manipulation \
+of eBPF programs and maps."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+DEPENDS = "binutils elfutils"
+PROVIDES = "virtual/bpftool"
+
+inherit bash-completion kernelsrc kernel-arch
+
+do_populate_lic[depends] += "virtual/kernel:do_patch"
+
+EXTRA_OEMAKE = "-C ${S}/tools/bpf/bpftool O=${B} CROSS=${TARGET_PREFIX} CC="${CC}" LD="${LD}" AR=${AR} ARCH=${ARCH}"
+
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
+
+do_compile() {
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake DESTDIR=${D} install
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+python do_package_prepend() {
+    d.setVar('PKGV', d.getVar("KERNEL_VERSION", True).split("-")[0])
+}
+
+B = "${WORKDIR}/${BPN}-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/broadcom-bt-firmware/broadcom-bt-firmware_git.bb b/meta-openembedded/meta-oe/recipes-kernel/broadcom-bt-firmware/broadcom-bt-firmware_git.bb
new file mode 100644
index 0000000..8c474ec
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/broadcom-bt-firmware/broadcom-bt-firmware_git.bb
@@ -0,0 +1,76 @@
+# Copyright (C) 2018 Krzysztof Kozlowski <krzk@kernel.org>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Broadcom Bluetooth firmware files"
+DESCRIPTION = "Firmware for Broadcom Bluetooth devices. Note that in case of BT+WiFi devices, separate WiFi firmware might be needed."
+HOMEPAGE = "https://github.com/winterheart/broadcom-bt-firmware"
+
+LICENSE = "Firmware-Broadcom-WIDCOMM"
+NO_GENERIC_LICENSE[Firmware-Broadcom-WIDCOMM] = "LICENSE.broadcom_bcm20702"
+
+LIC_FILES_CHKSUM = "file://LICENSE.broadcom_bcm20702;md5=c0d5ea0502b00df74173d0f8a48b619d"
+SRC_URI = "git://github.com/winterheart/broadcom-bt-firmware.git"
+SRCREV = "c0bd928b8ae5754b6077c99afe6ef5c949a58f32"
+PE = "1"
+PV = "0.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+inherit allarch
+
+CLEANBROKEN = "1"
+
+do_compile() {
+    :
+}
+
+do_install() {
+    install -d ${D}${nonarch_base_libdir}/firmware/brcm/
+    cp brcm/*.hcd ${D}${nonarch_base_libdir}/firmware/brcm/
+
+    # For license package:
+    install -m 0644 LICENSE.broadcom_bcm20702 ${D}${nonarch_base_libdir}/firmware/brcm/
+
+    # For main package:
+    install -m 0644 DEVICES.md ${D}${nonarch_base_libdir}/firmware/brcm/
+}
+
+PACKAGES =+ " \
+    ${PN}-bcm20702a1 \
+    ${PN}-bcm20702b0 \
+    ${PN}-bcm20703a1 \
+    ${PN}-bcm43142a0 \
+    ${PN}-bcm4335c0 \
+    ${PN}-bcm4350c5 \
+    ${PN}-bcm4356a2 \
+    ${PN}-bcm4371c2 \
+    ${PN}-license \
+"
+
+RDEPENDS_${PN}-bcm20702a1 = "${PN}-license"
+RDEPENDS_${PN}-bcm20702b0 = "${PN}-license"
+RDEPENDS_${PN}-bcm20703a1 = "${PN}-license"
+RDEPENDS_${PN}-bcm43142a0 = "${PN}-license"
+RDEPENDS_${PN}-bcm4335c0 = "${PN}-license"
+RDEPENDS_${PN}-bcm4350c5 = "${PN}-license"
+RDEPENDS_${PN}-bcm4356a2 = "${PN}-license"
+RDEPENDS_${PN}-bcm4371c2 = "${PN}-license"
+
+FILES_${PN}-bcm20702a1 = "${nonarch_base_libdir}/firmware/brcm/BCM20702A1*hcd"
+FILES_${PN}-bcm20702b0 = "${nonarch_base_libdir}/firmware/brcm/BCM20702B0*hcd"
+FILES_${PN}-bcm20703a1 = "${nonarch_base_libdir}/firmware/brcm/BCM20703A1*hcd"
+FILES_${PN}-bcm43142a0 = "${nonarch_base_libdir}/firmware/brcm/BCM43142A0*hcd"
+FILES_${PN}-bcm4335c0 = "${nonarch_base_libdir}/firmware/brcm/BCM4335C0*hcd"
+FILES_${PN}-bcm4350c5 = "${nonarch_base_libdir}/firmware/brcm/BCM4350C5*hcd"
+FILES_${PN}-bcm4356a2 = "${nonarch_base_libdir}/firmware/brcm/BCM4356A2*hcd"
+FILES_${PN}-bcm4371c2 = "${nonarch_base_libdir}/firmware/brcm/BCM4371C2*hcd"
+FILES_${PN}-license += "${nonarch_base_libdir}/firmware/brcm/LICENSE.broadcom_bcm20702"
+
+FILES_${PN} += "${nonarch_base_libdir}/firmware/brcm/*"
+RDEPENDS_${PN} += "${PN}-license"
+
+# Make broadcom-bt-firmware depend on all of the split-out packages.
+python populate_packages_prepend () {
+    firmware_pkgs = oe.utils.packages_filter_out_system(d)
+    d.appendVar('RDEPENDS_broadcom-bt-firmware', ' ' + ' '.join(firmware_pkgs))
+}
diff --git a/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb b/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
index 4abd273..4544f5b 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
@@ -2,7 +2,7 @@
 DESCRIPTION = "cpupower is a collection of tools to examine and tune power \
 saving related features of your processor."
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
 DEPENDS = "pciutils gettext-native"
 PROVIDES = "virtual/cpupower"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.0.bb b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.4.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.0.bb
rename to meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.4.bb
index 9bea48e..c72b1a3 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.4.bb
@@ -25,12 +25,14 @@
            file://0002-crash-fix-build-error-unknown-type-name-gdb_fpregset.patch \
            file://0003-crash-detect-the-sysroot-s-glibc-header-file.patch \
            "
-SRC_URI[md5sum] = "48899de3118e04cfa40a2364f5618193"
-SRC_URI[sha256sum] = "5d076e1fefb41aa178ad3e1cef6511670efc47de5cb04d4af9bdd4e8f2f18cbc"
+SRC_URI[md5sum] = "4f66eb0e9a82ff83de06ac2b37501f5c"
+SRC_URI[sha256sum] = "85ca2e93f1ee628ef2499ab9c78623f8b04500bdf7378c09de19283f6a7a698f"
 
 SRC_URI[gdb.md5sum] = "a9836707337e5f7bf76a009a8904f470"
 SRC_URI[gdb.sha256sum] = "8070389a5dcc104eb0be483d582729f98ed4d761ad19cedd3f17b5d2502faa36"
 
+UPSTREAM_CHECK_URI = "https://github.com/crash-utility/crash/releases"
+
 inherit gettext
 
 BBCLASSEXTEND = "native cross"
@@ -113,3 +115,6 @@
 # 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"
+
+# http://errors.yoctoproject.org/Errors/Details/186964/
+EXCLUDE_FROM_WORLD_libc-musl = "1"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-Migrate-to-openssl-1.1.patch b/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-Migrate-to-openssl-1.1.patch
new file mode 100644
index 0000000..394aa16
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-Migrate-to-openssl-1.1.patch
@@ -0,0 +1,152 @@
+From c9dcb6afef9c343d070aaff208d11a997a45a105 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 5 Sep 2018 22:19:38 -0700
+Subject: [PATCH] Migrate to openssl 1.1
+
+Upstream-Status: Backport [https://sourceforge.net/p/ipmitool/source/ci/1664902525a1c3771b4d8b3ccab7ea1ba6b2bdd1/]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/plugins/lanplus/lanplus_crypt_impl.c | 50 ++++++++++++++----------
+ 1 file changed, 29 insertions(+), 21 deletions(-)
+
+diff --git a/src/plugins/lanplus/lanplus_crypt_impl.c b/src/plugins/lanplus/lanplus_crypt_impl.c
+index d5fac37..9652a5e 100644
+--- a/src/plugins/lanplus/lanplus_crypt_impl.c
++++ b/src/plugins/lanplus/lanplus_crypt_impl.c
+@@ -164,11 +164,7 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,
+ 							uint8_t       * output,
+ 							uint32_t        * bytes_written)
+ {
+-	EVP_CIPHER_CTX ctx;
+-	EVP_CIPHER_CTX_init(&ctx);
+-	EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv);
+-	EVP_CIPHER_CTX_set_padding(&ctx, 0);
+-	
++	EVP_CIPHER_CTX *ctx = NULL;
+ 
+ 	*bytes_written = 0;
+ 
+@@ -182,6 +178,14 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,
+ 		printbuf(input, input_length, "encrypting this data");
+ 	}
+ 
++	ctx = EVP_CIPHER_CTX_new();
++	if (ctx == NULL) {
++		lprintf(LOG_DEBUG, "ERROR: EVP_CIPHER_CTX_new() failed");
++		return;
++	}
++	EVP_CIPHER_CTX_init(ctx);
++	EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);
++	EVP_CIPHER_CTX_set_padding(ctx, 0);
+ 
+ 	/*
+ 	 * The default implementation adds a whole block of padding if the input
+@@ -191,28 +195,28 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,
+ 	assert((input_length % IPMI_CRYPT_AES_CBC_128_BLOCK_SIZE) == 0);
+ 
+ 
+-	if(!EVP_EncryptUpdate(&ctx, output, (int *)bytes_written, input, input_length))
++	if(!EVP_EncryptUpdate(ctx, output, (int *)bytes_written, input, input_length))
+ 	{
+ 		/* Error */
+ 		*bytes_written = 0;
+-		return;
+ 	}
+ 	else
+ 	{
+ 		uint32_t tmplen;
+ 
+-		if(!EVP_EncryptFinal_ex(&ctx, output + *bytes_written, (int *)&tmplen))
++		if(!EVP_EncryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen))
+ 		{
++			/* Error */
+ 			*bytes_written = 0;
+-			return; /* Error */
+ 		}
+ 		else
+ 		{
+ 			/* Success */
+ 			*bytes_written += tmplen;
+-			EVP_CIPHER_CTX_cleanup(&ctx);
+ 		}
+ 	}
++	/* performs cleanup and free */
++	EVP_CIPHER_CTX_free(ctx);
+ }
+ 
+ 
+@@ -239,11 +243,7 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,
+ 							uint8_t       * output,
+ 							uint32_t        * bytes_written)
+ {
+-	EVP_CIPHER_CTX ctx;
+-	EVP_CIPHER_CTX_init(&ctx);
+-	EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv);
+-	EVP_CIPHER_CTX_set_padding(&ctx, 0);
+-
++	EVP_CIPHER_CTX *ctx = NULL;
+ 
+ 	if (verbose >= 5)
+ 	{
+@@ -252,12 +252,20 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,
+ 		printbuf(input, input_length, "decrypting this data");
+ 	}
+ 
+-
+ 	*bytes_written = 0;
+ 
+ 	if (input_length == 0)
+ 		return;
+ 
++	ctx = EVP_CIPHER_CTX_new();
++	if (ctx == NULL) {
++		lprintf(LOG_DEBUG, "ERROR: EVP_CIPHER_CTX_new() failed");
++		return;
++	}
++	EVP_CIPHER_CTX_init(ctx);
++	EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);
++	EVP_CIPHER_CTX_set_padding(ctx, 0);
++
+ 	/*
+ 	 * The default implementation adds a whole block of padding if the input
+ 	 * data is perfectly aligned.  We would like to keep that from happening.
+@@ -266,33 +274,33 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,
+ 	assert((input_length % IPMI_CRYPT_AES_CBC_128_BLOCK_SIZE) == 0);
+ 
+ 
+-	if (!EVP_DecryptUpdate(&ctx, output, (int *)bytes_written, input, input_length))
++	if (!EVP_DecryptUpdate(ctx, output, (int *)bytes_written, input, input_length))
+ 	{
+ 		/* Error */
+ 		lprintf(LOG_DEBUG, "ERROR: decrypt update failed");
+ 		*bytes_written = 0;
+-		return;
+ 	}
+ 	else
+ 	{
+ 		uint32_t tmplen;
+ 
+-		if (!EVP_DecryptFinal_ex(&ctx, output + *bytes_written, (int *)&tmplen))
++		if (!EVP_DecryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen))
+ 		{
++			/* Error */
+ 			char buffer[1000];
+ 			ERR_error_string(ERR_get_error(), buffer);
+ 			lprintf(LOG_DEBUG, "the ERR error %s", buffer);
+ 			lprintf(LOG_DEBUG, "ERROR: decrypt final failed");
+ 			*bytes_written = 0;
+-			return; /* Error */
+ 		}
+ 		else
+ 		{
+ 			/* Success */
+ 			*bytes_written += tmplen;
+-			EVP_CIPHER_CTX_cleanup(&ctx);
+ 		}
+ 	}
++	/* performs cleanup and free */
++	EVP_CIPHER_CTX_free(ctx);
+ 
+ 	if (verbose >= 5)
+ 	{
diff --git a/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb b/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb
index 9f73d27..b7f1aa9 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb
@@ -22,7 +22,9 @@
 
 DEPENDS = "openssl readline ncurses"
 
-SRC_URI = "${SOURCEFORGE_MIRROR}/ipmitool/ipmitool-${PV}.tar.bz2"
+SRC_URI = "${SOURCEFORGE_MIRROR}/ipmitool/ipmitool-${PV}.tar.bz2 \
+           file://0001-Migrate-to-openssl-1.1.patch \
+           "
 SRC_URI[md5sum] = "bab7ea104c7b85529c3ef65c54427aa3"
 SRC_URI[sha256sum] = "0c1ba3b1555edefb7c32ae8cd6a3e04322056bc087918f07189eeedfc8b81e01"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
new file mode 100644
index 0000000..181e97c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
@@ -0,0 +1,123 @@
+SUMMARY = "Kernel selftest for Linux"
+DESCRIPTION = "Kernel selftest for Linux"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://../COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+
+DEPENDS = "rsync-native llvm-native"
+
+# for musl libc
+SRC_URI_append_libc-musl = "\
+                      file://userfaultfd.patch \
+                      "
+SRC_URI += "file://run-ptest \
+            file://COPYING \
+            "
+
+# now we just test bpf and vm
+# we will append other kernel selftest in the future
+# bpf was added in 4.10 with: https://github.com/torvalds/linux/commit/5aa5bd14c5f8660c64ceedf14a549781be47e53d
+# if you have older kernel than that you need to remove it from PACKAGECONFIG
+PACKAGECONFIG ??= "bpf vm"
+PACKAGECONFIG_remove_x86 = "bpf"
+PACKAGECONFIG_remove_arm = "bpf"
+
+PACKAGECONFIG[bpf] = ",,elfutils libcap libcap-ng rsync-native,"
+PACKAGECONFIG[vm] = ",,libcap,libgcc bash"
+
+do_patch[depends] += "virtual/kernel:do_shared_workdir"
+
+inherit linux-kernel-base kernel-arch ptest
+
+S = "${WORKDIR}/${BP}"
+
+TEST_LIST = "\
+    ${@bb.utils.filter('PACKAGECONFIG', 'bpf vm', d)} \
+"
+
+EXTRA_OEMAKE = '\
+    CROSS_COMPILE=${TARGET_PREFIX} \
+    ARCH=${ARCH} \
+    CC="${CC}" \
+    AR="${AR}" \
+    LD="${LD}" \
+    DESTDIR="${D}" \
+'
+
+KERNEL_SELFTEST_SRC ?= "Makefile \
+                        include \
+                        tools \
+                        scripts \
+                        arch \
+                        LICENSES \
+"
+
+python __anonymous () {
+    import re
+
+    var = d.getVar('TARGET_CC_ARCH')
+    pattern = '_FORTIFY_SOURCE=[^0]'
+
+    if re.search(pattern, var):
+        d.appendVar('TARGET_CC_ARCH', " -O")
+}
+
+do_compile() {
+    bbwarn "clang >= 6.0  with bpf support is needed with kernel 4.18+ so \
+either install it and add it to HOSTTOOLS, or add \
+clang-native from meta-clang to dependency"
+    for i in ${TEST_LIST}
+    do
+        oe_runmake -C ${S}/tools/testing/selftests/${i}
+    done
+}
+
+do_install() {
+    for i in ${TEST_LIST}
+    do
+        oe_runmake -C ${S}/tools/testing/selftests/${i} INSTALL_PATH=${D}/usr/kernel-selftest/${i} install
+    done
+    if [ -e ${D}/usr/kernel-selftest/bpf/test_offload.py ]; then
+	sed -i -e '1s,#!.*python3,#! /usr/bin/env python3,' ${D}/usr/kernel-selftest/bpf/test_offload.py
+    fi
+    chown root:root  -R ${D}/usr/kernel-selftest
+}
+
+do_configure() {
+    install -D -m 0644 ${WORKDIR}/COPYING ${S}/COPYING
+}
+
+do_patch[prefuncs] += "copy_kselftest_source_from_kernel remove_unrelated"
+python copy_kselftest_source_from_kernel() {
+    sources = (d.getVar("KERNEL_SELFTEST_SRC") or "").split()
+    src_dir = d.getVar("STAGING_KERNEL_DIR")
+    dest_dir = d.getVar("S")
+    bb.utils.mkdirhier(dest_dir)
+    for s in sources:
+        src = oe.path.join(src_dir, s)
+        dest = oe.path.join(dest_dir, s)
+        if os.path.isdir(src):
+            oe.path.copytree(src, dest)
+        else:
+            bb.utils.copyfile(src, dest)
+}
+
+remove_unrelated() {
+    if ${@bb.utils.contains('PACKAGECONFIG','bpf','true','false',d)} ; then
+        test -f ${S}/tools/testing/selftests/bpf/Makefile && \
+            sed -i -e 's/test_pkt_access.*$/\\/' \
+                   -e 's/test_pkt_md_access.*$/\\/' \
+                   -e 's/sockmap_verdict_prog.*$/\\/' \
+                   ${S}/tools/testing/selftests/bpf/Makefile || \
+            bberror "Your kernel is probably older than 4.10 and doesn't have tools/testing/selftests/bpf/Makefile file from https://github.com/torvalds/linux/commit/5aa5bd14c5f8660c64ceedf14a549781be47e53d, disable bpf PACKAGECONFIG"
+    fi
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+INHIBIT_PACKAGE_DEBUG_SPLIT="1"
+FILES_${PN} += "/usr/kernel-selftest"
+
+RDEPENDS_${PN} += "python3"
+# tools/testing/selftests/vm/Makefile doesn't respect LDFLAGS and tools/testing/selftests/Makefile explicitly overrides to empty
+INSANE_SKIP_${PN} += "ldflags"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/COPYING b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/COPYING
new file mode 100644
index 0000000..da4cb28
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/COPYING
@@ -0,0 +1,18 @@
+The Linux Kernel is provided under:
+
+	SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+Being under the terms of the GNU General Public License version 2 only,
+according with:
+
+	LICENSES/preferred/GPL-2.0
+
+With an explicit syscall exception, as stated at:
+
+	LICENSES/exceptions/Linux-syscall-note
+
+In addition, other licenses may also apply. Please see:
+
+	Documentation/process/license-rules.rst
+
+for more details.
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/run-ptest b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/run-ptest
new file mode 100755
index 0000000..d40b957
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/run-ptest
@@ -0,0 +1,11 @@
+#!/bin/sh
+export PATH=$PATH:/usr/kernel-selftest/bpf
+
+# test_align
+test_align | grep "12 pass" &> /dev/null
+if [ $? == 0 ]; then
+    echo "[PASS]: test_align"
+else
+    echo "[FAIL]: test_align"
+fi
+
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/userfaultfd.patch b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/userfaultfd.patch
new file mode 100644
index 0000000..bed2051
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest/userfaultfd.patch
@@ -0,0 +1,322 @@
+From c7b375747cffb627d02543d946b28525455d7d46 Mon Sep 17 00:00:00 2001
+From: "Hongzhi.Song" <hongzhi.song@windriver.com>
+Date: Fri, 13 Jul 2018 06:06:19 -0700
+Subject: [PATCH] vm: add some funtions to support musl libc
+
+Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
+---
+ tools/testing/selftests/vm/userfaultfd.c | 298 +++++++++++++++++++++++++++++++
+ 1 file changed, 298 insertions(+)
+
+diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
+index de2f9ec..dc73021 100644
+--- a/tools/testing/selftests/vm/userfaultfd.c
++++ b/tools/testing/selftests/vm/userfaultfd.c
+@@ -71,6 +71,304 @@
+ 
+ #ifdef __NR_userfaultfd
+ 
++/* Linear congruential.  */
++#define	TYPE_0		0
++#define	BREAK_0		8
++#define	DEG_0		0
++#define	SEP_0		0
++
++/* x**7 + x**3 + 1.  */
++#define	TYPE_1		1
++#define	BREAK_1		32
++#define	DEG_1		7
++#define	SEP_1		3
++
++/* x**15 + x + 1.  */
++#define	TYPE_2		2
++#define	BREAK_2		64
++#define	DEG_2		15
++#define	SEP_2		1
++
++/* x**31 + x**3 + 1.  */
++#define	TYPE_3		3
++#define	BREAK_3		128
++#define	DEG_3		31
++#define	SEP_3		3
++
++/* x**63 + x + 1.  */
++#define	TYPE_4		4
++#define	BREAK_4		256
++#define	DEG_4		63
++#define	SEP_4		1
++
++/* Array versions of the above information to make code run faster.
++   Relies on fact that TYPE_i == i.  */
++
++#define	MAX_TYPES	5	/* Max number of types above.  */
++
++#define __set_errno(val) (errno = (val))
++
++struct random_data
++  {
++    int32_t *fptr;      /* Front pointer.  */
++    int32_t *rptr;      /* Rear pointer.  */
++    int32_t *state;     /* Array of state values.  */
++    int rand_type;      /* Type of random number generator.  */
++    int rand_deg;       /* Degree of random number generator.  */
++    int rand_sep;       /* Distance between front and rear.  */
++    int32_t *end_ptr;       /* Pointer behind state table.  */
++  };
++
++struct random_poly_info
++{
++  int seps[MAX_TYPES];
++  int degrees[MAX_TYPES];
++};
++
++static const struct random_poly_info random_poly_info =
++{
++  { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 },
++  { DEG_0, DEG_1, DEG_2, DEG_3, DEG_4 }
++};
++
++/* If we are using the trivial TYPE_0 R.N.G., just do the old linear
++   congruential bit.  Otherwise, we do our fancy trinomial stuff, which is the
++   same in all the other cases due to all the global variables that have been
++   set up.  The basic operation is to add the number at the rear pointer into
++   the one at the front pointer.  Then both pointers are advanced to the next
++   location cyclically in the table.  The value returned is the sum generated,
++   reduced to 31 bits by throwing away the "least random" low bit.
++   Note: The code takes advantage of the fact that both the front and
++   rear pointers can't wrap on the same call by not testing the rear
++   pointer if the front one has wrapped.  Returns a 31-bit random number.  */
++
++int random_r (struct random_data *buf, int32_t *result)
++{
++  int32_t *state;
++
++  if (buf == NULL || result == NULL)
++    goto fail;
++
++  state = buf->state;
++
++  if (buf->rand_type == TYPE_0)
++    {
++      int32_t val = ((state[0] * 1103515245U) + 12345U) & 0x7fffffff;
++      state[0] = val;
++      *result = val;
++    }
++  else
++    {
++      int32_t *fptr = buf->fptr;
++      int32_t *rptr = buf->rptr;
++      int32_t *end_ptr = buf->end_ptr;
++      uint32_t val;
++
++      val = *fptr += (uint32_t) *rptr;
++      /* Chucking least random bit.  */
++      *result = val >> 1;
++      ++fptr;
++      if (fptr >= end_ptr)
++	{
++	  fptr = state;
++	  ++rptr;
++	}
++      else
++	{
++	  ++rptr;
++	  if (rptr >= end_ptr)
++	    rptr = state;
++	}
++      buf->fptr = fptr;
++      buf->rptr = rptr;
++    }
++  return 0;
++
++ fail:
++  __set_errno (EINVAL);
++  return -1;
++}
++
++/* Initialize the random number generator based on the given seed.  If the
++   type is the trivial no-state-information type, just remember the seed.
++   Otherwise, initializes state[] based on the given "seed" via a linear
++   congruential generator.  Then, the pointers are set to known locations
++   that are exactly rand_sep places apart.  Lastly, it cycles the state
++   information a given number of times to get rid of any initial dependencies
++   introduced by the L.C.R.N.G.  Note that the initialization of randtbl[]
++   for default usage relies on values produced by this routine.  */
++int srandom_r (unsigned int seed, struct random_data *buf)
++{
++  int type;
++  int32_t *state;
++  long int i;
++  int32_t word;
++  int32_t *dst;
++  int kc;
++
++  if (buf == NULL)
++    goto fail;
++  type = buf->rand_type;
++  if ((unsigned int) type >= MAX_TYPES)
++    goto fail;
++
++  state = buf->state;
++  /* We must make sure the seed is not 0.  Take arbitrarily 1 in this case.  */
++  if (seed == 0)
++    seed = 1;
++  state[0] = seed;
++  if (type == TYPE_0)
++    goto done;
++
++  dst = state;
++  word = seed;
++  kc = buf->rand_deg;
++  for (i = 1; i < kc; ++i)
++    {
++      /* This does:
++	   state[i] = (16807 * state[i - 1]) % 2147483647;
++	 but avoids overflowing 31 bits.  */
++      long int hi = word / 127773;
++      long int lo = word % 127773;
++      word = 16807 * lo - 2836 * hi;
++      if (word < 0)
++	word += 2147483647;
++      *++dst = word;
++    }
++
++  buf->fptr = &state[buf->rand_sep];
++  buf->rptr = &state[0];
++  kc *= 10;
++  while (--kc >= 0)
++    {
++      int32_t discard;
++      (void) random_r (buf, &discard);
++    }
++
++ done:
++  return 0;
++
++ fail:
++  return -1;
++}
++
++/* Initialize the state information in the given array of N bytes for
++   future random number generation.  Based on the number of bytes we
++   are given, and the break values for the different R.N.G.'s, we choose
++   the best (largest) one we can and set things up for it.  srandom is
++   then called to initialize the state information.  Note that on return
++   from srandom, we set state[-1] to be the type multiplexed with the current
++   value of the rear pointer; this is so successive calls to initstate won't
++   lose this information and will be able to restart with setstate.
++   Note: The first thing we do is save the current state, if any, just like
++   setstate so that it doesn't matter when initstate is called.
++   Returns 0 on success, non-zero on failure.  */
++int initstate_r (unsigned int seed, char *arg_state, size_t n,
++	       struct random_data *buf)
++{
++  if (buf == NULL)
++    goto fail;
++
++  int32_t *old_state = buf->state;
++  if (old_state != NULL)
++    {
++      int old_type = buf->rand_type;
++      if (old_type == TYPE_0)
++	old_state[-1] = TYPE_0;
++      else
++	old_state[-1] = (MAX_TYPES * (buf->rptr - old_state)) + old_type;
++    }
++
++  int type;
++  if (n >= BREAK_3)
++    type = n < BREAK_4 ? TYPE_3 : TYPE_4;
++  else if (n < BREAK_1)
++    {
++      if (n < BREAK_0)
++	goto fail;
++
++      type = TYPE_0;
++    }
++  else
++    type = n < BREAK_2 ? TYPE_1 : TYPE_2;
++
++  int degree = random_poly_info.degrees[type];
++  int separation = random_poly_info.seps[type];
++
++  buf->rand_type = type;
++  buf->rand_sep = separation;
++  buf->rand_deg = degree;
++  int32_t *state = &((int32_t *) arg_state)[1];	/* First location.  */
++  /* Must set END_PTR before srandom.  */
++  buf->end_ptr = &state[degree];
++
++  buf->state = state;
++
++  srandom_r (seed, buf);
++
++  state[-1] = TYPE_0;
++  if (type != TYPE_0)
++    state[-1] = (buf->rptr - state) * MAX_TYPES + type;
++
++  return 0;
++
++ fail:
++  __set_errno (EINVAL);
++  return -1;
++}
++
++/* Restore the state from the given state array.
++   Note: It is important that we also remember the locations of the pointers
++   in the current state information, and restore the locations of the pointers
++   from the old state information.  This is done by multiplexing the pointer
++   location into the zeroth word of the state information. Note that due
++   to the order in which things are done, it is OK to call setstate with the
++   same state as the current state
++   Returns 0 on success, non-zero on failure.  */
++int setstate_r (char *arg_state, struct random_data *buf)
++{
++  int32_t *new_state = 1 + (int32_t *) arg_state;
++  int type;
++  int old_type;
++  int32_t *old_state;
++  int degree;
++  int separation;
++
++  if (arg_state == NULL || buf == NULL)
++    goto fail;
++
++  old_type = buf->rand_type;
++  old_state = buf->state;
++  if (old_type == TYPE_0)
++    old_state[-1] = TYPE_0;
++  else
++    old_state[-1] = (MAX_TYPES * (buf->rptr - old_state)) + old_type;
++
++  type = new_state[-1] % MAX_TYPES;
++  if (type < TYPE_0 || type > TYPE_4)
++    goto fail;
++
++  buf->rand_deg = degree = random_poly_info.degrees[type];
++  buf->rand_sep = separation = random_poly_info.seps[type];
++  buf->rand_type = type;
++
++  if (type != TYPE_0)
++    {
++      int rear = new_state[-1] / MAX_TYPES;
++      buf->rptr = &new_state[rear];
++      buf->fptr = &new_state[(rear + separation) % degree];
++    }
++  buf->state = new_state;
++  /* Set end_ptr too.  */
++  buf->end_ptr = &new_state[degree];
++
++  return 0;
++
++ fail:
++  __set_errno (EINVAL);
++  return -1;
++}
++
+ static unsigned long nr_cpus, nr_pages, nr_pages_per_cpu, page_size;
+ 
+ #define BOUNCE_RANDOM		(1<<0)
+-- 
+2.11.0
+
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
index b1e73e9..cd819f3 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
+++ b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
@@ -30,6 +30,7 @@
 PROVIDES += "kpatch-build"
 
 COMPATIBLE_HOST = "(x86_64).*-linux"
+COMPATIBLE_HOST_libc-musl = "null"
 
 RDEPENDS_${PN} = "bash binutils"
 RDEPENDS_kpatch-build = "bash glibc-utils"
@@ -38,6 +39,7 @@
 	${sbindir}/kpatch \
 	${systemd_system_unitdir}/kpatch.service \
 	${mandir}/man1/kpatch.1.gz \
+	${sysconfdir}/init/kpatch.conf \
 	"
 FILES_kpatch-build = " \
 	${bindir}/kpatch-build \
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch
index 459fb21..ab3b127 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch
+++ b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch
@@ -1,4 +1,4 @@
-From a9a80a1f4df65892a0269295ce8a64b06f2ff61d Mon Sep 17 00:00:00 2001
+From 70de3fecbc551907c4fd504cfff385c73be8db75 Mon Sep 17 00:00:00 2001
 From: Ruslan Bilovol <rbilovol@cisco.com>
 Date: Tue, 19 Dec 2017 15:59:04 +0200
 Subject: [PATCH] kpatch-build: add cross-compilation support
@@ -17,16 +17,17 @@
 Upstream-Status: Pending
 
 Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
+
 ---
  kpatch-build/kpatch-build | 13 +++++++++++--
  kpatch-build/kpatch-gcc   |  4 ++--
  2 files changed, 13 insertions(+), 4 deletions(-)
 
 diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build
-index 166ecbd..af24cc4 100755
+index a76913f..4a011aa 100755
 --- a/kpatch-build/kpatch-build
 +++ b/kpatch-build/kpatch-build
-@@ -195,7 +195,7 @@ gcc_version_check() {
+@@ -197,7 +197,7 @@ gcc_version_check() {
  	# gcc --version varies between distributions therefore extract version
  	# by compiling a test file and compare it to vmlinux's version.
  	echo 'void main(void) {}' > "$c"
@@ -35,7 +36,7 @@
  	gccver="$(gcc_version_from_file "$o")"
  	kgccver="$(gcc_version_from_file "$VMLINUX")"
  	rm -f "$c" "$o"
-@@ -381,12 +381,14 @@ usage() {
+@@ -392,12 +392,14 @@ usage() {
  	echo "		-d, --debug        Enable 'xtrace' and keep scratch files" >&2
  	echo "		                   in <CACHEDIR>/tmp" >&2
  	echo "		                   (can be specified multiple times)" >&2
@@ -51,7 +52,7 @@
  
  eval set -- "$options"
  
-@@ -444,6 +446,10 @@ while [[ $# -gt 0 ]]; do
+@@ -455,6 +457,10 @@ while [[ $# -gt 0 ]]; do
  			echo "DEBUG mode enabled"
  		fi
  		;;
@@ -62,7 +63,7 @@
  	--skip-cleanup)
  		echo "Skipping cleanup"
  		SKIPCLEANUP=1
-@@ -691,6 +697,8 @@ if [[ $DEBUG -ge 4 ]]; then
+@@ -710,6 +716,8 @@ if [[ $DEBUG -ge 4 ]]; then
  	export KPATCH_GCC_DEBUG=1
  fi
  
@@ -70,8 +71,8 @@
 +
  echo "Building original kernel"
  ./scripts/setlocalversion --save-scmversion || die
- make mrproper 2>&1 | logger || die
-@@ -840,6 +848,7 @@ cd "$TEMPDIR/patch" || die
+ unset KPATCH_GCC_TEMPDIR
+@@ -874,6 +882,7 @@ cd "$TEMPDIR/patch" || die
  KPATCH_BUILD="$SRCDIR" KPATCH_NAME="$MODNAME" \
  KBUILD_EXTRA_SYMBOLS="$KBUILD_EXTRA_SYMBOLS" \
  KPATCH_LDFLAGS="$KPATCH_LDFLAGS" \
@@ -80,7 +81,7 @@
  
  if ! "$KPATCH_MODULE"; then
 diff --git a/kpatch-build/kpatch-gcc b/kpatch-build/kpatch-gcc
-index 6ba133c..3937948 100755
+index 2d56da1..59a4255 100755
 --- a/kpatch-build/kpatch-gcc
 +++ b/kpatch-build/kpatch-gcc
 @@ -8,7 +8,7 @@ TOOLCHAINCMD="$1"
@@ -92,12 +93,9 @@
  fi
  
  declare -a args=("$@")
-@@ -80,4 +80,4 @@ elif [[ "$TOOLCHAINCMD" = "ld" ]] ; then
+@@ -82,4 +82,4 @@ elif [[ "$TOOLCHAINCMD" = "ld" ]] ; then
  	done
  fi
  
 -exec "$TOOLCHAINCMD" "${args[@]}"
 +exec ${KPATCH_CROSS_COMPILE}${TOOLCHAINCMD} "${args[@]}"
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch
index a9d8a7f..13cdc6b 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch
+++ b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch
@@ -1,4 +1,4 @@
-From d418d716dae1e2a05131dfb42a19a4da2fc8a85d Mon Sep 17 00:00:00 2001
+From 15838a86d5ea94fa05976ea32fd847b18261b403 Mon Sep 17 00:00:00 2001
 From: Ruslan Bilovol <rbilovol@cisco.com>
 Date: Tue, 2 Jan 2018 14:50:03 +0200
 Subject: [PATCH] kpatch-build: allow overriding of distro name
@@ -14,15 +14,16 @@
 Upstream-Status: Pending
 
 Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
+
 ---
  kpatch-build/kpatch-build | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build
-index af24cc4..4f9f78d 100755
+index 4a011aa..eb6cd64 100755
 --- a/kpatch-build/kpatch-build
 +++ b/kpatch-build/kpatch-build
-@@ -383,12 +383,13 @@ usage() {
+@@ -394,12 +394,13 @@ usage() {
  	echo "		                   (can be specified multiple times)" >&2
  	echo "		--cross-compile    Specify the prefix used for all executables" >&2
  	echo "		                   used during compilation" >&2
@@ -37,7 +38,7 @@
  
  eval set -- "$options"
  
-@@ -450,6 +451,10 @@ while [[ $# -gt 0 ]]; do
+@@ -461,6 +462,10 @@ while [[ $# -gt 0 ]]; do
  		KPATCH_CROSS_COMPILE="$2"
  		shift
  		;;
@@ -48,7 +49,7 @@
  	--skip-cleanup)
  		echo "Skipping cleanup"
  		SKIPCLEANUP=1
-@@ -526,7 +531,7 @@ fi
+@@ -539,7 +544,7 @@ fi
  # Don't check external file.
  # shellcheck disable=SC1091
  source /etc/os-release
@@ -57,6 +58,3 @@
  if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] || [[ "$DISTRO" = centos ]]; then
  	[[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/lib/modules/$ARCHVERSION/vmlinux"
  	[[ -e "$VMLINUX" ]] || die "kernel-debuginfo-$ARCHVERSION not installed"
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
index e495e28..024cca6 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
@@ -2,9 +2,9 @@
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRCREV = "db6efbb8c7e90d2b761272cf563047119072768f"
+SRCREV = "7f550f01bd308cf058ae782327d29c8916cc5602"
 
-PV = "0.5.0+git${SRCPV}"
+PV = "0.6.1+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch
index d599a91..a478065 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch
+++ b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch
@@ -1,4 +1,4 @@
-From 3c2f4ff583a156a7ed2fa0cc002a413c391d063d Mon Sep 17 00:00:00 2001
+From 8eeb1b15608ce1a9a1f0d5417938fd6da4504406 Mon Sep 17 00:00:00 2001
 From: Mingli Yu <mingli.yu@windriver.com>
 Date: Thu, 21 Jul 2016 18:06:21 +0800
 Subject: [PATCH] makedumpfile: replace hardcode CFLAGS
@@ -13,12 +13,13 @@
 Upstream-Status: Inappropriate[oe specific]
 
 Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+
 ---
  Makefile | 46 +++++++++++++++++++++++-----------------------
  1 file changed, 23 insertions(+), 23 deletions(-)
 
 diff --git a/Makefile b/Makefile
-index 7dde3e4..c5286ac 100644
+index 612b9d0..f6d6265 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -8,13 +8,6 @@ ifeq ($(strip $CC),)
@@ -80,9 +81,9 @@
 +		-DRELEASE_DATE='"$(DATE)"'
 +
  SRC_BASE = makedumpfile.c makedumpfile.h diskdump_mod.h sadump_mod.h sadump_info.h
- SRC_PART = print_info.c dwarf_info.c elf_info.c erase_info.c sadump_info.c cache.c
+ SRC_PART = print_info.c dwarf_info.c elf_info.c erase_info.c sadump_info.c cache.c tools.c
  OBJ_PART=$(patsubst %.c,%.o,$(SRC_PART))
-@@ -54,17 +54,17 @@ OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH))
+@@ -53,17 +53,17 @@ OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH))
  
  LIBS = -ldw -lbz2 -lebl -ldl -lelf -lz
  ifneq ($(LINKTYPE), dynamic)
@@ -103,7 +104,7 @@
  endif
  
  LIBS := -lpthread $(LIBS)
-@@ -72,14 +72,14 @@ LIBS := -lpthread $(LIBS)
+@@ -71,14 +71,14 @@ LIBS := -lpthread $(LIBS)
  all: makedumpfile
  
  $(OBJ_PART): $(SRC_PART)
@@ -120,7 +121,7 @@
  	echo .TH MAKEDUMPFILE 8 \"$(DATE)\" \"makedumpfile v$(VERSION)\" \"Linux System Administrator\'s Manual\" > temp.8
  	grep -v "^.TH MAKEDUMPFILE 8" $(VPATH)makedumpfile.8 >> temp.8
  	mv temp.8 makedumpfile.8
-@@ -90,7 +90,7 @@ makedumpfile: $(SRC_BASE) $(OBJ_PART) $(OBJ_ARCH)
+@@ -89,7 +89,7 @@ makedumpfile: $(SRC_BASE) $(OBJ_PART) $(OBJ_ARCH)
  	gzip -c ./makedumpfile.conf.5 > ./makedumpfile.conf.5.gz
  
  eppic_makedumpfile.so: extension_eppic.c
@@ -129,6 +130,3 @@
  
  clean:
  	rm -f $(OBJ) $(OBJ_PART) $(OBJ_ARCH) makedumpfile makedumpfile.8.gz makedumpfile.conf.5.gz
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch
index e0c3d9a..766f4fc 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch
+++ b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch
@@ -1,4 +1,4 @@
-From 653fe8e724081d2f289c2245d1220d5f7170538d Mon Sep 17 00:00:00 2001
+From ba123fa6b2aa0ac62d1b78f327339635ae87201a Mon Sep 17 00:00:00 2001
 From: Alexandru Moise <alexandru.moise@windriver.com>
 Date: Fri, 29 Apr 2016 07:40:46 +0000
 Subject: [PATCH] mem_section: Support only 46 bit for MAX_PHYSMEM_BITS on
@@ -20,18 +20,20 @@
 
 Signed-off-by: Alexandru Moise <alexandru.moise@windriver.com>
 Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+
 ---
  arch/ppc64.c | 28 ++--------------------------
  1 file changed, 2 insertions(+), 26 deletions(-)
 
 diff --git a/arch/ppc64.c b/arch/ppc64.c
-index 89a7f05..6c928ab 100644
+index 8b6f7d5..458f06b 100644
 --- a/arch/ppc64.c
 +++ b/arch/ppc64.c
-@@ -302,37 +302,13 @@ ppc64_vtop_level4(unsigned long vaddr)
+@@ -462,38 +462,14 @@ ppc64_vtop_level4(unsigned long vaddr)
+ 	return paddr;
  }
  
- int
+-int
 -set_ppc64_max_physmem_bits(void)
 -{
 -	long array_len = ARRAY_LENGTH(mem_section);
@@ -53,7 +55,7 @@
 -	return FALSE;
 -}
 -
--int
+ int
  get_machdep_info_ppc64(void)
  {
  	unsigned long vmlist, vmap_area_list, vmalloc_start;
@@ -68,6 +70,3 @@
  	info->page_offset = __PAGE_OFFSET;
  
  	if (SYMBOL(_stext) == NOT_FOUND_SYMBOL) {
--- 
-2.5.0
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.2.bb b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.4.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.2.bb
rename to meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.4.bb
index d6f2d80..629e251 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.2.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.4.bb
@@ -25,8 +25,11 @@
     file://0001-makedumpfile-replace-hardcode-CFLAGS.patch \
     file://0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch \
 "
-SRC_URI[md5sum] = "72be5bf973eed898c5127e3abc466583"
-SRC_URI[sha256sum] = "ee3d21cb4032a60bd2c802d1d8b21b9f399710e1574f8de8ead5ab50cd821a6d"
+SRC_URI[md5sum] = "7dfbca19f487604c271e2892ba07f4bd"
+SRC_URI[sha256sum] = "7e06f72d5f291fcab9e92975f405a76e37d4f7fc8fa4172f199636398ae812b1"
+
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/makedumpfile/files/makedumpfile/"
+UPSTREAM_CHECK_REGEX = "makedumpfile/(?P<pver>\d+(\.\d+)+)/"
 
 SECTION = "base"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/files/0001-fix-compile-error-on-arch-x32.patch b/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/files/0001-fix-compile-error-on-arch-x32.patch
deleted file mode 100644
index 6ba6ad4..0000000
--- a/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/files/0001-fix-compile-error-on-arch-x32.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 883f53ee33eaef8aca1288a110857402ad362966 Mon Sep 17 00:00:00 2001
-From: John Ogness <john.ogness@linutronix.de>
-Date: Fri, 8 Sep 2017 15:03:03 -0700
-Subject: [PATCH] fix compile error on arch=x32
-
-On the x32 architecture time_t is a "long long int". By
- typecasting time_t to "long long", this should work correctly
- for all architectures.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/minicoredumper/corestripper.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/minicoredumper/corestripper.c b/src/minicoredumper/corestripper.c
-index fd39bfb..07dc318 100644
---- a/src/minicoredumper/corestripper.c
-+++ b/src/minicoredumper/corestripper.c
-@@ -1241,7 +1241,7 @@ static int dump_compressed_tar(struct dump_info *di)
- 	snprintf(hdr.mode, sizeof(hdr.mode), "%07o", 0644);
- 	snprintf(hdr.uid, sizeof(hdr.uid), "%07o", 0);
- 	snprintf(hdr.gid, sizeof(hdr.gid), "%07o", 0);
--	snprintf(hdr.mtime, sizeof(hdr.mtime), "%011lo",
-+	snprintf(hdr.mtime, sizeof(hdr.mtime), "%011llo",
- 		 (long long)time(NULL));
- 	memset(hdr.checksum, ' ', sizeof(hdr.checksum));
- 	hdr.type = 'S';
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.0.bb b/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.0.bb
index 0d3c66b..bae5cf4 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.0.bb
@@ -9,7 +9,7 @@
 
 inherit autotools pkgconfig systemd update-rc.d
 
-SRCREV = "cdc1faf1212a51e89b477468876e229223fceb9a"
+SRCREV = "1c0d5960b0bb4bac7566e6afe8bc9705399cc76b"
 
 PR .= "+git${SRCPV}"
 
@@ -17,7 +17,6 @@
            file://minicoredumper.service \
            file://minicoredumper.init \
            file://0001-minicoredumper-Initialize-pointer-to-config-struct-t.patch \
-           file://0001-fix-compile-error-on-arch-x32.patch \
            "
 
 S = "${WORKDIR}/git"
@@ -43,3 +42,6 @@
     sed -i -e s:/usr/bin/minicoredumper:${sbindir}/minicoredumper:g ${D}${sysconfdir}/init.d/minicoredumper
     sed -i -e s:/usr/bin/minicoredumper:${sbindir}/minicoredumper:g ${D}${systemd_system_unitdir}/minicoredumper.service
 }
+
+# http://errors.yoctoproject.org/Errors/Details/186966/
+EXCLUDE_FROM_WORLD_libc-musl = "1"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc b/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc
index 4b01654..349e2bf 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc
+++ b/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc
@@ -25,12 +25,12 @@
            file://run-ptest \
            file://root-home-dir.patch \
            file://0001-Add-rmb-definition-for-NIOS2-architecture.patch \
-           file://0001-Fix-FTBFS-problem-with-GCC-6.patch \
 "
 UPSTREAM_CHECK_REGEX = "oprofile-(?P<pver>\d+(\.\d+)+)/"
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/oprofile/files/oprofile/"
 
-SRC_URI_append_libc-musl = " file://musl.patch"
+SRC_URI_append_libc-musl = " file://musl.patch \
+"
 
 inherit autotools pkgconfig ptest
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-Fix-FTBFS-problem-with-GCC-6.patch b/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-Fix-FTBFS-problem-with-GCC-6.patch
deleted file mode 100644
index d372fd5..0000000
--- a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-Fix-FTBFS-problem-with-GCC-6.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 39d4d46a0bd504ac708ffe72df87bf74cd12ad30 Mon Sep 17 00:00:00 2001
-From: William Cohen <wcohen@redhat.com>
-Date: Fri, 5 Feb 2016 17:30:19 -0500
-Subject: [PATCH] Fix FTBFS problem with GCC-6
-
-GCC-6 is pickier about some of the type conversions causing the Fedora
-24 mass rebuild the build of oprofile failed with:
-
-make[3]: Entering directory '/builddir/build/BUILD/oprofile-1.1.0/libutil++'
-g++ -DHAVE_CONFIG_H -I. -I..  -I ../libutil -I ../libop -I ../libpp   -W -Wall -fno-common -ftemplate-depth-50 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c -o op_bfd.o op_bfd.cpp
-op_bfd.cpp: In member function 'void op_bfd::get_symbol_range(symbol_index_t, long long unsigned int&, long long unsigned int&) const':
-op_bfd.cpp:538:47: error: cannot convert 'std::ostream {aka std::basic_ostream<char>}' to 'const bool' in initialization
-  bool const verbose = cverb << (vbfd & vlevel1);
-                                               ^
-op_bfd.cpp:546:7: error: in argument to unary !
-  if (!verbose)
-       ^~~~~~~
-
-Avoid the intermediate bool type to make GCC-6 happy.
-
-Signed-off-by: William Cohen <wcohen@redhat.com>
----
-Upstream-Status: Backport
-
- libutil++/op_bfd.cpp | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/libutil++/op_bfd.cpp b/libutil++/op_bfd.cpp
-index 389c920..f2eb42b 100644
---- a/libutil++/op_bfd.cpp
-+++ b/libutil++/op_bfd.cpp
-@@ -535,15 +535,13 @@ void op_bfd::get_symbol_range(symbol_index_t sym_idx,
- {
- 	op_bfd_symbol const & sym = syms[sym_idx];
- 
--	bool const verbose = cverb << (vbfd & vlevel1);
--
- 	if (anon_obj)
- 		start = sym.vma();
- 	else
- 		start = sym.filepos();
- 	end = start + sym.size();
- 
--	if (!verbose)
-+	if (!(cverb << (vbfd & vlevel1)))
- 		return;
- 
- 	io_state state(cverb << (vbfd & vlevel1));
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.1.0.bb b/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.1.0.bb
deleted file mode 100644
index 92a94ad..0000000
--- a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.1.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require oprofile.inc
-
-DEPENDS += "virtual/kernel"
-DEPENDS_append_powerpc64 = " libpfm4"
-
-SRC_URI[md5sum] = "248c4c069f9476f427fa7195563f9867"
-SRC_URI[sha256sum] = "cf759a6de1a6033d5dfc93bda129a9f2e128aecc4238cc657feb0801d1b0366c"
-
-S = "${WORKDIR}/oprofile-${PV}"
-
diff --git a/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.3.0.bb b/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.3.0.bb
new file mode 100644
index 0000000..1dc535e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.3.0.bb
@@ -0,0 +1,10 @@
+require oprofile.inc
+
+DEPENDS += "virtual/kernel"
+DEPENDS_append_powerpc64 = " libpfm4"
+
+SRC_URI[md5sum] = "bd998df5521ebedae31e71cd3fb6200b"
+SRC_URI[sha256sum] = "95ded8bde1ec39922f0af015981a67aec63e025a501e4dc04cd65d38f73647e6"
+
+S = "${WORKDIR}/oprofile-${PV}"
+
diff --git a/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat/COPYING b/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat/COPYING
new file mode 100644
index 0000000..da4cb28
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat/COPYING
@@ -0,0 +1,18 @@
+The Linux Kernel is provided under:
+
+	SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
+
+Being under the terms of the GNU General Public License version 2 only,
+according with:
+
+	LICENSES/preferred/GPL-2.0
+
+With an explicit syscall exception, as stated at:
+
+	LICENSES/exceptions/Linux-syscall-note
+
+In addition, other licenses may also apply. Please see:
+
+	Documentation/process/license-rules.rst
+
+for more details.
diff --git a/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb b/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb
new file mode 100644
index 0000000..dc3e78f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb
@@ -0,0 +1,57 @@
+#
+# Copyright (C) 2013 Wind River Systems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+SUMMARY = "Frequency and Idle power monitoring tools for Linux"
+
+DESCRIPTION = "The turbostat tool allows you to determine the actual \
+processor frequency and idle power saving state residency on supported \
+processors."
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://../COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+COMPATIBLE_HOST = '(x86_64.*|i.86.*)-linux'
+COMPATIBLE_HOST_libc-musl = "null"
+
+SRC_URI += "\
+            file://COPYING \
+            "
+
+DEPENDS = "virtual/kernel"
+
+# This looks in S, so we better make sure there's
+# something in the directory.
+#
+do_populate_lic[depends] = "${PN}:do_configure"
+
+
+EXTRA_OEMAKE = '\
+                CC="${CC}" \
+		'CFLAGS=-Wall -I${STAGING_KERNEL_DIR}/arch/x86/include/uapi ${LDFLAGS}' \
+               '
+
+# If we build under STAGING_KERNEL_DIR, source will not be put
+# into the dbg rpm.  STAGING_KERNEL_DIR will exist by the time
+# do_configure() is invoked so we can safely copy from it.
+#
+do_configure_prepend() {
+	mkdir -p ${S}
+	cp -r ${STAGING_KERNEL_DIR}/arch/x86/include/asm/msr-index.h ${S}
+	cp -r ${STAGING_KERNEL_DIR}/arch/x86/include/asm/intel-family.h ${S}
+	cp -r ${STAGING_KERNEL_DIR}/tools/power/x86/turbostat/* ${S}
+	cp -r ${WORKDIR}/COPYING ${S}
+}
+
+do_compile() {
+	sed -i 's#MSRHEADER#"msr-index.h"#' turbostat.c
+	sed -i 's#INTEL_FAMILY_HEADER#"intel-family.h"#' turbostat.c
+	sed -i 's#\$(CC) \$(CFLAGS) \$< -o \$(BUILD_OUTPUT)/\$@#\$(CC) \$(CFLAGS) \$(LDFLAGS) \$< -o \$(BUILD_OUTPUT)/\$@#' Makefile
+	oe_runmake STAGING_KERNEL_DIR=${STAGING_KERNEL_DIR}
+}
+
+do_install() {
+	oe_runmake DESTDIR="${D}" install
+}
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.0.28.bb b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.0.28.bb
deleted file mode 100644
index 0c4a9f5..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.0.28.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Alsa OSS Compatibility Package"
-SECTION = "libs/multimedia"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
-DEPENDS = "alsa-lib"
-
-SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2 \
-    file://libio.patch \
-"
-SRC_URI[md5sum] = "91f57e8cee1ad4cc956caa8b62ac5d43"
-SRC_URI[sha256sum] = "3ae62caa88a0bc7b30ed836dcb794dc6ef4d3650439e2260db54cace7d5c6ad5"
-
-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
-}
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb
new file mode 100644
index 0000000..6c2176f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb
@@ -0,0 +1,46 @@
+# FIXME: the LIC_FILES_CHKSUM values have been updated by 'devtool upgrade'.
+# The following is the difference between the old and the new license text.
+# Please update the LICENSE value if needed, and summarize the changes in
+# the commit message via 'License-Update:' tag.
+# (example: 'License-Update: copyright years updated.')
+#
+# The changes:
+#
+# --- COPYING
+# +++ COPYING
+# @@ -2,7 +2,8 @@
+#  		       Version 2, June 1991
+#  
+#   Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+# -                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# + 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+# +
+#   Everyone is permitted to copy and distribute verbatim copies
+#   of this license document, but changing it is not allowed.
+#  
+# 
+#
+
+SUMMARY = "Alsa OSS Compatibility Package"
+SECTION = "libs/multimedia"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ed055b4eff93da784176a01582e6ec1a"
+DEPENDS = "alsa-lib"
+
+SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2 \
+    file://libio.patch \
+"
+SRC_URI[md5sum] = "fc845cafc4444193510ab1865c7350b8"
+SRC_URI[sha256sum] = "c3d3f743e61f05ff95c5cba3b06bc9c91ff86c37495f1d19dab844e6b90845ea"
+
+inherit autotools
+
+LEAD_SONAME = "libaoss.so.0"
+
+do_configure_prepend () {
+    touch NEWS README AUTHORS ChangeLog
+    sed -i "s/libaoss.so/${LEAD_SONAME}/" ${S}/alsa/aoss.in
+}
+
+# http://errors.yoctoproject.org/Errors/Details/186961/
+EXCLUDE_FROM_WORLD_libc-musl = "1"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb b/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb
index 63e590c..9e5a381 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb
@@ -1,9 +1,12 @@
-SUMMARY = "Library for reading some sort of media format"
+SUMMARY = "An open source MPEG-4 and MPEG-2 AAC decoding library"
+HOMEPAGE = "http://www.audiocoding.com/faad2.html"
 SECTION = "libs"
 LICENSE = "GPLv2"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=381c8cbe277a7bc1ee2ae6083a04c958"
 
+LICENSE_FLAGS = "commercial"
+
 PR = "r1"
 
 inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-Python-3.7-fixes-2126.patch b/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-Python-3.7-fixes-2126.patch
new file mode 100644
index 0000000..e6021cd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-Python-3.7-fixes-2126.patch
@@ -0,0 +1,26 @@
+From 72564b04151b61fa8d954bbb43afc58108ee50ec Mon Sep 17 00:00:00 2001
+From: Thomas Nagy <tnagy@waf.io>
+Date: Mon, 12 Mar 2018 20:42:55 +0100
+Subject: [PATCH] Python 3.7 fixes #2126
+
+Upstream-Status: Backport
+[https://gitlab.com/ita1024/waf/commit/facdc0b173d933073832c768ec1917c553cb369c]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ waflib/Node.py | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/waflib/Node.py b/waflib/Node.py
+index fb3cd273..405a6fec 100644
+--- a/waflib/Node.py
++++ b/waflib/Node.py
+@@ -537,8 +537,6 @@ class Node(object):
+ 					if maxdepth:
+ 						for k in node.ant_iter(accept=accept, maxdepth=maxdepth - 1, pats=npats, dir=dir, src=src, remove=remove):
+ 							yield k
+-		raise StopIteration
+-
+ 	def ant_glob(self, *k, **kw):
+ 		"""
+ 		This method is used for finding files across folders. It behaves like ant patterns:
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_git.bb b/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_git.bb
index 11da6b1..52559cb 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_git.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_git.bb
@@ -14,7 +14,9 @@
 
 DEPENDS = "libsamplerate0 libsndfile1 readline"
 
-SRC_URI = "git://github.com/jackaudio/jack2.git"
+SRC_URI = "git://github.com/jackaudio/jack2.git \
+           file://0001-Python-3.7-fixes-2126.patch \
+           "
 SRCREV = "c1647819eed6d11f94b21981d9c869629299f357"
 PV = "1.9.12"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb b/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb
index 831394e..668afc8 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libmms/libmms_0.6.4.bb
@@ -10,3 +10,11 @@
 SRC_URI[sha256sum] = "3c05e05aebcbfcc044d9e8c2d4646cd8359be39a3f0ba8ce4e72a9094bee704f"
 
 inherit autotools pkgconfig
+
+do_install_append() {
+    # The GLib dependency was removed in libmms 0.6.3, but the
+    # "Requires" was not removed from the pkg-config file.  Since we
+    # don't have (and don't want) the RDEPENDS on GLib, we should
+    # remove the "Requires" line.
+    sed -i '/^Requires: glib-2\.0$/d' ${D}${libdir}/pkgconfig/libmms.pc
+}
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.3.bb b/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.3.bb
index a24f5e3..dd6789d 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.3.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.3.bb
@@ -50,3 +50,5 @@
 #| {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"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna-daemon.init.d b/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna-daemon.init.d
deleted file mode 100644
index 9e64a20..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna-daemon.init.d
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/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/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna.service b/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna.service
deleted file mode 100644
index 656100b..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/minidlna/minidlna/minidlna.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[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/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb b/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb
index de78de2..c2e8e3d 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb
@@ -31,6 +31,8 @@
     libass \
     ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \
 "
+
+PACKAGECONFIG_remove_aarch64 = "lua"
 PACKAGECONFIG[drm] = "--enable-drm,--disable-drm,libdrm"
 PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/mesa"
 PACKAGECONFIG[lua] = "--enable-lua,--disable-lua,lua luajit"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-buildsystem-do-not-assume-building-in-source-tree.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-buildsystem-do-not-assume-building-in-source-tree.patch
deleted file mode 100644
index 12609d3..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-buildsystem-do-not-assume-building-in-source-tree.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 75372b8088c20474497b79ec6cf1e99f2d17f56d Mon Sep 17 00:00:00 2001
-From: Ismo Puustinen <ismo.puustinen@intel.com>
-Date: Mon, 3 Apr 2017 13:23:38 +0300
-Subject: [PATCH] buildsystem: do not assume building in source tree.
-
-Use $(top_srcdir) as reference for include paths and buildtime scripts.
-Otherwise compilation outside of project root directory will fail
-because header and script paths are wrong.
-
-To reproduce: mkdir b; cd b; ../configure; make
-
-Upstream-status: Accepted [https://git.linuxtv.org//v4l-utils.git/commit/?id=bd98c9a99bffc8d44c54859345e4dfee0ada4275]
-
-Signed-off-by: Ismo Puustinen <ismo.puustinen@intel.com>
-
----
- utils/cec-compliance/Makefile.am  | 2 +-
- utils/cec-ctl/Makefile.am         | 2 +-
- utils/cec-follower/Makefile.am    | 4 ++--
- utils/qv4l2/Makefile.am           | 2 +-
- utils/v4l2-compliance/Makefile.am | 2 +-
- utils/v4l2-ctl/Makefile.am        | 2 +-
- 6 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/utils/cec-compliance/Makefile.am b/utils/cec-compliance/Makefile.am
-index f05fe6c..f7d1535 100644
---- a/utils/cec-compliance/Makefile.am
-+++ b/utils/cec-compliance/Makefile.am
-@@ -7,7 +7,7 @@ cec_compliance_LDFLAGS = -lrt
- cec-compliance.cpp: cec-table.h
- 
- cec-table.h: ../cec-ctl/msg2ctl.pl ../../include/linux/cec.h ../../include/linux/cec-funcs.h
--	../cec-ctl/msg2ctl.pl 2 ../../include/linux/cec.h ../../include/linux/cec-funcs.h >$@
-+	$(top_srcdir)/utils/cec-ctl/msg2ctl.pl 2 $(top_srcdir)/include/linux/cec.h $(top_srcdir)/include/linux/cec-funcs.h >$@
- 
- cec-compliance.cpp: version.h
- 
-diff --git a/utils/cec-ctl/Makefile.am b/utils/cec-ctl/Makefile.am
-index 4a6eae5..570a070 100644
---- a/utils/cec-ctl/Makefile.am
-+++ b/utils/cec-ctl/Makefile.am
-@@ -6,7 +6,7 @@ cec_ctl_SOURCES = cec-ctl.cpp
- cec-ctl.cpp: cec-ctl-gen.h
- 
- cec-ctl-gen.h: msg2ctl.pl ../../include/linux/cec.h ../../include/linux/cec-funcs.h
--	./msg2ctl.pl 0 ../../include/linux/cec.h ../../include/linux/cec-funcs.h >$@
-+	$(top_srcdir)/utils/cec-ctl/msg2ctl.pl 0 $(top_srcdir)/include/linux/cec.h $(top_srcdir)/include/linux/cec-funcs.h >$@
- 
- clean-local:
- 	-rm -vf cec-ctl-gen.h
-diff --git a/utils/cec-follower/Makefile.am b/utils/cec-follower/Makefile.am
-index d8ad292..e3553eb 100644
---- a/utils/cec-follower/Makefile.am
-+++ b/utils/cec-follower/Makefile.am
-@@ -7,12 +7,12 @@ cec_follower_LDFLAGS = -lrt
- cec-log.cpp: cec-log.h
- 
- cec-log.h: ../cec-ctl/msg2ctl.pl ../../include/linux/cec.h ../../include/linux/cec-funcs.h
--	../cec-ctl/msg2ctl.pl 1 ../../include/linux/cec.h ../../include/linux/cec-funcs.h >$@
-+	$(top_srcdir)/utils/cec-ctl/msg2ctl.pl 1 $(top_srcdir)/include/linux/cec.h $(top_srcdir)/include/linux/cec-funcs.h >$@
- 
- cec-follower.cpp: cec-table.h version.h
- 
- cec-table.h: ../cec-ctl/msg2ctl.pl ../../include/linux/cec.h ../../include/linux/cec-funcs.h
--	../cec-ctl/msg2ctl.pl 2 ../../include/linux/cec.h ../../include/linux/cec-funcs.h >$@
-+	$(top_srcdir)/utils/cec-ctl/msg2ctl.pl 2 $(top_srcdir)/include/linux/cec.h $(top_srcdir)/include/linux/cec-funcs.h >$@
- 
- version.h:
- 	@if git show-ref -s HEAD >/dev/null 2>&1; then \
-diff --git a/utils/qv4l2/Makefile.am b/utils/qv4l2/Makefile.am
-index fd58486..ccd1a2a 100644
---- a/utils/qv4l2/Makefile.am
-+++ b/utils/qv4l2/Makefile.am
-@@ -8,7 +8,7 @@ qv4l2_SOURCES = qv4l2.cpp general-tab.cpp ctrl-tab.cpp vbi-tab.cpp capture-win.c
- nodist_qv4l2_SOURCES = moc_qv4l2.cpp moc_general-tab.cpp moc_capture-win.cpp moc_vbi-tab.cpp qrc_qv4l2.cpp
- qv4l2_LDADD = ../../lib/libv4l2/libv4l2.la ../../lib/libv4lconvert/libv4lconvert.la \
-   ../libv4l2util/libv4l2util.la ../libmedia_dev/libmedia_dev.la
--qv4l2_CPPFLAGS = -I../common
-+qv4l2_CPPFLAGS = -I$(top_srcdir)/utils/common
- 
- if WITH_QTGL
- qv4l2_CPPFLAGS += $(QTGL_CFLAGS)
-diff --git a/utils/v4l2-compliance/Makefile.am b/utils/v4l2-compliance/Makefile.am
-index c2b5919..fb8d12e 100644
---- a/utils/v4l2-compliance/Makefile.am
-+++ b/utils/v4l2-compliance/Makefile.am
-@@ -5,7 +5,7 @@ DEFS :=
- v4l2_compliance_SOURCES = v4l2-compliance.cpp v4l2-test-debug.cpp v4l2-test-input-output.cpp \
- 	v4l2-test-controls.cpp v4l2-test-io-config.cpp v4l2-test-formats.cpp v4l2-test-buffers.cpp \
- 	v4l2-test-codecs.cpp v4l2-test-colors.cpp v4l2-compliance.h
--v4l2_compliance_CPPFLAGS = -I../common
-+v4l2_compliance_CPPFLAGS = -I$(top_srcdir)/utils/common
- 
- if WITH_V4L2_COMPLIANCE_LIBV4L
- v4l2_compliance_LDADD = ../../lib/libv4l2/libv4l2.la ../../lib/libv4lconvert/libv4lconvert.la -lrt -lpthread
-diff --git a/utils/v4l2-ctl/Makefile.am b/utils/v4l2-ctl/Makefile.am
-index 955647d..825e53f 100644
---- a/utils/v4l2-ctl/Makefile.am
-+++ b/utils/v4l2-ctl/Makefile.am
-@@ -7,7 +7,7 @@ v4l2_ctl_SOURCES = v4l2-ctl.cpp v4l2-ctl.h v4l2-ctl-common.cpp v4l2-ctl-tuner.cp
- 	v4l2-ctl-overlay.cpp v4l2-ctl-vbi.cpp v4l2-ctl-selection.cpp v4l2-ctl-misc.cpp \
- 	v4l2-ctl-streaming.cpp v4l2-ctl-sdr.cpp v4l2-ctl-edid.cpp v4l2-ctl-modes.cpp \
- 	v4l2-tpg-colors.c v4l2-tpg-core.c v4l-stream.c
--v4l2_ctl_CPPFLAGS = -I../common
-+v4l2_ctl_CPPFLAGS = -I$(top_srcdir)/utils/common
- 
- if WITH_V4L2_CTL_LIBV4L
- v4l2_ctl_LDADD = ../../lib/libv4l2/libv4l2.la ../../lib/libv4lconvert/libv4lconvert.la -lrt -lpthread
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-ir-ctl-Define-TEMP_FAILURE_RETRY-if-undefined.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-ir-ctl-Define-TEMP_FAILURE_RETRY-if-undefined.patch
deleted file mode 100644
index 82fc3e1..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0001-ir-ctl-Define-TEMP_FAILURE_RETRY-if-undefined.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From b2efcc20617d6317f74c4acb2a6af5b765f20b34 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 14 Jul 2017 13:11:25 -0700
-Subject: [PATCH] ir-ctl: Define TEMP_FAILURE_RETRY if undefined
-
-use strndup() instead of strndupa() which is not
-universally available in C libraries
-
-Taken from AlpineLinux
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- utils/ir-ctl/ir-ctl.c | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/utils/ir-ctl/ir-ctl.c b/utils/ir-ctl/ir-ctl.c
-index bc58cee..1a44011 100644
---- a/utils/ir-ctl/ir-ctl.c
-+++ b/utils/ir-ctl/ir-ctl.c
-@@ -42,6 +42,16 @@
- # define _(string) string
- #endif
- 
-+/* taken from glibc unistd.h */
-+#ifndef TEMP_FAILURE_RETRY
-+#define TEMP_FAILURE_RETRY(expression) \
-+  (__extension__                                                              \
-+    ({ long int __result;                                                     \
-+       do __result = (long int) (expression);                                 \
-+       while (__result == -1L && errno == EINTR);                             \
-+       __result; }))
-+#endif
-+
- # define N_(string) string
- 
- 
-@@ -344,12 +354,14 @@ static struct file *read_scancode(const char *name)
- 		return NULL;
- 	}
- 
--	pstr = strndupa(name, p - name);
-+	pstr = strndup(name, p - name);
- 
- 	if (!protocol_match(pstr, &proto)) {
- 		fprintf(stderr, _("error: protocol '%s' not found\n"), pstr);
-+		free(pstr);
- 		return NULL;
- 	}
-+	free(pstr);
- 
- 	if (!strtoscancode(p + 1, &scancode)) {
- 		fprintf(stderr, _("error: invalid scancode '%s'\n"), p + 1);
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch
index a779a30..8033fca 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch
@@ -6,17 +6,16 @@
 musl depends on external argp implementation e.g.
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
 ---
  contrib/test/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/contrib/test/Makefile.am b/contrib/test/Makefile.am
-index 4641e21..e47b948 100644
+index 0188fe2..dac07f3 100644
 --- a/contrib/test/Makefile.am
 +++ b/contrib/test/Makefile.am
-@@ -32,7 +32,7 @@ v4l2gl_LDFLAGS = $(X11_LIBS) $(GL_LIBS) $(GLU_LIBS) $(ARGP_LIBS)
- v4l2gl_LDADD = ../../lib/libv4l2/libv4l2.la ../../lib/libv4lconvert/libv4lconvert.la
+@@ -40,7 +40,7 @@ sdlcam_CFLAGS = -I../.. $(SDL2_CFLAGS)
+ sdlcam_LDADD = ../../lib/libv4l2/libv4l2.la  ../../lib/libv4lconvert/libv4lconvert.la
  
  mc_nextgen_test_CFLAGS = $(LIBUDEV_CFLAGS)
 -mc_nextgen_test_LDFLAGS = $(LIBUDEV_LIBS)
@@ -24,3 +23,6 @@
  
  
  ioctl_test_SOURCES = ioctl-test.c ioctl-test.h ioctl_32.h ioctl_64.h
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.12.3.bb b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.0.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.12.3.bb
rename to meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.0.bb
index 57cfb13..bcead00 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.12.3.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.0.bb
@@ -17,21 +17,21 @@
 
 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://0001-buildsystem-do-not-assume-building-in-source-tree.patch \
            file://mediactl-pkgconfig.patch \
            file://export-mediactl-headers.patch \
-           file://0001-ir-ctl-Define-TEMP_FAILURE_RETRY-if-undefined.patch \
            file://0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch \
            file://0003-v4l2-ctl-Do-not-use-getsubopt.patch \
            "
-SRC_URI[md5sum] = "89e1ed6c69c94e0489dc0a638c7841aa"
-SRC_URI[sha256sum] = "5a47dd6f0e7dfe902d94605c01d385a4a4e87583ff5856d6f181900ea81cf46e"
+SRC_URI[md5sum] = "21a6ec3605a1c3114c8ccb70a963c871"
+SRC_URI[sha256sum] = "f1b425584284bac378b76331c0671dc890bd7af49c03e8a6cc0c70e57eea0bad"
 
 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"
+PACKAGES =+ "media-ctl ir-keytable rc-keymaps libv4l libv4l-dev"
+
+RPROVIDES_${PN}-dbg += "libv4l-dbg"
 
 FILES_media-ctl = "${bindir}/media-ctl ${libdir}/libmediactl.so.*"
 
@@ -46,7 +46,6 @@
                  ${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/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb b/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb
index d526db2..e823e42 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb
+++ b/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb
@@ -84,13 +84,13 @@
     install -m 0644 ${S}/systemd/${BPN}.socket ${D}${systemd_unitdir}/system/${BPN}.socket
 }
 
-PACKAGES =+ "libgps libgpsd python-pygps-dbg python-pygps gpsd-udev gpsd-conf gpsd-gpsctl gps-utils"
+PACKAGES =+ "libgps libgpsd python-pygps gpsd-udev gpsd-conf gpsd-gpsctl gps-utils"
+
+RPROVIDES_${PN}-dbg += "python-pygps-dbg"
 
 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"
 
diff --git a/meta-openembedded/meta-oe/recipes-security/nmap/files/nmap-redefine-the-python-library-dir.patch b/meta-openembedded/meta-oe/recipes-security/nmap/files/nmap-redefine-the-python-library-dir.patch
new file mode 100644
index 0000000..356b507
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-security/nmap/files/nmap-redefine-the-python-library-dir.patch
@@ -0,0 +1,37 @@
+[PATCH] redefine the python library install dir
+
+Upstream-Status: Pending
+
+If install-lib is not defined, it is always /usr/lib/, but it
+maybe /usr/lib64 for multilib
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 1bb062c..cced2fb 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -311,7 +311,7 @@ build-zenmap: $(ZENMAPDIR)/setup.py $(ZENMAPDIR)/zenmapCore/Version.py
+ 
+ install-zenmap: $(ZENMAPDIR)/setup.py
+ 	$(INSTALL) -d $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
+-	cd $(ZENMAPDIR) && $(PYTHON) setup.py --quiet install --prefix "$(prefix)" --force $(if $(DESTDIR),--root "$(DESTDIR)")
++	cd $(ZENMAPDIR) && $(PYTHON) setup.py --quiet install --prefix "$(prefix)" --install-lib="${PYTHON_SITEPACKAGES_DIR}" --force $(if $(DESTDIR),--root "$(DESTDIR)")
+ 	$(INSTALL) -c -m 644 docs/zenmap.1 $(DESTDIR)$(mandir)/man1/
+ # Create a symlink from nmapfe to zenmap if nmapfe doesn't exist or is
+ # already a link.
+@@ -328,7 +328,7 @@ build-nping: $(NPINGDIR)/Makefile nbase_build nsock_build netutil_build $(NPINGD
+ 	@cd $(NPINGDIR) && $(MAKE)
+ 
+ install-ndiff:
+-	cd $(NDIFFDIR) && $(PYTHON) setup.py install --prefix "$(prefix)" $(if $(DESTDIR),--root "$(DESTDIR)")
++	cd $(NDIFFDIR) && $(PYTHON) setup.py install --prefix "$(prefix)" --install-lib="${PYTHON_SITEPACKAGES_DIR}" $(if $(DESTDIR),--root "$(DESTDIR)")
+ 
+ NSE_FILES = scripts/script.db scripts/*.nse
+ NSE_LIB_LUA_FILES = nselib/*.lua nselib/*.luadoc
+-- 
+1.9.1
+
diff --git a/meta-openembedded/meta-oe/recipes-security/nmap/files/nmap-replace-shtool-mkdir-with-coreutils-mkdir-command.patch b/meta-openembedded/meta-oe/recipes-security/nmap/files/nmap-replace-shtool-mkdir-with-coreutils-mkdir-command.patch
new file mode 100644
index 0000000..cfe043a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-security/nmap/files/nmap-replace-shtool-mkdir-with-coreutils-mkdir-command.patch
@@ -0,0 +1,48 @@
+[PATCH] replace "./shtool mkdir" with coreutils mkdir command
+
+Upstream-Status: Pending
+
+"./shtool mkdir" is used when mkdir has not -p parameter, but mkdir in today
+most release has supportted the -p parameter, not need to use shtool, and it
+can not fix the race if two process are running mkdir to create same dir
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ ncat/Makefile.in        | 4 ++--
+ nmap-update/Makefile.in | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ncat/Makefile.in b/ncat/Makefile.in
+index cfd306d..2166e08 100644
+--- a/ncat/Makefile.in
++++ b/ncat/Makefile.in
+@@ -163,11 +163,11 @@ $(NSOCKDIR)/libnsock.a: $(NSOCKDIR)/Makefile
+ 
+ install: $(TARGET)
+ 	@echo Installing Ncat;
+-	$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
++	mkdir -p -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
+ 	$(INSTALL) -c -m 755 ncat $(DESTDIR)$(bindir)/ncat
+ 	$(STRIP) -x $(DESTDIR)$(bindir)/ncat
+ 	if [ -n "$(DATAFILES)" ]; then \
+-		$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(pkgdatadir); \
++		mkdir -p -m 755 $(DESTDIR)$(pkgdatadir); \
+ 		$(INSTALL) -c -m 644 $(DATAFILES) $(DESTDIR)$(pkgdatadir)/; \
+ 	fi
+ 	$(INSTALL) -c -m 644 docs/$(TARGET).1 $(DESTDIR)$(mandir)/man1/$(TARGET).1
+diff --git a/nmap-update/Makefile.in b/nmap-update/Makefile.in
+index 89ff928..93f48d8 100644
+--- a/nmap-update/Makefile.in
++++ b/nmap-update/Makefile.in
+@@ -37,7 +37,7 @@ $(NBASELIB):
+ 	cd $(NBASEDIR) && $(MAKE)
+ 
+ install: nmap-update
+-	$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
++	mkdir -p -m 755 $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
+ 	$(INSTALL) -c -m 755 nmap-update $(DESTDIR)$(bindir)
+ 	$(STRIP) -x $(DESTDIR)$(bindir)/nmap-update
+ 	$(INSTALL) -c -m 644 ../docs/nmap-update.1 $(DESTDIR)$(mandir)/man1/
+-- 
+1.9.1
+
diff --git a/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.70.bb b/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.70.bb
new file mode 100644
index 0000000..01be151
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.70.bb
@@ -0,0 +1,48 @@
+SUMMARY = "network auditing tool"
+DESCRIPTION = "Nmap ("Network Mapper") is a free and open source (license) utility for network discovery and security auditing.\nGui support via appending to IMAGE_FEATURES x11-base in local.conf"
+SECTION = "security"
+LICENSE = "GPL-2.0"
+
+LIC_FILES_CHKSUM = "file://COPYING;beginline=7;endline=12;md5=1489288f46af415fadc4e8b6345ab9f4"
+
+SRC_URI = "http://nmap.org/dist/${BP}.tar.bz2 \
+           file://nmap-redefine-the-python-library-dir.patch \
+           file://nmap-replace-shtool-mkdir-with-coreutils-mkdir-command.patch \
+"
+
+SRC_URI[md5sum] = "84eb6fbe788e0d4918c2b1e39421bf79"
+SRC_URI[sha256sum] = "847b068955f792f4cc247593aca6dc3dc4aae12976169873247488de147a6e18"
+
+inherit autotools-brokensep pkgconfig pythonnative
+
+PACKAGECONFIG ?= "ncat nping ndiff pcap"
+
+PACKAGECONFIG[pcap] = "--with-pcap=linux, --without-pcap, libpcap, libpcap"
+PACKAGECONFIG[pcre] = "--with-libpcre=${STAGING_LIBDIR}/.., --with-libpcre=included, libpre"
+PACKAGECONFIG[ssl] = "--with-openssl=${STAGING_LIBDIR}/.., --without-openssl, openssl, openssl"
+PACKAGECONFIG[ssh2] = "--with-openssh2=${STAGING_LIBDIR}/.., --without-openssh2, libssh2, libssh2"
+PACKAGECONFIG[libz] = "--with-libz=${STAGING_LIBDIR}/.., --without-libz, zlib, zlib"
+
+#disable/enable packages
+PACKAGECONFIG[nping] = ",--without-nping,"
+PACKAGECONFIG[ncat] = ",--without-ncat,"
+PACKAGECONFIG[ndiff] = ",--without-ndiff,python"
+PACKAGECONFIG[update] = ",--without-nmap-update,"
+
+EXTRA_OECONF = "--with-libdnet=included --with-liblinear=included --without-subversion --with-liblua=included"
+
+# zenmap needs python-pygtk which has been removed
+# it also only works with python2
+# disable for now until py3 is supported
+EXTRA_OECONF += "--without-zenmap"
+
+export PYTHON_SITEPACKAGES_DIR
+
+do_configure() {
+    autoconf
+    oe_runconf
+}
+
+FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
+
+RDEPENDS_${PN} = "python"
diff --git a/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.20.00.bb b/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.20.00.bb
index b59d88f..c171963 100644
--- a/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.20.00.bb
+++ b/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.20.00.bb
@@ -7,7 +7,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://Copyright;md5=575cf2715c3bf894e1f79aec1d4eaaf5"
 SECTION = "base"
-DEPENDS = "ncurses gettext-native"
+DEPENDS = "ncurses virtual/crypt gettext-native"
 SRC_URI = " \
     http://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh/${BP}.tar.gz \
     file://0001-Enable-system-malloc-on-all-linux.patch \
diff --git a/meta-openembedded/meta-oe/recipes-shells/zsh/zsh_5.4.2.bb b/meta-openembedded/meta-oe/recipes-shells/zsh/zsh_5.4.2.bb
index 100c449..3aab65b 100644
--- a/meta-openembedded/meta-oe/recipes-shells/zsh/zsh_5.4.2.bb
+++ b/meta-openembedded/meta-oe/recipes-shells/zsh/zsh_5.4.2.bb
@@ -49,6 +49,7 @@
 
 do_install_append () {
     rm -fr ${D}/usr/share
+    rmdir --ignore-fail-on-non-empty ${D}/usr
 }
 
 pkg_postinst_${PN} () {
diff --git a/meta-openembedded/meta-oe/recipes-support/asio/asio/0001-Automatically-handle-glibc-variant-of-strerror_r-wit.patch b/meta-openembedded/meta-oe/recipes-support/asio/asio/0001-Automatically-handle-glibc-variant-of-strerror_r-wit.patch
deleted file mode 100644
index 4244b97..0000000
--- a/meta-openembedded/meta-oe/recipes-support/asio/asio/0001-Automatically-handle-glibc-variant-of-strerror_r-wit.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 45c855400842fd40f200ae9b7abf9debf4ab5436 Mon Sep 17 00:00:00 2001
-From: Christopher Kohlhoff <chris@kohlhoff.com>
-Date: Sun, 28 Aug 2016 09:21:53 +1000
-Subject: [PATCH] Automatically handle glibc variant of strerror_r without
- #ifdefs.
-
----
-Upstream-Status: Backport https://github.com/chriskohlhoff/asio/commit/443bc17d13eb5e37de780ea6e23157493cf7b3b9
- include/asio/impl/error_code.ipp | 16 +++++++---------
- 1 file changed, 7 insertions(+), 9 deletions(-)
-
-diff --git a/include/asio/impl/error_code.ipp b/include/asio/impl/error_code.ipp
-index ccb70dd..a117658 100644
---- a/include/asio/impl/error_code.ipp
-+++ b/include/asio/impl/error_code.ipp
-@@ -97,20 +97,18 @@ public:
- #if defined(__sun) || defined(__QNX__) || defined(__SYMBIAN32__)
-     using namespace std;
-     return strerror(value);
--#elif defined(__MACH__) && defined(__APPLE__) \
--  || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) \
--  || defined(_AIX) || defined(__hpux) || defined(__osf__) \
--  || defined(__ANDROID__)
--    char buf[256] = "";
--    using namespace std;
--    strerror_r(value, buf, sizeof(buf));
--    return buf;
- #else
-     char buf[256] = "";
--    return strerror_r(value, buf, sizeof(buf));
-+    using namespace std;
-+    return strerror_result(strerror_r(value, buf, sizeof(buf)), buf);
- #endif
- #endif // defined(ASIO_WINDOWS)
-   }
-+
-+private:
-+  // Helper function to adapt the result from glibc's variant of strerror_r.
-+  static const char* strerror_result(int, const char* s) { return s; }
-+  static const char* strerror_result(const char* s, const char*) { return s; }
- };
- 
- } // namespace detail
--- 
-2.9.3
-
diff --git a/meta-openembedded/meta-oe/recipes-support/asio/asio/0001-use-POSIX-poll.h-instead-of-sys-poll.h.patch b/meta-openembedded/meta-oe/recipes-support/asio/asio/0001-use-POSIX-poll.h-instead-of-sys-poll.h.patch
deleted file mode 100644
index 7f95f5a..0000000
--- a/meta-openembedded/meta-oe/recipes-support/asio/asio/0001-use-POSIX-poll.h-instead-of-sys-poll.h.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From dac36a170188917e2f61b0394ba8a2f6509ddf3a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
-Date: Tue, 8 Nov 2016 20:39:55 +0000
-Subject: [PATCH] use POSIX poll.h instead of sys/poll.h
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-POSIX specifies that <poll.h> is the correct header to
-include for poll()
-  http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html
-whereas <sys/poll.h> is only needed for ancient glibc (<2.3),
-so let's follow POSIX instead.
-
-As a side-effect, this silences numerous compilation warnings
-when compiling against the musl C-library:
-
-In file included from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/socket_types.hpp:57:0,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/impl/error_code.ipp:29,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/error_code.hpp:185,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/throw_error.hpp:19,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/impl/posix_tss_ptr.ipp:23,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/posix_tss_ptr.hpp:74,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/tss_ptr.hpp:27,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/call_stack.hpp:20,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/impl/handler_alloc_hook.ipp:19,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/handler_alloc_hook.hpp:78,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/handler_alloc_helpers.hpp:21,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/bind_handler.hpp:19,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/detail/wrapped_handler.hpp:18,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/io_service.hpp:24,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/basic_io_object.hpp:19,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/basic_socket.hpp:20,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio/basic_datagram_socket.hpp:20,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/../../../include/asio.hpp:19,
-                 from ../../../../asio-1.10.6/src/examples/cpp03/buffers/reference_counted.cpp:11:
-<sysroot>/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
- #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
-  ^~~~~~~
-
-etc.
-
-Signed-off-by: André Draszik <adraszik@tycoint.com>
----
-Upstream-Status: Submitted https://svn.boost.org/trac/boost/ticket/12419
- include/asio/detail/socket_types.hpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/asio/detail/socket_types.hpp b/include/asio/detail/socket_types.hpp
-index f2600c2..cb61b8e 100644
---- a/include/asio/detail/socket_types.hpp
-+++ b/include/asio/detail/socket_types.hpp
-@@ -54,7 +54,7 @@
- #else
- # include <sys/ioctl.h>
- # if !defined(__SYMBIAN32__)
--#  include <sys/poll.h>
-+#  include <poll.h>
- # endif
- # include <sys/types.h>
- # include <sys/stat.h>
--- 
-2.10.2
-
diff --git a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.10.6.bb b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.10.6.bb
deleted file mode 100644
index 5656039..0000000
--- a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.10.6.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require asio.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=fede5286a78559dd646e355ab0cc8f04"
-
-SRC_URI[md5sum] = "85d014a356a6e004cd30ccd4c9b6a5c2"
-SRC_URI[sha256sum] = "e0d71c40a7b1f6c1334008fb279e7361b32a063e020efd21e40d9d8ff037195e"
-
-SRC_URI += "\
-    file://0001-Automatically-handle-glibc-variant-of-strerror_r-wit.patch \
-    file://0001-use-POSIX-poll.h-instead-of-sys-poll.h.patch \
-"
diff --git a/meta-openembedded/meta-oe/recipes-support/asio/asio.inc b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.1.bb
similarity index 63%
rename from meta-openembedded/meta-oe/recipes-support/asio/asio.inc
rename to meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.1.bb
index 54f78e4..28cd9c0 100644
--- a/meta-openembedded/meta-oe/recipes-support/asio/asio.inc
+++ b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.1.bb
@@ -13,3 +13,10 @@
 inherit autotools
 
 ALLOW_EMPTY_${PN} = "1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e73f311a3af69e6df275e8c3b1c09b5"
+
+SRC_URI[md5sum] = "037854d113024f57c9753d6326b339bc"
+SRC_URI[sha256sum] = "a9091b4de847539fa5b2259bf76a5355339c7eaaa5e33d7d4ae74d614c21965a"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
diff --git a/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-add-sys-sysmacros.h-for-major-minor-macros.patch b/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-add-sys-sysmacros.h-for-major-minor-macros.patch
new file mode 100644
index 0000000..5646061
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-add-sys-sysmacros.h-for-major-minor-macros.patch
@@ -0,0 +1,26 @@
+From 13f3771655f859d5e0332dd65b9c43f572f6359d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 11 Aug 2018 16:02:06 -0700
+Subject: [PATCH] add sys/sysmacros.h for major/minor macros
+
+photosyst.c:1465:19: error: called object 'major' is not a function or function pointer
+     dmp->major  = major(statbuf.st_rdev);
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ photosyst.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/photosyst.c b/photosyst.c
+index 38828ec..caed352 100644
+--- a/photosyst.c
++++ b/photosyst.c
+@@ -152,6 +152,7 @@
+ static const char rcsid[] = "$Id: photosyst.c,v 1.38 2010/11/19 07:40:40 gerlof Exp $";
+ 
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>
diff --git a/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-include-missing-header-files.patch b/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-include-missing-header-files.patch
deleted file mode 100644
index 3708f60..0000000
--- a/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-include-missing-header-files.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 7b651793269b6b86f12c43c30b751b86def27222 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 18 Mar 2017 17:56:40 -0700
-Subject: [PATCH] include missing header files
-
-fixes build with musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- deviate.c     | 1 +
- procdbase.c   | 2 +-
- showgeneric.c | 2 +-
- showlinux.c   | 2 +-
- showprocs.c   | 2 +-
- showsys.c     | 2 +-
- 6 files changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/deviate.c b/deviate.c
-index 7cf1b49..8e615af 100644
---- a/deviate.c
-+++ b/deviate.c
-@@ -178,6 +178,7 @@ static const char rcsid[] = "$Id: deviate.c,v 1.45 2010/10/23 14:02:03 gerlof Ex
- #include <stdio.h>
- #include <errno.h>
- #include <fcntl.h>
-+#include <stdlib.h>
- #include <unistd.h>
- #include <limits.h>
- #include <memory.h>
-diff --git a/procdbase.c b/procdbase.c
-index 9cab347..0487d26 100644
---- a/procdbase.c
-+++ b/procdbase.c
-@@ -67,7 +67,7 @@ static const char rcsid[] = "$Id: procdbase.c,v 1.8 2010/04/23 12:19:35 gerlof E
- #include <fcntl.h>
- #include <unistd.h>
- #include <string.h>
--#include <malloc.h>
-+#include <stdlib.h>
- 
- #include "atop.h"
- #include "photoproc.h"
-diff --git a/showgeneric.c b/showgeneric.c
-index 775afa8..3d5be0e 100644
---- a/showgeneric.c
-+++ b/showgeneric.c
-@@ -268,7 +268,7 @@ static const char rcsid[] = "$Id: showgeneric.c,v 1.71 2010/10/25 19:08:32 gerlo
- #include <errno.h>
- #include <fcntl.h>
- #include <string.h>
--#include <termio.h>
-+#include <termios.h>
- #include <unistd.h>
- #include <stdarg.h>
- #include <curses.h>
-diff --git a/showlinux.c b/showlinux.c
-index 6e60754..aba2ee6 100644
---- a/showlinux.c
-+++ b/showlinux.c
-@@ -274,7 +274,7 @@ static const char rcsid[] = "$Id: showlinux.c,v 1.70 2010/10/23 14:04:12 gerlof
- #include <string.h>
- #include <errno.h>
- #include <fcntl.h>
--#include <termio.h>
-+#include <termios.h>
- #include <unistd.h>
- #include <stdarg.h>
- #include <curses.h>
-diff --git a/showprocs.c b/showprocs.c
-index 5194524..f0169ad 100644
---- a/showprocs.c
-+++ b/showprocs.c
-@@ -94,7 +94,7 @@ static const char rcsid[] = "$Id: showprocs.c,v 1.15 2011/09/05 11:44:16 gerlof
- #include <string.h>
- #include <errno.h>
- #include <fcntl.h>
--#include <termio.h>
-+#include <termios.h>
- #include <unistd.h>
- #include <stdarg.h>
- #include <curses.h>
-diff --git a/showsys.c b/showsys.c
-index 26331be..5a05fe5 100644
---- a/showsys.c
-+++ b/showsys.c
-@@ -80,7 +80,7 @@ static const char rcsid[] = "XXXXXX";
- #include <string.h>
- #include <errno.h>
- #include <fcntl.h>
--#include <termio.h>
-+#include <termios.h>
- #include <unistd.h>
- #include <stdarg.h>
- #include <curses.h>
--- 
-2.12.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/atop/atop_2.2.3.bb b/meta-openembedded/meta-oe/recipes-support/atop/atop_2.3.0.bb
similarity index 69%
rename from meta-openembedded/meta-oe/recipes-support/atop/atop_2.2.3.bb
rename to meta-openembedded/meta-oe/recipes-support/atop/atop_2.3.0.bb
index 1ab9e7c..302813c 100644
--- a/meta-openembedded/meta-oe/recipes-support/atop/atop_2.2.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/atop/atop_2.3.0.bb
@@ -15,21 +15,15 @@
 
 DEPENDS = "ncurses zlib"
 
-ATOP_VER = "${@'-'.join(d.getVar('PV').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://0001-include-missing-header-files.patch \
-    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}"
+SRC_URI = "http://www.atoptool.nl/download/${BP}.tar.gz \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'file://volatiles.atop.conf', 'file://volatiles.99_atop', d)} \
+           file://remove-bashisms.patch \
+           file://fix-permissions.patch \
+           file://sysvinit-implement-status.patch \
+           file://0001-add-sys-sysmacros.h-for-major-minor-macros.patch \
+           "
+SRC_URI[md5sum] = "48e1dbef8c7d826e68829a8d5fc920fc"
+SRC_URI[sha256sum] = "73e4725de0bafac8c63b032e8479e2305e3962afbe977ec1abd45f9e104eb264"
 
 do_compile() {
     oe_runmake all
@@ -37,13 +31,13 @@
 
 do_install() {
     if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        make DESTDIR=${D} VERS=${ATOP_VER} SYSDPATH=${systemd_system_unitdir} \
+        make DESTDIR=${D} VERS=${PV} 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
+        make DESTDIR=${D} VERS=${PV} 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
diff --git a/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc b/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
index 185abae..c939d4b 100644
--- a/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
+++ b/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
@@ -31,3 +31,5 @@
 
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[libselinux] = "--with-selinux,--without-selinux,libselinux"
+
+EXTRA_AUTORECONF += "-I ${S}/gnulib/m4"
diff --git a/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb b/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb
new file mode 100644
index 0000000..26e191b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb
@@ -0,0 +1,4 @@
+require augeas.inc
+
+SRC_URI[md5sum] = "6c0b2ea6eec45e8bc374b283aedf27ce"
+SRC_URI[sha256sum] = "52db256afab261d31cc147eaa1a71795a5fec59e888dfd0b65a84c7aacd6364d"
diff --git a/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.5.0.bb b/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.5.0.bb
deleted file mode 100644
index c4f62e7..0000000
--- a/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.5.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require augeas.inc
-
-SRC_URI[md5sum] = "01190e455c513124a2dae29a1182c113"
-SRC_URI[sha256sum] = "223bb6e6fe3e9e92277dafd5d34e623733eb969a72a382998d204feab253f73f"
diff --git a/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.bb b/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.bb
index 29917c8..a62e5ef 100644
--- a/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.bb
+++ b/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.bb
@@ -1,20 +1,19 @@
 DESCRIPTION = "Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems."
 AUTHOR = "Sameer Agarwal and Keir Mierle and Others"
 HOMEPAGE = "http://ceres-solver.org/"
-
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=35e00f0c4c96a0820a03e0b31e6416be"
 
+DEPENDS = "libeigen glog"
+
 SRC_URI = "git://github.com/ceres-solver/ceres-solver.git"
 SRCREV = "facb199f3eda902360f9e1d5271372b7e54febe1"
 
 S = "${WORKDIR}/git"
 
-DEPENDS = "libeigen glog"
-
 inherit cmake
 
 # Only a static library and headers are created
-ALLOW_EMPTY_${PN} = "1"
-
-FILES_${PN}-dev += "${libdir}/cmake/*"
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dev = "${PN}-staticdev"
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
diff --git a/meta-openembedded/meta-oe/recipes-support/ckermit/ckermit_302.bb b/meta-openembedded/meta-oe/recipes-support/ckermit/ckermit_302.bb
index 61c08ee..abeeecc 100644
--- a/meta-openembedded/meta-oe/recipes-support/ckermit/ckermit_302.bb
+++ b/meta-openembedded/meta-oe/recipes-support/ckermit/ckermit_302.bb
@@ -20,12 +20,6 @@
 
 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"
-CKERMIT_ADDITIONAL_libc-musl = "-DNOARROWKEYS"
-
 TARGET_CC_ARCH += "${LDFLAGS}"
 
 do_compile () {
@@ -49,7 +43,7 @@
         -DNORESEND -DNOAUTODL -DNOSTREAMING -DNOHINTS -DNOCKXYZ -DNOLEARN \
         -DNOMKDIR -DNOPERMS -DNOCKTIMERS -DNOCKREGEX -DNOREALPATH \
         -DCK_SMALL -DNOLOGDIAL -DNORENAME -DNOWHATAMI \
-        ${CKERMIT_ADDITIONAL}"
+        -DNOARROWKEYS"
 }
 
 do_install () {
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest-2.10.2/fix-cmake-install.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest-2.10.2/fix-cmake-install.patch
deleted file mode 100644
index 0feafef..0000000
--- a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest-2.10.2/fix-cmake-install.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Description: install cmake files into /usr/lib/cmake/cpprestsdk
-Author: Gianfranco Costamagna <locutusofborg@debian.org>
-Upstream-Status: https://github.com/Microsoft/cpprestsdk/pull/737
-Forwarded: https://github.com/Microsoft/cpprestsdk/pull/737
-Last-Update: 2018-04-19
-
---- cpprest-2.10.2.orig/CMakeLists.txt
-+++ cpprest-2.10.2/CMakeLists.txt
-@@ -18,7 +18,7 @@ enable_testing()
- set(WERROR ON CACHE BOOL "Treat Warnings as Errors.")
- set(CPPREST_EXCLUDE_WEBSOCKETS OFF CACHE BOOL "Exclude websockets functionality.")
- set(CPPREST_EXCLUDE_COMPRESSION OFF CACHE BOOL "Exclude compression functionality.")
--set(CPPREST_EXPORT_DIR lib/cpprestsdk CACHE STRING "Directory to install CMake config files.")
-+set(CPPREST_EXPORT_DIR lib/cmake/cpprestsdk CACHE STRING "Directory to install CMake config files.")
- set(CPPREST_INSTALL_HEADERS ON CACHE BOOL "Install header files.")
- set(CPPREST_INSTALL ON CACHE BOOL "Add install commands.")
- 
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/950-fix.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/950-fix.patch
new file mode 100644
index 0000000..3ae46a1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/950-fix.patch
@@ -0,0 +1,26 @@
+Origin: upstream
+Bug: https://github.com/Microsoft/cpprestsdk/issues/950
+Last-Update: 2018-11-04
+
+Index: cpprest/Release/src/utilities/asyncrt_utils.cpp
+===================================================================
+--- cpprest.orig/Release/src/utilities/asyncrt_utils.cpp
++++ cpprest/Release/src/utilities/asyncrt_utils.cpp
+@@ -356,7 +356,7 @@
+ inline size_t count_utf8_to_utf16(const std::string& s)
+ {
+     const size_t sSize = s.size();
+-    auto sData = reinterpret_cast<const UtilCharInternal_t* const>(s.data());
++    auto const sData = reinterpret_cast<const UtilCharInternal_t*>(s.data());
+     size_t result{ sSize };
+ 
+     for (size_t index = 0; index < sSize;)
+@@ -441,7 +441,7 @@
+ {
+     // Save repeated heap allocations, use the length of resulting sequence.
+     const size_t srcSize = s.size();
+-    auto srcData = reinterpret_cast<const UtilCharInternal_t* const>(s.data());
++    auto const srcData = reinterpret_cast<const UtilCharInternal_t*>(s.data());
+     utf16string dest(count_utf8_to_utf16(s), L'\0');
+     utf16string::value_type* const destData = &dest[0];
+     size_t destIndex = 0;
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-float-tests.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-float-tests.patch
new file mode 100644
index 0000000..75f74ec
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-float-tests.patch
@@ -0,0 +1,25 @@
+Description: new toolchain might have increased the float precision
+Author: Gianfranco Costamagna <locutusofborg@debian.org>
+Last-Update: 2017-10-28
+Forwarded: https://github.com/Microsoft/cpprestsdk/issues/576
+
+--- casablanca-2.10.0.orig/Release/tests/functional/streams/istream_tests.cpp
++++ casablanca-2.10.0/Release/tests/functional/streams/istream_tests.cpp
+@@ -1302,7 +1302,7 @@ void compare_float(float expected, float
+ {
+     compare_floating(expected, actual, FLT_EPSILON);
+ }
+-
++/*
+ TEST(extract_floating_point)
+ {
+     std::string test_string;
+@@ -1349,7 +1349,7 @@ TEST(extract_floating_point)
+             VERIFY_ARE_EQUAL(1 / expected, 1 / actual);
+     } while (!std_istream.eof());
+ }
+-
++*/
+ TEST(extract_floating_point_with_exceptions)
+ {
+     std::vector<std::pair<std::string, std::string>> tests;
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-outside-tests.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-outside-tests.patch
new file mode 100644
index 0000000..2dff0d9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-outside-tests.patch
@@ -0,0 +1,142 @@
+Description: Debian forbids calls to external websites.
+
+Author: Gianfranco Costamagna <locutus@debian.org>
+Origin: Debian
+Forwarded: not-needed
+Reviewed-By: Gianfranco Costamagna <locutusofborg@debian.org>
+Last-Update: 2015-11-25
+
+Index: casablanca/Release/tests/functional/http/client/CMakeLists.txt
+===================================================================
+--- casablanca.orig/Release/tests/functional/http/client/CMakeLists.txt
++++ casablanca/Release/tests/functional/http/client/CMakeLists.txt
+@@ -12,7 +12,6 @@
+   multiple_requests.cpp
+   oauth1_tests.cpp
+   oauth2_tests.cpp
+-  outside_tests.cpp
+   pipeline_stage_tests.cpp
+   progress_handler_tests.cpp
+   proxy_tests.cpp
+Index: casablanca/Release/tests/functional/http/client/authentication_tests.cpp
+===================================================================
+--- casablanca.orig/Release/tests/functional/http/client/authentication_tests.cpp
++++ casablanca/Release/tests/functional/http/client/authentication_tests.cpp
+@@ -663,15 +663,19 @@
+     VERIFY_ARE_EQUAL(return_code, response.status_code());
+ }
+ 
++/*
+ TEST(auth_no_data)
+ {
+     auth_test_impl(false);
+ }
++*/
+ 
++/*
+ TEST(unsuccessful_auth_with_basic_cred)
+ {
+     auth_test_impl(true);
+ }
++*/
+ 
+ TEST_FIXTURE(uri_address, set_user_options_asio_http)
+ {
+@@ -692,7 +696,7 @@
+     auto response = client.request(methods::GET).get();
+     VERIFY_ARE_EQUAL(200, response.status_code());
+ }
+-
++/*
+ TEST_FIXTURE(uri_address, set_user_options_asio_https)
+ {
+     handle_timeout([]
+@@ -714,7 +718,7 @@
+         VERIFY_IS_FALSE(v.empty());
+     });
+ }
+-
++*/
+ #endif
+ 
+ } // SUITE(authentication_tests)
+Index: casablanca/Release/tests/functional/websockets/client/authentication_tests.cpp
+===================================================================
+--- casablanca.orig/Release/tests/functional/websockets/client/authentication_tests.cpp
++++ casablanca/Release/tests/functional/websockets/client/authentication_tests.cpp
+@@ -86,7 +86,7 @@
+     }
+     return false;
+ }
+-
++/*
+ TEST(ssl_test)
+ {
+     websocket_client client;
+@@ -122,7 +122,7 @@
+         throw;
+     }
+ }
+-
++*/
+ // These tests are specific to our websocketpp based implementation.
+ #if !defined(__cplusplus_winrt)
+ 
+@@ -153,14 +153,15 @@
+         throw;
+     }
+ }
+-
++/*
+ // Test specifically for server SignalR team hit interesting cases with.
+ TEST(sni_with_older_server_test)
+ {
+     websocket_client client;
+     sni_test_impl(client);
+ }
+-
++*/
++/*
+ // WinRT doesn't expose option for disabling.
+ // No stable server is available to reliably test this.
+ // The configuration below relies on a timeout in the success case.
+@@ -188,7 +189,8 @@
+         throw;
+     }
+ }
+-
++*/
++/*
+ // Winrt doesn't allow explicitly setting server host for SNI.
+ TEST(sni_explicit_hostname)
+ {
+@@ -199,7 +201,7 @@
+     websocket_client client(config);
+     sni_test_impl(client);
+ }
+-
++*/
+ void handshake_error_test_impl(const ::utility::string_t &host)
+ {
+     websocket_client client;
+Index: casablanca/Release/tests/functional/http/client/connections_and_errors.cpp
+===================================================================
+--- casablanca.orig/Release/tests/functional/http/client/connections_and_errors.cpp
++++ casablanca/Release/tests/functional/http/client/connections_and_errors.cpp
+@@ -415,6 +415,7 @@
+ }
+ #endif
+ 
++/*
+ // Try to connect to a server on a closed port and cancel the operation.
+ TEST_FIXTURE(uri_address, cancel_bad_port)
+ {
+@@ -446,7 +447,7 @@
+ 
+     VERIFY_THROWS_HTTP_ERROR_CODE(t.get(), std::errc::operation_canceled);
+ }
+-
++*/
+ } // SUITE(connections_and_errors)
+ 
+ }}}}
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-test-timeouts.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-test-timeouts.patch
new file mode 100644
index 0000000..93c3e8a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-test-timeouts.patch
@@ -0,0 +1,103 @@
+Description: Some tests takes too long on slow architectures and timeouts
+ We can safely disable them.
+ e.g.
+ Release/tests/functional/http/client/connections_and_errors.cpp:142: error: Failure in request_timeout_microsecond: Test case timed out and is hung. Aborting all remaining test cases. Expected under 180000ms. FAILED
+
+Index: casablanca/Release/tests/functional/http/client/connections_and_errors.cpp
+===================================================================
+--- casablanca.orig/Release/tests/functional/http/client/connections_and_errors.cpp
++++ casablanca/Release/tests/functional/http/client/connections_and_errors.cpp
+@@ -127,7 +127,7 @@
+     // Try sending another request.
+     VERIFY_THROWS(client.request(methods::GET).wait(), web::http::http_exception);
+ }
+-
++/*
+ TEST_FIXTURE(uri_address, request_timeout)
+ {
+     test_http_server::scoped_server scoped(m_uri);
+@@ -146,7 +146,8 @@
+ #endif
+     t.get();
+ }
+-
++*/
++/*
+ TEST_FIXTURE(uri_address, request_timeout_microsecond)
+ {
+     pplx::task<test_request*> t;
+@@ -168,7 +169,7 @@
+     try { t.get(); }
+     catch (...) {}
+ }
+-
++*/
+ TEST_FIXTURE(uri_address, invalid_method)
+ {
+     web::http::uri uri(U("http://www.bing.com/"));
+Index: casablanca/Release/tests/functional/http/listener/requests_tests.cpp
+===================================================================
+--- casablanca.orig/Release/tests/functional/http/listener/requests_tests.cpp
++++ casablanca/Release/tests/functional/http/listener/requests_tests.cpp
+@@ -173,7 +173,7 @@
+ 
+     listener.close().wait();
+ }
+-
++/*
+ TEST_FIXTURE(uri_address, response_order)
+ {
+     http_listener listener(m_uri);
+@@ -217,7 +217,7 @@
+ 
+     listener.close().wait();
+ }
+-
++*/
+ TEST_FIXTURE(uri_address, uri_encoding, "Ignore", "Codeplex 201")
+ {
+     http_listener listener(m_uri);
+Index: casablanca/Release/tests/functional/websockets/client/authentication_tests.cpp
+===================================================================
+--- casablanca.orig/Release/tests/functional/websockets/client/authentication_tests.cpp
++++ casablanca/Release/tests/functional/websockets/client/authentication_tests.cpp
+@@ -221,7 +221,7 @@
+         VERIFY_ARE_EQUAL("TLS handshake failed", e.error_code().message());
+     }
+ }
+-
++/*
+ TEST(self_signed_cert)
+ {
+     handshake_error_test_impl(U("wss://self-signed.badssl.com/"));
+@@ -236,7 +236,7 @@
+ {
+     handshake_error_test_impl(U("wss://expired.badssl.com/"));
+ }
+-
++*/
+ #endif
+ 
+ } // SUITE(authentication_tests)
+Index: casablanca/Release/tests/functional/websockets/client/client_construction.cpp
+===================================================================
+--- casablanca.orig/Release/tests/functional/websockets/client/client_construction.cpp
++++ casablanca/Release/tests/functional/websockets/client/client_construction.cpp
+@@ -81,7 +81,7 @@
+     VERIFY_ARE_EQUAL(config2.credentials().username(), cred.username());
+ }
+ 
+-
++/*
+ // Verify that we can get the baseuri from websocket_client connect.
+ TEST_FIXTURE(uri_address, uri_test)
+ {
+@@ -101,7 +101,7 @@
+     VERIFY_ARE_EQUAL(client2.uri(), m_uri);
+     client2.close().wait();
+ }
+-
++*/
+ TEST_FIXTURE(uri_address, move_operations)
+ {
+     std::string body("hello");
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/system-brotli.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/system-brotli.patch
new file mode 100644
index 0000000..e6f6477
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/system-brotli.patch
@@ -0,0 +1,38 @@
+Description: Find system brotli
+Author: Gianfranco Costamagna <locutusofborg@debian.org>
+Forwarded: https://github.com/Microsoft/cpprestsdk/pull/952
+Last-Update: 2018-11-05
+
+--- cpprest-2.10.7.orig/Release/cmake/cpprest_find_brotli.cmake
++++ cpprest-2.10.7/Release/cmake/cpprest_find_brotli.cmake
+@@ -3,8 +3,17 @@ function(cpprest_find_brotli)
+     return()
+   endif()
+ 
+-  find_package(unofficial-brotli REQUIRED)
+ 
+-  add_library(cpprestsdk_brotli_internal INTERFACE)
+-  target_link_libraries(cpprestsdk_brotli_internal INTERFACE unofficial::brotli::brotlienc unofficial::brotli::brotlidec unofficial::brotli::brotlicommon)
++  find_package(PkgConfig)
++  pkg_check_modules(BROTLIENC libbrotlienc)
++  pkg_check_modules(BROTLIDEC libbrotlidec)
++  if(BROTLIDEC_FOUND AND BROTLIENC_FOUND)
++	  target_link_libraries(cpprest PRIVATE ${BROTLIDEC_LDFLAGS} ${BROTLIENC_LDFLAGS})
++  else(BROTLIDEC_FOUND AND BROTLIENC_FOUND)
++    find_package(unofficial-brotli REQUIRED)
++    add_library(cpprestsdk_brotli_internal INTERFACE)
++    target_link_libraries(cpprestsdk_brotli_internal INTERFACE unofficial::brotli::brotlienc unofficial::brotli::brotlidec unofficial::brotli::brotlicommon)
++    target_link_libraries(cpprest PRIVATE cpprestsdk_brotli_internal)
++  endif(BROTLIDEC_FOUND AND BROTLIENC_FOUND)
++
+ endfunction()
+--- cpprest-2.10.7.orig/Release/src/CMakeLists.txt
++++ cpprest-2.10.7/Release/src/CMakeLists.txt
+@@ -84,7 +84,6 @@ else()
+     target_compile_definitions(cpprest PRIVATE -DCPPREST_EXCLUDE_BROTLI=1)
+   else()
+     cpprest_find_brotli()
+-    target_link_libraries(cpprest PRIVATE cpprestsdk_brotli_internal)
+   endif()
+ endif()
+ 
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.2.bb b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.2.bb
deleted file mode 100644
index 2ba6fc6..0000000
--- a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.2.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design."
-SECTION = "libs/network"
-HOMEPAGE = "https://github.com/Microsoft/cpprestsdk/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${S}/../license.txt;md5=a2e15b954769218ff912468eecd6a02f"
-DEPENDS = "openssl websocketpp zlib boost"
-
-SRC_URI = "git://github.com/Microsoft/cpprestsdk.git;protocol=https;branch=master"
-
-SRC_URI += "file://fix-cmake-install.patch"
-
-# tag 2.10.2
-SRCREV= "fea848e2a77563cf2a6f28f8eab396fd6e787fbf"
-
-S = "${WORKDIR}/git/Release"
-
-inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.7.bb b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.7.bb
new file mode 100644
index 0000000..5cc6385
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.7.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design."
+SECTION = "libs/network"
+HOMEPAGE = "https://github.com/Microsoft/cpprestsdk/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${S}/license.txt;md5=a2e15b954769218ff912468eecd6a02f"
+DEPENDS = "openssl websocketpp zlib boost brotli"
+
+EXTRA_OECMAKE = "-DCPPREST_EXPORT_DIR=cmake -DCPPREST_EXCLUDE_BROTLI=OFF"
+
+SRC_URI = "git://github.com/Microsoft/cpprestsdk.git;protocol=https;branch=master \
+           file://disable-outside-tests.patch \
+           file://disable-test-timeouts.patch \
+           file://disable-float-tests.patch \
+           file://950-fix.patch \
+           file://system-brotli.patch \
+           "
+
+# tag 2.10.7
+SRCREV= "c4cef129e880a3f9c23a480e8c983793963173bb"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-support/dos2unix/dos2unix_7.4.0.bb b/meta-openembedded/meta-oe/recipes-support/dos2unix/dos2unix_7.4.0.bb
deleted file mode 100644
index 8d3c578..0000000
--- a/meta-openembedded/meta-oe/recipes-support/dos2unix/dos2unix_7.4.0.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Convert text file line endings between CRLF and LF"
-DESCRIPTION = "The Dos2unix package includes utilities dos2unix and \
-unix2dos to convert plain text files in DOS or Mac format to Unix \
-format and vice versa."
-HOMEPAGE = "http://waterlan.home.xs4all.nl/dos2unix.html"
-SECTION = "support"
-
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=1b78fca784db24f4a40e30b300787f3f"
-
-SRC_URI = "git://git.code.sf.net/p/dos2unix/dos2unix"
-
-# Release 7.4.0
-SRCREV = "1182533bde3c1fe65be2ead465e87671faa2c027"
-
-S = "${WORKDIR}/git/dos2unix"
-
-inherit gettext perlnative
-
-# The dos2unix NLS relies on po4a-native, while po4a recipe is
-# provided by meta-perl layer, so make it optional here, you
-# need have meta-perl in bblayers.conf before enabling nls in
-# PACKAGECONFIG.
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[nls] = "ENABLE_NLS=1,ENABLE_NLS=,po4a-native"
-
-EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS} LDFLAGS_USER='${LDFLAGS}'"
-EXTRA_OEMAKE_class-native = "ENABLE_NLS="
-
-do_install () {
-    oe_runmake DESTDIR="${D}${base_prefix}" install
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/eject/eject/0001-eject-Include-sys-sysmacros.h-for-major-minor.patch b/meta-openembedded/meta-oe/recipes-support/eject/eject/0001-eject-Include-sys-sysmacros.h-for-major-minor.patch
new file mode 100644
index 0000000..0551287
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/eject/eject/0001-eject-Include-sys-sysmacros.h-for-major-minor.patch
@@ -0,0 +1,27 @@
+From 433ffb21119a0f39e882dd3fea4742e64aadcc40 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 11 Aug 2018 09:56:40 -0700
+Subject: [PATCH] eject: Include sys/sysmacros.h for major/minor
+
+Fixes
+arm-bec-linux-gnueabi/gcc/arm-bec-linux-gnueabi/8.2.0/ld: eject.o: in function `GetMajorMinor':
+/usr/src/debug/eject/2.1.5-r1/eject-2.1.5/../../../../../../../workspace/sources/eject/eject.c:866: undefined reference to `major'
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ eject.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/eject.c b/eject.c
+index 47e09fe..b171218 100644
+--- a/eject.c
++++ b/eject.c
+@@ -54,6 +54,7 @@
+ #include <sys/wait.h>
+ #include <sys/mtio.h>
+ #include <sys/mount.h>
++#include <sys/sysmacros.h>
+ 
+ #if defined(__linux__)
+ #include <linux/version.h>
diff --git a/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb b/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
index 49a3d74..dec2e7a 100644
--- a/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
@@ -10,7 +10,8 @@
            file://eject-2.1.1-verbose.patch \
            file://eject-2.1.5-spaces.patch \
            file://eject-timeout.patch \
-"
+           file://0001-eject-Include-sys-sysmacros.h-for-major-minor.patch \
+           "
 
 SRC_URI[md5sum] = "b96a6d4263122f1711db12701d79f738"
 SRC_URI[sha256sum] = "ef9f7906484cfde4ba223b2682a37058f9a3c7d3bb1adda7a34a67402e2ffe55"
diff --git a/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.48.04.bb b/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.48.04.bb
index 79b2cc1..a4e5d14 100644
--- a/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.48.04.bb
+++ b/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.48.04.bb
@@ -14,7 +14,7 @@
     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"
+    ./espeak-phoneme-data "${S}/espeak-data" "." "${S}/espeak-data/phondata-manifest"
     cp -f phondata phonindex phontab "${S}/espeak-data"
 }
 
diff --git a/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc b/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc
index 60b3f73..f45455c 100644
--- a/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc
+++ b/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc
@@ -4,7 +4,8 @@
 LIC_FILES_CHKSUM = "file://License.txt;md5=cb7a20edb4c9f5f478de6523dcd7362c"
 
 SRC_URI = "http://downloads.sourceforge.net/espeak/espeak-1.48.04-source.zip \
-           file://gcc-narrowing-warning-fix.patch \
+           file://0001-Fix-build-of-shared-library-on-architectures-needing.patch \
+           file://espeak-1.48-gcc-6-fix.patch \
 "
 SRC_URI[md5sum] = "cadd7482eaafe9239546bdc09fa244c3"
 SRC_URI[sha256sum] = "bf9a17673adffcc28ff7ea18764f06136547e97bbd9edf2ec612f09b207f0659"
diff --git a/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb b/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
index 552f404..57e30f0 100644
--- a/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
+++ b/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
@@ -36,6 +36,5 @@
         rm -f ${S}/espeak-data/phon*
     fi
 
-    cp -prf ${S}/espeak-data/* ${D}${datadir}/espeak-data
-    chown -R root:root ${D}${datadir}/espeak-data
+    cp -R --no-dereference --preserve=mode,links ${S}/espeak-data/* ${D}${datadir}/espeak-data
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/espeak/files/0001-Fix-build-of-shared-library-on-architectures-needing.patch b/meta-openembedded/meta-oe/recipes-support/espeak/files/0001-Fix-build-of-shared-library-on-architectures-needing.patch
new file mode 100644
index 0000000..2590e15
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/espeak/files/0001-Fix-build-of-shared-library-on-architectures-needing.patch
@@ -0,0 +1,31 @@
+From 08a464e2b6bd31bb2bf4e258ebfa9b9d65805abf Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Fri, 27 Nov 2015 15:17:02 +0100
+Subject: [PATCH] Fix build of shared library on architectures needing -fPIC
+
+Certain architectures, like Sparc and Sparc64 require objects to be
+built with -fPIC (and not just -fpic) to be usable in shared
+libraries. On other architectures, -fPIC is the same as -fpic so this
+patch doesn't affect such architectures.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 95fe549..c293611 100755
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -110,7 +110,7 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME)
+ 
+ 
+ x_%.o: %.cpp
+-	$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -fpic -fvisibility=hidden -pedantic \
++	$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -fPIC -fvisibility=hidden -pedantic \
+ 	-I. -D LIBRARY -c -fno-exceptions  $<  -o x_$*.o
+ 
+ $(LIB_NAME): $(OBJS2)
+-- 
+2.6.3
+
diff --git a/meta-openembedded/meta-oe/recipes-support/espeak/files/espeak-1.48-gcc-6-fix.patch b/meta-openembedded/meta-oe/recipes-support/espeak/files/espeak-1.48-gcc-6-fix.patch
new file mode 100644
index 0000000..6e59c78
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/espeak/files/espeak-1.48-gcc-6-fix.patch
@@ -0,0 +1,12 @@
+diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp
+--- a/src/tr_languages.cpp
++++ b/src/tr_languages.cpp
+@@ -198,7 +198,7 @@ static const unsigned short chars_ignore_zwnj_hyphen[] = {
+ 	0x200d,  1, // zero width joiner
+ 	0, 0 };
+ 
+-const char string_ordinal[] = {0xc2,0xba,0};  // masculine ordinal character, UTF-8
++const char string_ordinal[] = {'\xc2','\xba',0};  // masculine ordinal character, UTF-8
+ 
+ 
+ static Translator* NewTranslator(void)
diff --git a/meta-openembedded/meta-oe/recipes-support/espeak/files/gcc-narrowing-warning-fix.patch b/meta-openembedded/meta-oe/recipes-support/espeak/files/gcc-narrowing-warning-fix.patch
deleted file mode 100644
index 2a9b460..0000000
--- a/meta-openembedded/meta-oe/recipes-support/espeak/files/gcc-narrowing-warning-fix.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From f09c83640b9173552fd9277c3a48619b903fa436 Mon Sep 17 00:00:00 2001
-From: "Reece H. Dunn" <msclrhd@gmail.com>
-Date: Wed, 20 Jan 2016 20:48:29 +0000
-Subject: [PATCH] Fix GCC -Wnarrowing warnings.
-
----
- src/tr_languages.cpp | 7 ++++---
- src/translate.h    | 2 +-
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
-Index: espeak-1.48.04-source/src/tr_languages.cpp
-===================================================================
---- espeak-1.48.04-source.orig/src/tr_languages.cpp
-+++ espeak-1.48.04-source/src/tr_languages.cpp
-@@ -198,8 +198,8 @@ static const unsigned short chars_ignore
- 	0x200d,  1, // zero width joiner
- 	0, 0 };
- 
--const char string_ordinal[] = {0xc2,0xba,0};  // masculine ordinal character, UTF-8
--
-+const unsigned char string_ordinal[] = {0xc2,0xba,0};  // masculine ordinal character, UTF-8
-+const unsigned char utf8_null[] = { 0 }; // null string, UTF-8
- 
- static Translator* NewTranslator(void)
- {//===================================
-@@ -296,7 +296,7 @@ static const char transpose_map_latin[]
- 	tr->langopts.replace_chars = NULL;
- 	tr->langopts.ascii_language[0] = 0;    // Non-Latin alphabet languages, use this language to speak Latin words, default is English
- 	tr->langopts.alt_alphabet_lang = L('e','n');
--	tr->langopts.roman_suffix = "";
-+	tr->langopts.roman_suffix = utf8_null;
- 
- 	SetLengthMods(tr,201);
- //	tr->langopts.length_mods = length_mods_en;
-@@ -758,7 +758,7 @@ Translator *SelectTranslator(const char
- 				tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
- 				tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_ORDINAL;
- 				tr->langopts.numbers2 = NUM2_ORDINAL_NO_AND;
--				tr->langopts.roman_suffix = string_ordinal;
-+				tr->langopts.roman_suffix = utf8_null;
- 			}
- 			else
- 			if(name2 == L_pap)
-Index: espeak-1.48.04-source/src/translate.h
-===================================================================
---- espeak-1.48.04-source.orig/src/translate.h
-+++ espeak-1.48.04-source/src/translate.h
-@@ -545,7 +545,7 @@ typedef struct {
- 	int decimal_sep;
- 	int max_digits;    // max number of digits which can be spoken as an integer number (rather than individual digits)
- 	const char *ordinal_indicator;   // UTF-8 string
--	const char *roman_suffix;    // add this (ordinal) suffix to Roman numbers (LANG=an)
-+	const unsigned char *roman_suffix;    // add this (ordinal) suffix to Roman numbers (LANG=an)
- 
- 	// bit 0, accent name before the letter name, bit 1 "capital" after letter name
- 	int accents;
diff --git a/meta-openembedded/meta-oe/recipes-support/eventlog/eventlog_0.2.13.bb b/meta-openembedded/meta-oe/recipes-support/eventlog/eventlog_0.2.13.bb
deleted file mode 100644
index 13eb794..0000000
--- a/meta-openembedded/meta-oe/recipes-support/eventlog/eventlog_0.2.13.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Replacement syslog API"
-HOMEPAGE = "http://www.balabit.com/network-security/syslog-ng/opensource-logging-system"
-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 = "https://www.balabit.com/downloads/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/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.13.bb b/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.13.bb
deleted file mode 100644
index 48c8221..0000000
--- a/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.13.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Interactive Connectivity Establishment library"
-DESCRIPTION = "Libnice is an implementation of the IETF's draft Interactive Connectivity Establishment standard (ICE)."
-HOMEPAGE = "http://nice.freedesktop.org/wiki/"
-SRC_URI = "http://nice.freedesktop.org/releases/libnice-${PV}.tar.gz"
-SRC_URI[md5sum] = "3226faeaf48a9150ada00da2e2865959"
-SRC_URI[sha256sum] = "61112d9f3be933a827c8365f20551563953af6718057928f51f487bfe88419e1"
-
-LICENSE = "LGPLv2.1 & MPLv1.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=9c42325015702feda4f4d2f19a55b767 \
-                    file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-                    file://COPYING.MPL;md5=3c617710e51cdbe0fc00716f056dfb1a \
-"
-
-DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[gupnp] = "--enable-gupnp,--disable-gupnp,gupnp-igd"
-
-inherit autotools pkgconfig gtk-doc gobject-introspection
-
-FILES_${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la"
-FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
-FILES_${PN}-dbg += "${libdir}/gstreamer-1.0/.debug"
-
-do_configure_prepend() {
-    mkdir ${S}/m4 || true
-}
-
-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
-}
diff --git a/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.14.bb b/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.14.bb
new file mode 100644
index 0000000..775257f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.14.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Interactive Connectivity Establishment library"
+DESCRIPTION = "Libnice is an implementation of the IETF's draft Interactive Connectivity Establishment standard (ICE)."
+HOMEPAGE = "http://nice.freedesktop.org/wiki/"
+SRC_URI = "http://nice.freedesktop.org/releases/libnice-${PV}.tar.gz"
+SRC_URI[md5sum] = "c9b9b74b8ae1b3890e4bd93f1b70e8ff"
+SRC_URI[sha256sum] = "be120ba95d4490436f0da077ffa8f767bf727b82decf2bf499e39becc027809c"
+
+LICENSE = "LGPLv2.1 & MPLv1.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9c42325015702feda4f4d2f19a55b767 \
+                    file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+                    file://COPYING.MPL;md5=3c617710e51cdbe0fc00716f056dfb1a \
+"
+
+DEPENDS = "glib-2.0 gnutls"
+
+PACKAGECONFIG ??= "gstreamer1.0"
+PACKAGECONFIG[gupnp] = "--enable-gupnp,--disable-gupnp,gupnp-igd"
+PACKAGECONFIG[gstreamer0.10] = "--with-gstreamer-0.10,--without-gstreamer-0.10,gstreamer gst-plugins-base"
+PACKAGECONFIG[gstreamer1.0] = "--with-gstreamer,--without-gstreamer,gstreamer1.0 gstreamer1.0-plugins-base"
+
+inherit autotools pkgconfig gtk-doc gobject-introspection
+
+FILES_${PN} += "${libdir}/gstreamer-0.10/*.so ${libdir}/gstreamer-1.0/*.so"
+FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-1.0/*.la"
+FILES_${PN}-staticdev += "${libdir}/gstreamer-0.10/*.a ${libdir}/gstreamer-1.0/*.a"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug ${libdir}/gstreamer-1.0/.debug"
+
+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
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb b/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb
index 5f6f990..b768553 100644
--- a/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb
@@ -14,8 +14,6 @@
     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}"
diff --git a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.7.bb b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.8.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.7.bb
rename to meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.8.bb
index aae6ec9..d9e0ea3 100644
--- a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.8.bb
@@ -7,8 +7,8 @@
     http://www.fftw.org/fftw-${PV}.tar.gz \
     file://0001-NEON-autodetection-segfaults-assume-neon-present.patch \
 "
-SRC_URI[md5sum] = "0d5915d7d39b3253c1cc05030d79ac47"
-SRC_URI[sha256sum] = "3b609b7feba5230e8f6dd8d245ddbefac324c5a6ae4186947670d9ac2cd25573"
+SRC_URI[md5sum] = "8aac833c943d8e90d51b697b27d4384d"
+SRC_URI[sha256sum] = "6113262f6e92c5bd474f2875fa1b01054c4ad5040f6b0da7c03c98821d9ae303"
 
 inherit autotools pkgconfig
 
@@ -19,7 +19,10 @@
 
 CFLAGS += "-D_GNU_SOURCE"
 
+# neon is optional for arm version < 8 -> check tune features
 FFTW_NEON = "${@bb.utils.contains('TUNE_FEATURES', 'neon', '--enable-neon', '', d)}"
+# neon is suppored for arm version = 8 -> enable
+FFTW_NEON_aarch64 = "--enable-neon"
 FFTW_NEON_class-native = ""
 
 do_configure() {
diff --git a/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc b/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
index dbe700a..d3416c8 100644
--- a/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
+++ b/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
@@ -12,9 +12,9 @@
     file://0002-always-build-fluid-and-export-pointers.patch \
 "
 
-PV = "1.3.4-1"
-SRC_URI[md5sum] = "d7fcd27ab928648e1a1366dd2e273970"
-SRC_URI[sha256sum] = "7fb2c8882433ce694e6900c94fda505e8f4ed3fa9c7e597007098a33b85c53f4"
+PV = "1.3.4-2"
+SRC_URI[md5sum] = "b8e291343357e49dd81a22408744e400"
+SRC_URI[sha256sum] = "25d349c18c99508737d48f225a2eb26a43338f9247551cab72a317fa42cda910"
 
 inherit cmake pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-support/gd/gd/0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch b/meta-openembedded/meta-oe/recipes-support/gd/gd/0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch
new file mode 100644
index 0000000..c377b37
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gd/gd/0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch
@@ -0,0 +1,46 @@
+From 85c7694a5cf34597909bdd1ca6931b0f99904c2e Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Tue, 19 Jun 2018 00:40:49 -0700
+Subject: [PATCH] annotate.c/gdft.c: Replace strncpy with memccpy to fix
+ -Wstringop-truncation.
+
+Fixed for gcc8:
+git/src/gdft.c:1699:2: error: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
+
+Upstream-Status: Submitted [https://github.com/libgd/libgd/pull/442]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ src/annotate.c | 2 +-
+ src/gdft.c     | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/annotate.c b/src/annotate.c
+index 00aaf49..17df813 100644
+--- a/src/annotate.c
++++ b/src/annotate.c
+@@ -104,7 +104,7 @@ int main(int argc, char *argv[])
+ 					fprintf(stderr, "Font maximum length is 1024, %d given\n", font_len);
+ 					goto badLine;
+ 				}
+-				strncpy(font, st, font_len);
++				memcpy(font, st, font_len);
+ 			}
+ 		} else if(!strcmp(st, "align")) {
+ 			char *st = strtok(0, " \t\r\n");
+diff --git a/src/gdft.c b/src/gdft.c
+index 9fa8295..81dbe41 100644
+--- a/src/gdft.c
++++ b/src/gdft.c
+@@ -1696,7 +1696,7 @@ static char * font_path(char **fontpath, char *name_list)
+ 		gdFree(path);
+ 		return "could not alloc full list of fonts";
+ 	}
+-	strncpy(fontlist, name_list, name_list_len);
++	memcpy(fontlist, name_list, name_list_len);
+ 	fontlist[name_list_len] = 0;
+ 
+ 	/*
+-- 
+2.10.2
+
diff --git a/meta-openembedded/meta-oe/recipes-support/gd/gd/CVE-2018-1000222.patch b/meta-openembedded/meta-oe/recipes-support/gd/gd/CVE-2018-1000222.patch
new file mode 100644
index 0000000..25924d1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gd/gd/CVE-2018-1000222.patch
@@ -0,0 +1,82 @@
+From 4b1e18a00ce7c4b7e6919c3b3109a034393b805a Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sat, 14 Jul 2018 13:54:08 -0400
+Subject: [PATCH] bmp: check return value in gdImageBmpPtr
+
+Closes #447.
+
+(cherry picked from commit ac16bdf2d41724b5a65255d4c28fb0ec46bc42f5)
+
+Upstream-Status: Backport [https://github.com/libgd/libgd/commit/4b1e18a00ce7c4b7e6919c3b3109a034393b805a]
+CVE: CVE-2018-1000222
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ src/gd_bmp.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/src/gd_bmp.c b/src/gd_bmp.c
+index ccafdcd..d625da1 100644
+--- a/src/gd_bmp.c
++++ b/src/gd_bmp.c
+@@ -48,6 +48,8 @@ static int bmp_read_4bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
+ static int bmp_read_8bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp_hdr_t *header);
+ static int bmp_read_rle(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info);
+ 
++static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression);
++
+ #define BMP_DEBUG(s)
+ 
+ static int gdBMPPutWord(gdIOCtx *out, int w)
+@@ -88,8 +90,10 @@ BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression)
+ 	void *rv;
+ 	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
+ 	if (out == NULL) return NULL;
+-	gdImageBmpCtx(im, out, compression);
+-	rv = gdDPExtractData(out, size);
++	if (!_gdImageBmpCtx(im, out, compression))
++		rv = gdDPExtractData(out, size);
++	else
++		rv = NULL;
+ 	out->gd_free(out);
+ 	return rv;
+ }
+@@ -142,6 +146,11 @@ BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression)
+ 		compression - whether to apply RLE or not.
+ */
+ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
++{
++	_gdImageBmpCtx(im, out, compression);
++}
++
++static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
+ {
+ 	int bitmap_size = 0, info_size, total_size, padding;
+ 	int i, row, xpos, pixel;
+@@ -149,6 +158,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
+ 	unsigned char *uncompressed_row = NULL, *uncompressed_row_start = NULL;
+ 	FILE *tmpfile_for_compression = NULL;
+ 	gdIOCtxPtr out_original = NULL;
++	int ret = 1;
+ 
+ 	/* No compression if its true colour or we don't support seek */
+ 	if (im->trueColor) {
+@@ -326,6 +336,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
+ 		out_original = NULL;
+ 	}
+ 
++	ret = 0;
+ cleanup:
+ 	if (tmpfile_for_compression) {
+ #ifdef _WIN32
+@@ -339,7 +350,7 @@ cleanup:
+ 	if (out_original) {
+ 		out_original->gd_free(out_original);
+ 	}
+-	return;
++	return ret;
+ }
+ 
+ static int compress_row(unsigned char *row, int length)
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/gd/gd_2.2.5.bb b/meta-openembedded/meta-oe/recipes-support/gd/gd_2.2.5.bb
index 63d9acf..548d2c5 100644
--- a/meta-openembedded/meta-oe/recipes-support/gd/gd_2.2.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gd/gd_2.2.5.bb
@@ -14,6 +14,8 @@
 DEPENDS = "freetype libpng jpeg zlib tiff"
 
 SRC_URI = "git://github.com/libgd/libgd.git;branch=GD-2.2 \
+           file://0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch \
+           file://CVE-2018-1000222.patch \
           "
 
 SRCREV = "8255231b68889597d04d451a72438ab92a405aba"
diff --git a/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.0.bb b/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.0.bb
index 28b652a..29a1125 100644
--- a/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.0.bb
@@ -1,7 +1,5 @@
 DESCRIPTION = "The gflags package contains a C++ library that implements commandline flags processing. It includes built-in support for standard types such as string and the ability to define flags in the source file in which they are used"
-
 HOMEPAGE = "https://github.com/gflags/gflags"
-
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://COPYING.txt;md5=c80d1a3b623f72bb85a4c75b556551df"
 
@@ -10,14 +8,13 @@
 
 S = "${WORKDIR}/git"
 
-FILES_${PN}-dev += "${libdir}/cmake"
-
 inherit cmake
 
 EXTRA_OECMAKE="-DBUILD_SHARED_LIBS=ON -DREGISTER_INSTALL_PREFIX=OFF -DLIB_INSTALL_DIR=${baselib}"
 
 PACKAGES =+ "${PN}-bash-completion"
 FILES_${PN}-bash-completion += "${bindir}/gflags_completions.sh"
+
 RDEPENDS_${PN}-bash-completion = "bash bash-completion"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-Rework-CMake-glog-VERSION-management.patch b/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-Rework-CMake-glog-VERSION-management.patch
new file mode 100644
index 0000000..f41a6c9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-Rework-CMake-glog-VERSION-management.patch
@@ -0,0 +1,71 @@
+From 4ea11e0d7c0575316a6ccc07a931164ca29c3d2f Mon Sep 17 00:00:00 2001
+From: Corentin Le Molgat <corentinl@google.com>
+Date: Mon, 29 Jan 2018 14:59:08 +0100
+Subject: [PATCH] Rework CMake glog VERSION management.
+
+- Use of Project version properties instead of custom variables
+- fix missmatch between VERSION (build version) and SOVERSION (API version)
+src: https://cmake.org/cmake/help/latest/prop_tgt/VERSION.html#prop_tgt:VERSION
+
+Upstream-Status: Backport [https://github.com/google/glog/commit/6b6e38a7d53fe01f42ce34384cf4ba4c50e8cb65]
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ CMakeLists.txt | 23 ++++++++---------------
+ 1 file changed, 8 insertions(+), 15 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7415eab..fb4e408 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -8,23 +8,16 @@ if (POLICY CMP0063)
+   cmake_policy (SET CMP0063 NEW)
+ endif (POLICY CMP0063)
+ 
+-project (google-glog)
++project(glog VERSION 0.3.5 LANGUAGES C CXX)
+ 
+ enable_testing ()
+ 
+-set (GLOG_MAJOR_VERSION 0)
+-set (GLOG_MINOR_VERSION 3)
+-set (GLOG_PATCH_VERSION 5)
+-
+-set (GLOG_VERSION
+-  ${GLOG_MAJOR_VERSION}.${GLOG_MINOR_VERSION}.${GLOG_PATCH_VERSION})
+-
+ set (CPACK_PACKAGE_NAME glog)
+ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "")
+-set (CPACK_PACKAGE_VERSION_MAJOR ${GLOG_MAJOR_VERSION})
+-set (CPACK_PACKAGE_VERSION_MINOR ${GLOG_MINOR_VERSION})
+-set (CPACK_PACKAGE_VERSION_PATCH ${GLOG_PATCH_VERSION})
+-set (CPACK_PACKAGE_VERSION ${GLOG_VERSION})
++set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
++set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
++set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
++set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
+ 
+ option (WITH_GFLAGS "Use gflags" ON)
+ option (WITH_THREADS "Enable multithreading support" ON)
+@@ -406,8 +399,8 @@ if (gflags_FOUND)
+   endif (NOT BUILD_SHARED_LIBS)
+ endif (gflags_FOUND)
+ 
+-set_target_properties (glog PROPERTIES VERSION ${GLOG_MAJOR_VERSION})
+-set_target_properties (glog PROPERTIES SOVERSION ${GLOG_VERSION})
++set_target_properties (glog PROPERTIES VERSION ${PROJECT_VERSION})
++set_target_properties (glog PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR})
+ 
+ if (WIN32)
+   target_compile_definitions (glog PUBLIC GLOG_NO_ABBREVIATED_SEVERITIES)
+@@ -570,7 +563,7 @@ configure_package_config_file (glog-config.cmake.in
+   NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+ 
+ write_basic_package_version_file (glog-config-version.cmake VERSION
+-  ${GLOG_VERSION} COMPATIBILITY SameMajorVersion)
++  ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion)
+ 
+ export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
+ export (PACKAGE glog)
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-configure.ac-Allow-user-to-disable-gflags.patch b/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-configure.ac-Allow-user-to-disable-gflags.patch
deleted file mode 100644
index 596281f..0000000
--- a/meta-openembedded/meta-oe/recipes-support/glog/glog/0001-configure.ac-Allow-user-to-disable-gflags.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 0fabde0515e180c53961c27346dd7a79cffa4c1f Mon Sep 17 00:00:00 2001
-From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
-Date: Thu, 11 Aug 2016 11:49:36 +0200
-Subject: [PATCH] configure.ac: Allow user to disable gflags
-
-Under some circumstances like cross-compilation, the user might not want
-to enable support for gflags.
-
-This patch allows support for --without-gflags
-
-Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
----
- configure.ac | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 7b4d21e7ae8a..eba5e5cda1ea 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -136,7 +136,11 @@ AC_ARG_WITH(gflags, AS_HELP_STRING[--with-gflags=GFLAGS_DIR],
-   CFLAGS="$CFLAGS $GFLAGS_CFLAGS"
-   LIBS="$LIBS $GFLAGS_LIBS"
- )
--AC_CHECK_LIB(gflags, main, ac_cv_have_libgflags=1, ac_cv_have_libgflags=0)
-+if test x"$with_gflags" = x"no"; then
-+  ac_cv_have_libgflags=0
-+else
-+  AC_CHECK_LIB(gflags, main, ac_cv_have_libgflags=1, ac_cv_have_libgflags=0)
-+fi
- if test x"$ac_cv_have_libgflags" = x"1"; then
-   AC_DEFINE(HAVE_LIB_GFLAGS, 1, [define if you have google gflags library])
-   if test x"$GFLAGS_LIBS" = x""; then
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog/0002-Find-Libunwind-during-configure.patch b/meta-openembedded/meta-oe/recipes-support/glog/glog/0002-Find-Libunwind-during-configure.patch
new file mode 100644
index 0000000..15cf67f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/glog/glog/0002-Find-Libunwind-during-configure.patch
@@ -0,0 +1,120 @@
+diff -uNr a/cmake/FindLibunwind.cmake b/cmake/FindLibunwind.cmake
+--- a/cmake/FindLibunwind.cmake	1970-01-01 01:00:00.000000000 +0100
++++ b/cmake/FindLibunwind.cmake	2018-11-20 15:53:48.799078114 +0100
+@@ -0,0 +1,54 @@
++# - Try to find libunwind
++# Once done this will define
++#
++#  Libunwind_FOUND - system has libunwind
++#  unwind - cmake target for libunwind
++
++find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
++include (CheckIncludeFile)
++check_include_file (libunwind.h HAVE_LIBUNWIND_H)
++check_include_file (unwind.h HAVE_UNWIND_H)
++
++if (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
++    set(LIBUNWIND_ARCH "arm")
++elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
++    set(LIBUNWIND_ARCH "aarch64")
++elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR
++        CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" OR
++        CMAKE_SYSTEM_PROCESSOR STREQUAL "corei7-64")
++    set(LIBUNWIND_ARCH "x86_64")
++elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
++    set(LIBUNWIND_ARCH "x86")
++elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64")
++    set(LIBUNWIND_ARCH "ppc64")
++elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc")
++    set(LIBUNWIND_ARCH "ppc32")
++elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
++    set(LIBUNWIND_ARCH "mips")
++elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^hppa")
++    set(LIBUNWIND_ARCH "hppa")
++elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^ia64")
++    set(LIBUNWIND_ARCH "ia64")
++endif()
++
++find_library (UNWIND_LIBRARY_PLATFORM NAMES "unwind-${LIBUNWIND_ARCH}" DOC "unwind library platform")
++if (UNWIND_LIBRARY_PLATFORM)
++    set(HAVE_LIB_UNWIND "1")
++endif()
++
++include(FindPackageHandleStandardArgs)
++# handle the QUIETLY and REQUIRED arguments and set Libunwind_FOUND to TRUE
++# if all listed variables are TRUE
++find_package_handle_standard_args(Libunwind DEFAULT_MSG
++    UNWIND_LIBRARY HAVE_LIBUNWIND_H HAVE_UNWIND_H HAVE_LIB_UNWIND)
++
++mark_as_advanced (UNWIND_LIBRARY UNWIND_LIBRARY_PLATFORM)
++
++if (Libunwind_FOUND)
++    add_library(unwind INTERFACE IMPORTED)
++    set_target_properties(unwind PROPERTIES
++        INTERFACE_LINK_LIBRARIES "${UNWIND_LIBRARY};${UNWIND_LIBRARY_PLATFORM}"
++    )
++else()
++    message("Can't find libunwind library")
++endif()
+diff -uNr a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt	2018-11-20 15:49:07.576278417 +0100
++++ b/CMakeLists.txt	2018-11-20 15:49:32.106819928 +0100
+@@ -58,7 +58,6 @@
+ check_include_file (execinfo.h HAVE_EXECINFO_H)
+ check_include_file (glob.h HAVE_GLOB_H)
+ check_include_file (inttypes.h HAVE_INTTYPES_H)
+-check_include_file (libunwind.h HAVE_LIBUNWIND_H)
+ check_include_file (memory.h HAVE_MEMORY_H)
+ check_include_file (pwd.h HAVE_PWD_H)
+ check_include_file (stdint.h HAVE_STDINT_H)
+@@ -74,7 +73,6 @@
+ check_include_file (syslog.h HAVE_SYSLOG_H)
+ check_include_file (ucontext.h HAVE_UCONTEXT_H)
+ check_include_file (unistd.h HAVE_UNISTD_H)
+-check_include_file (unwind.h HAVE_UNWIND_H)
+ 
+ check_include_file_cxx ("ext/hash_map" HAVE_EXT_HASH_MAP)
+ check_include_file_cxx ("ext/hash_set" HAVE_EXT_HASH_SET)
+@@ -109,10 +107,7 @@
+ # snprintf as an inline function
+ check_symbol_exists (snprintf stdio.h HAVE_SNPRINTF)
+ 
+-check_library_exists (unwind get_static_proc_name "" HAVE_LIB_UNWIND)
+-
+-find_library (UNWIND_LIBRARY NAMES unwind DOC "unwind library")
+-mark_as_advanced (UNWIND_LIBRARY)
++find_package(Libunwind)
+ 
+ check_c_source_compiles ("
+ #include <stdlib.h>
+@@ -376,9 +371,9 @@
+ 
+ set_target_properties (glog PROPERTIES POSITION_INDEPENDENT_CODE ON)
+ 
+-if (UNWIND_LIBRARY)
+-  target_link_libraries (glog PUBLIC ${UNWIND_LIBRARY})
+-endif (UNWIND_LIBRARY)
++if (Libunwind_FOUND)
++  target_link_libraries (glog PUBLIC unwind)
++endif (Libunwind_FOUND)
+ 
+ if (HAVE_PTHREAD)
+   target_link_libraries (glog PUBLIC ${CMAKE_THREAD_LIBS_INIT})
+@@ -571,6 +566,7 @@
+ install (FILES
+   ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
+   ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
++  ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLibunwind.cmake
+   DESTINATION lib/cmake/glog)
+ 
+ install (EXPORT glog-targets NAMESPACE glog:: DESTINATION lib/cmake/glog)
+diff -uNr a/glog-config.cmake.in b/glog-config.cmake.in
+--- a/glog-config.cmake.in	2018-11-20 15:49:07.576278417 +0100
++++ b/glog-config.cmake.in	2018-11-20 15:52:32.330418489 +0100
+@@ -4,4 +4,6 @@
+ 
+ @gflags_DEPENDENCY@
+ 
++find_dependency (Libunwind)
++
+ include ("${CMAKE_CURRENT_LIST_DIR}/glog-targets.cmake")
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog/0003-installation-path-fix.patch b/meta-openembedded/meta-oe/recipes-support/glog/glog/0003-installation-path-fix.patch
new file mode 100644
index 0000000..641f70c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/glog/glog/0003-installation-path-fix.patch
@@ -0,0 +1,65 @@
+diff -uNr a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt	2018-12-05 12:55:59.630792054 +0100
++++ b/CMakeLists.txt	2018-12-05 13:00:22.922269200 +0100
+@@ -403,10 +403,15 @@
+ 
+ set_target_properties (glog PROPERTIES PUBLIC_HEADER "${GLOG_PUBLIC_H}")
+ 
++set (_glog_CMake_BINDIR ${CMAKE_INSTALL_BINDIR})
++set (_glog_CMake_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR})
++set (_glog_CMake_LIBDIR ${CMAKE_INSTALL_LIBDIR})
++set (_glog_CMake_INSTALLDIR ${_glog_CMake_LIBDIR}/cmake/glog)
++
+ target_include_directories (glog BEFORE PUBLIC
+   "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
+   "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>"
+-  "$<INSTALL_INTERFACE:include>"
++  "$<INSTALL_INTERFACE:${_glog_CMake_INCLUDE_DIR}>"
+   PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
+   PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
+ 
+@@ -543,10 +548,10 @@
+ 
+ install (TARGETS glog
+   EXPORT glog-targets
+-  RUNTIME DESTINATION bin
+-  PUBLIC_HEADER DESTINATION include/glog
+-  LIBRARY DESTINATION lib
+-  ARCHIVE DESTINATION lib)
++  RUNTIME DESTINATION ${_glog_CMake_BINDIR}
++  PUBLIC_HEADER DESTINATION ${_glog_CMake_INCLUDE_DIR}/glog
++  LIBRARY DESTINATION ${_glog_CMake_LIBDIR}
++  ARCHIVE DESTINATION ${_glog_CMake_LIBDIR})
+ 
+ if (gflags_FOUND)
+   set (gflags_DEPENDENCY "find_dependency (gflags ${gflags_VERSION})")
+@@ -554,7 +559,7 @@
+ 
+ configure_package_config_file (glog-config.cmake.in
+   ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
+-  INSTALL_DESTINATION lib/cmake/glog
++  INSTALL_DESTINATION ${_glog_CMake_INSTALLDIR}
+   NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+ 
+ write_basic_package_version_file (glog-config-version.cmake VERSION
+@@ -567,6 +572,7 @@
+   ${CMAKE_CURRENT_BINARY_DIR}/glog-config.cmake
+   ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake
+   ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLibunwind.cmake
+-  DESTINATION lib/cmake/glog)
++  DESTINATION ${_glog_CMake_INSTALLDIR})
+ 
+-install (EXPORT glog-targets NAMESPACE glog:: DESTINATION lib/cmake/glog)
++install (EXPORT glog-targets NAMESPACE glog:: DESTINATION
++  ${_glog_CMake_INSTALLDIR})
+diff -uNr a/glog-config.cmake.in b/glog-config.cmake.in
+--- a/glog-config.cmake.in	2018-12-05 12:55:59.630792054 +0100
++++ b/glog-config.cmake.in	2018-12-05 13:05:19.547196843 +0100
+@@ -4,6 +4,7 @@
+ 
+ @gflags_DEPENDENCY@
+ 
++list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
+ find_dependency (Libunwind)
+ 
+ include ("${CMAKE_CURRENT_LIST_DIR}/glog-targets.cmake")
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.4.bb b/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.4.bb
deleted file mode 100644
index d7c1974..0000000
--- a/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.4.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "The glog library implements application-level logging. This \
-library provides logging APIs based on C++-style streams and various helper \
-macros."
-HOMEPAGE = "https://github.com/google/glog"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=dc9db360e0bbd4e46672f3fd91dd6c4b"
-
-DEPENDS = "libunwind"
-
-SRC_URI = " \
-    git://github.com/google/glog.git \
-    file://0001-configure.ac-Allow-user-to-disable-gflags.patch \
-"
-
-SRCREV = "d8cb47f77d1c31779f3ff890e1a5748483778d6a"
-
-S = "${WORKDIR}/git"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[gflags] = ",--without-gflags,gflags,"
-
-inherit autotools pkgconfig
diff --git a/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb b/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb
new file mode 100644
index 0000000..3de01ef
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "The glog library implements application-level logging. This \
+library provides logging APIs based on C++-style streams and various helper \
+macros."
+HOMEPAGE = "https://github.com/google/glog"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dc9db360e0bbd4e46672f3fd91dd6c4b"
+
+DEPENDS = "libunwind"
+
+SRC_URI = " \
+    git://github.com/google/glog.git;branch=v035 \
+    file://0001-Rework-CMake-glog-VERSION-management.patch \
+    file://0002-Find-Libunwind-during-configure.patch \
+    file://0003-installation-path-fix.patch \
+"
+
+SRCREV = "a6a166db069520dbbd653c97c2e5b12e08a8bb26"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+RDEPENDS_${PN} += "libunwind"
+
+EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"
diff --git a/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib/CVE-2018-17942.patch b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib/CVE-2018-17942.patch
new file mode 100644
index 0000000..77e82b1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib/CVE-2018-17942.patch
@@ -0,0 +1,88 @@
+From e91600a7aae3bafbefbe13abf771e61badd16286 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Tue, 16 Oct 2018 14:26:11 +0800
+Subject: [PATCH] vasnprintf: Fix heap memory overrun bug.
+
+Reported by Ben Pfaff <blp@cs.stanford.edu> in
+<https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00107.html>.
+
+* lib/vasnprintf.c (convert_to_decimal): Allocate one more byte of
+memory.
+* tests/test-vasnprintf.c (test_function): Add another test.
+
+Upstream-Status: Backport [http://git.savannah.gnu.org/gitweb/?p=gnulib.git;
+a=commitdiff;h=278b4175c9d7dd47c1a3071554aac02add3b3c35]
+
+CVE: CVE-2018-17942
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ ChangeLog               |  8 ++++++++
+ lib/vasnprintf.c        |  4 +++-
+ tests/test-vasnprintf.c | 19 ++++++++++++++++++-
+ 3 files changed, 29 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 9864353..5ff76a3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,11 @@
++2018-09-23  Bruno Haible  <bruno@clisp.org>
++ 	vasnprintf: Fix heap memory overrun bug.
++	Reported by Ben Pfaff <blp@cs.stanford.edu> in
++	<https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00107.html>.
++	* lib/vasnprintf.c (convert_to_decimal): Allocate one more byte of
++	memory.
++	* tests/test-vasnprintf.c (test_function): Add another test.
++
+ 2017-08-21  Paul Eggert  <eggert@cs.ucla.edu>
+ 
+ 	vc-list-files: port to Solaris 10
+diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
+index 2e4eb19..45de49f 100644
+--- a/lib/vasnprintf.c
++++ b/lib/vasnprintf.c
+@@ -860,7 +860,9 @@ convert_to_decimal (mpn_t a, size_t extra_zeroes)
+   size_t a_len = a.nlimbs;
+   /* 0.03345 is slightly larger than log(2)/(9*log(10)).  */
+   size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1);
+-  char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes));
++  /* We need extra_zeroes bytes for zeroes, followed by c_len bytes for the
++     digits of a, followed by 1 byte for the terminating NUL.  */
++  char *c_ptr = (char *) malloc (xsum (xsum (extra_zeroes, c_len), 1));
+   if (c_ptr != NULL)
+     {
+       char *d_ptr = c_ptr;
+diff --git a/tests/test-vasnprintf.c b/tests/test-vasnprintf.c
+index 2dd869f..ff68d5c 100644
+--- a/tests/test-vasnprintf.c
++++ b/tests/test-vasnprintf.c
+@@ -53,7 +53,24 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
+       ASSERT (result != NULL);
+       ASSERT (strcmp (result, "12345") == 0);
+       ASSERT (length == 5);
+-      if (size < 6)
++      if (size < 5 + 1)
++        ASSERT (result != buf);
++      ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0);
++      if (result != buf)
++        free (result);
++    }
++   /* Note: This test assumes IEEE 754 representation of 'double' floats.  */
++  for (size = 0; size <= 8; size++)
++    {
++      size_t length;
++      char *result;
++       memcpy (buf, "DEADBEEF", 8);
++      length = size;
++      result = my_asnprintf (buf, &length, "%2.0f", 1.6314159265358979e+125);
++      ASSERT (result != NULL);
++      ASSERT (strcmp (result, "163141592653589790215729350939528493057529598899734151772468186268423257777068536614838678161083520756952076273094236944990208") == 0);
++      ASSERT (length == 126);
++      if (size < 126 + 1)
+         ASSERT (result != buf);
+       ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0);
+       if (result != buf)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2017-08-20.18.bb b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2017-08-20.18.bb
index b72ffa9..e048810 100644
--- a/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2017-08-20.18.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2017-08-20.18.bb
@@ -14,6 +14,7 @@
 SRCREV = "b23000de1e47c7d580e0e220966dd1ee42a5e5bc"
 
 SRC_URI = "git://git.sv.gnu.org/gnulib;protocol=git \
+           file://CVE-2018-17942.patch \
 "
 
 S = "${WORKDIR}/git"
@@ -22,6 +23,8 @@
     cd ${S}
     git checkout master
     git clone ${S} ${D}/${datadir}/gnulib
+    cd ${D}/${datadir}/gnulib
+    git am ${WORKDIR}/CVE-2018-17942.patch
 }
 
 do_patch[noexec] = "1"
@@ -32,5 +35,6 @@
 deltask package_write_ipk
 deltask package_write_deb
 deltask package_write_rpm
+deltask do_deploy_archives 
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Use-ucontext_t-instead-of-struct-ucontext.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Use-ucontext_t-instead-of-struct-ucontext.patch
deleted file mode 100644
index b303362..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Use-ucontext_t-instead-of-struct-ucontext.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 230cd84486145c5bb1d69d4c9a544e00adbcc9b5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 1 Jul 2017 13:21:21 -0700
-Subject: [PATCH] Use ucontext_t instead of struct ucontext
-
-Newer glibc has dropped the ucontext tag from exposing
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/stacktrace_powerpc-linux-inl.h | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/stacktrace_powerpc-linux-inl.h b/src/stacktrace_powerpc-linux-inl.h
-index 3b3843b..a301a46 100644
---- a/src/stacktrace_powerpc-linux-inl.h
-+++ b/src/stacktrace_powerpc-linux-inl.h
-@@ -53,7 +53,6 @@
- #elif defined(HAVE_UCONTEXT_H)
- #include <ucontext.h>  // for ucontext_t
- #endif
--typedef ucontext ucontext_t;
- 
- // PowerPC64 Little Endian follows BE wrt. backchain, condition register,
- // and LR save area, so no need to adjust the reading struct.
-@@ -202,7 +201,7 @@ static int GET_STACK_TRACE_OR_FRAMES {
-         struct rt_signal_frame_32 {
-           char dummy[64 + 16];
-           siginfo_t info;
--          struct ucontext uc;
-+          ucontext_t uc;
-           // We don't care about the rest, since IP value is at 'uc' field.A
-         } *sigframe = reinterpret_cast<rt_signal_frame_32*>(current);
-         result[n] = (void*) sigframe->uc.uc_mcontext.uc_regs->gregs[PT_NIP];
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch
index 0a72ff2..49d5c21 100644
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch
+++ b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch
@@ -1,4 +1,4 @@
-From 034e7da08c3fbffcba8cf8d4e24a71a16558db5a Mon Sep 17 00:00:00 2001
+From 696674a800cb6d2070897a565b92d7e63022a8f1 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sun, 16 Jul 2017 15:51:28 -0700
 Subject: [PATCH] fix build with musl libc
@@ -13,7 +13,7 @@
  2 files changed, 7 insertions(+), 2 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index b42fea3..70b49a3 100644
+index 497103e..f9efc3e 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -188,6 +188,7 @@ AC_HEADER_STDC
@@ -25,7 +25,7 @@
  AC_CHECK_FUNCS(geteuid)         # for turning off services when run as root
  AC_CHECK_FUNCS(fork)            # for the pthread_atfork setup
 diff --git a/src/malloc_hook_mmap_linux.h b/src/malloc_hook_mmap_linux.h
-index 79ac4e3..d444635 100755
+index 2f6116f..0605855 100755
 --- a/src/malloc_hook_mmap_linux.h
 +++ b/src/malloc_hook_mmap_linux.h
 @@ -46,6 +46,10 @@
@@ -55,5 +55,5 @@
 -#ifndef __UCLIBC__
 +#if HAVE___SBRK
  // libc's version:
- extern "C" void* __sbrk(ptrdiff_t increment);
+ extern "C" void* __sbrk(intptr_t increment);
  
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-include-fcntl.h-for-loff_t-definition.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-include-fcntl.h-for-loff_t-definition.patch
deleted file mode 100644
index 4c63e73..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-include-fcntl.h-for-loff_t-definition.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a16a73f0819d26219ee83cd98eea82786d7c1755 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 16 Jul 2017 19:28:17 -0700
-Subject: [PATCH] include fcntl.h for loff_t definition
-
-Fixes
-linux_syscall_support.h:2641:26: error: 'loff_t' has not been declared
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/base/linux_syscall_support.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/base/linux_syscall_support.h b/src/base/linux_syscall_support.h
-index 85347a2..70431ca 100644
---- a/src/base/linux_syscall_support.h
-+++ b/src/base/linux_syscall_support.h
-@@ -162,6 +162,7 @@ extern "C" {
- #include <unistd.h>
- #include <linux/unistd.h>
- #include <endian.h>
-+#include <fcntl.h>
- 
- #ifdef __mips__
- /* Include definitions of the ABI currently in use.                          */
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.6.1.bb b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.bb
similarity index 77%
rename from meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.6.1.bb
rename to meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.bb
index ecac6c5..e9fcc4c 100644
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.bb
@@ -4,12 +4,10 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=762732742c73dc6c7fbe8632f06c059a"
 DEPENDS += "libunwind"
 
-SRCREV = "bf840dec0495e17f5c8403e68e10b9d6bf05c559"
+SRCREV = "9608fa3bcf8020d35f59fbf70cd3cbe4b015b972"
 SRC_URI = "git://github.com/gperftools/gperftools \
            file://0001-Support-Atomic-ops-on-clang.patch \
-           file://0001-Use-ucontext_t-instead-of-struct-ucontext.patch \
            file://0001-fix-build-with-musl-libc.patch \
-           file://0001-include-fcntl.h-for-loff_t-definition.patch \
            file://0001-disbale-heap-checkers-and-debug-allocator-on-musl.patch \
            file://disable_libunwind_aarch64.patch \
            file://sgidef.patch \
@@ -19,6 +17,10 @@
 
 S = "${WORKDIR}/git"
 
+# On mips, we have the following error.
+#   do_page_fault(): sending SIGSEGV to ls for invalid read access from 00000008
+#   Segmentation fault (core dumped)
+COMPATIBLE_HOST_mipsarch_libc-glibc = "null"
 # Disable thumb1
 # {standard input}: Assembler messages:
 # {standard input}:434: Error: lo register required -- `ldr pc,[sp]'
diff --git a/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb b/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
index 51c4dd6..dcc9d68 100644
--- a/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
@@ -9,7 +9,7 @@
 PR = "r2"
 SRCREV = "1fd19417b8a4dd9945347e98dfa97e4cfd798d77"
 
-DEPENDS = "ncurses"
+DEPENDS = "ncurses bison-native"
 
 SRC_URI = "git://github.com/telmich/gpm;protocol=git \
            file://init \
diff --git a/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb b/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb
index 1a4261a..a7d0607 100644
--- a/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb
@@ -43,10 +43,6 @@
     rm -rf ${D}/dev
 }
 
-pkg_postinst_${PN}() {
-    # make sure running on the target
-    if [ x"$D" != "x" ]; then
-        exit 1
-    fi
+pkg_postinst_ontarget_${PN}() {
     /bin/mknod -m 0622 /dev/grsec c 1 13
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.51.bb b/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.51.bb
index 8875844..36530d2 100644
--- a/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.51.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.51.bb
@@ -22,7 +22,7 @@
 
 EXTRA_OEMAKE_class-target = "SOAP=${STAGING_BINDIR_NATIVE}/soapcpp2"
 
-DEPENDS = "openssl zlib flex bison"
+DEPENDS = "openssl zlib flex bison bison-native"
 DEPENDS_append_class-target = " gsoap-native"
 
 do_install_append() {
diff --git a/meta-openembedded/meta-oe/recipes-support/htop/htop_2.1.0.bb b/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-support/htop/htop_2.1.0.bb
rename to meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb
index 33508f9..01c856d 100644
--- a/meta-openembedded/meta-oe/recipes-support/htop/htop_2.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb
@@ -8,8 +8,8 @@
 
 SRC_URI = "http://hisham.hm/htop/releases/${PV}/${BP}.tar.gz \
            file://0001-Use-pkg-config.patch"
-SRC_URI[md5sum] = "f262b66ad6c194782f4d3a80627e84c8"
-SRC_URI[sha256sum] = "3260be990d26e25b6b49fc9d96dbc935ad46e61083c0b7f6df413e513bf80748"
+SRC_URI[md5sum] = "0d816b6beed31edc75babcfbf863ffa8"
+SRC_URI[sha256sum] = "d9d6826f10ce3887950d709b53ee1d8c1849a70fa38e91d5896ad8cbc6ba3c57"
 
 inherit autotools pkgconfig
 
diff --git a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
index 679673b..8e8dbf5 100644
--- a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
@@ -5,8 +5,8 @@
 LICENSE = "GPL-2.0+"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
 
-PV = "0.298+git${SRCPV}"
-SRCREV = "9030fbd6ab1538f4d77d3cf1e0b463a7ec25b5c4"
+PV = "0.316+git${SRCPV}"
+SRCREV = "803819aef862ded2ce0737cd3cf642c633b68c35"
 SRC_URI = "git://github.com/vcrhonek/${BPN}.git"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb
index 669534e..46cc78e 100644
--- a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb
@@ -3,7 +3,7 @@
 LICENSE = "ImageMagick"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=dad5a98f173fd3fa6958a1a58c6131c1"
 # 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 fftw freetype"
+DEPENDS = "lcms bzip2 jpeg libpng tiff zlib fftw freetype"
 
 BASE_PV := "${PV}"
 PV .= "_7"
@@ -25,6 +25,7 @@
 PACKAGECONFIG[lzma] = "--with-lzma,--without-lzma,xz"
 PACKAGECONFIG[openjpeg] = "--with-openjp2,--without-openjp2,openjpeg"
 PACKAGECONFIG[pango] = "--with-pango,--without-pango,pango cairo"
+PACKAGECONFIG[rsvg] = "--with-rsvg,--without-rsvg,librsvg"
 PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
 PACKAGECONFIG[wmf] = "--with-wmf,--without-wmf,libwmf"
 PACKAGECONFIG[x11] = "--with-x,--without-x,virtual/libx11 libxext libxt"
diff --git a/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb b/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb
index 2f9ac33..56a018b 100644
--- a/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb
@@ -14,6 +14,31 @@
     perl-module-filehandle \
     perl-module-getopt-std \
     perl-module-digest-sha \
+    perl-module-constant \
+    perl-module-cwd \
+    perl-module-errno \
+    perl-module-file-basename \
+    perl-module-file-find \
+    perl-module-file-path \
+    perl-module-file-spec \
+    perl-module-file-spec-functions \
+    perl-module-file-spec-unix \
+    perl-module-file-temp \
+    perl-module-getopt-long \
+    perl-module-list-util \
+    perl-module-mro \
+    perl-module-overload \
+    perl-module-overloading \
+    perl-module-overload-numbers \
+    perl-module-parent \
+    perl-module-pod-usage \
+    perl-module-posix \
+    perl-module-re \
+    perl-module-safe \
+    perl-module-scalar-util \
+    perl-module-term-cap \
+    perl-module-text-parsewords \
+    perl-module-tie-hash \
 "
 
 SRC_URI = "http://downloads.sourceforge.net/ltp/${BP}.tar.gz"
diff --git a/meta-openembedded/meta-oe/recipes-support/libbytesize/files/0001-remove-python2-support.patch b/meta-openembedded/meta-oe/recipes-support/libbytesize/files/0001-remove-python2-support.patch
deleted file mode 100644
index b57e39f..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libbytesize/files/0001-remove-python2-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 2ddc97b30792817d162f51ec3818376aefbf184e Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 3 May 2017 02:05:33 -0400
-Subject: [PATCH] remove python2 support
-
-We use python3 rather than python2 support
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/python/Makefile.am | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/src/python/Makefile.am b/src/python/Makefile.am
-index 567d0d7..8d9f446 100644
---- a/src/python/Makefile.am
-+++ b/src/python/Makefile.am
-@@ -1,8 +1,3 @@
--pylibdir = $(shell python -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(1,0,prefix='${exec_prefix}'))")
--
--pybytesizedir     = $(pylibdir)/bytesize
--dist_pybytesize_DATA = bytesize.py __init__.py
--
- if WITH_PYTHON3
- py3libdir = $(shell python3 -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(1,0,prefix='${exec_prefix}'))")
- py3bytesizedir    = $(py3libdir)/bytesize
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_0.10.bb b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_1.3.bb
similarity index 84%
rename from meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_0.10.bb
rename to meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_1.3.bb
index 6903021..caf84de 100644
--- a/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_0.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_1.3.bb
@@ -9,10 +9,9 @@
 S = "${WORKDIR}/git"
 B = "${S}"
 
-SRCREV = "369127c0edbba7d1a4e2e02486375dd9d379524f"
-PV = "0.10+git${SRCPV}"
+SRCREV = "b0dcf6f457d700127b43c0e0a198253c266b78ae"
+PV = "1.3+git${SRCPV}"
 SRC_URI = "git://github.com/rhinstaller/libbytesize;branch=master \
-           file://0001-remove-python2-support.patch \
 "
 
 inherit gettext autotools python3native
@@ -27,6 +26,7 @@
 
 PACKAGECONFIG ??= "python3"
 PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
+PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python2"
 PACKAGECONFIG[doc] = "--with-gtk-doc, --without-gtk-doc, gtk-doc-native"
 
 EXTRA_OEMAKE = "py3libdir=${PYTHON_SITEPACKAGES_DIR}"
diff --git a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.5.bb
similarity index 65%
rename from meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
rename to meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.5.bb
index bc3b32e..7078e50 100644
--- a/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.5.bb
@@ -5,15 +5,15 @@
 LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad"
 
 SRC_URI = "http://bitbucket.org/eigen/eigen/get/${PV}.tar.bz2;downloadfilename=${BP}.tar.bz2"
-SRC_URI[md5sum] = "a7aab9f758249b86c93221ad417fbe18"
-SRC_URI[sha256sum] = "dd254beb0bafc695d0f62ae1a222ff85b52dbaa3a16f76e781dce22d0d20a4a6"
+SRC_URI[md5sum] = "e83549a79d1b721da0f8899ab34edf95"
+SRC_URI[sha256sum] = "7352bff3ea299e4c7d7fbe31c504f8eb9149d7e685dec5a12fbaa26379f603e2"
 
-S = "${WORKDIR}/eigen-eigen-5a0156e40feb"
+S = "${WORKDIR}/eigen-eigen-b3f3d4950030"
 
 inherit cmake
 
-FILES_${PN} = "${includedir} ${libdir}"
-FILES_${PN}-dev = "${datadir}/eigen3/cmake ${datadir}/cmake/Modules ${datadir}/pkgconfig"
+FILES_${PN} = "${libdir}"
+FILES_${PN}-dev = "${includedir} ${datadir}/eigen3/cmake ${datadir}/cmake/Modules ${datadir}/pkgconfig"
 
 # ${PN} is empty so we need to tweak -dev and -dbg package dependencies
 RDEPENDS_${PN}-dev = ""
diff --git a/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.10.bb b/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.10.bb
deleted file mode 100644
index 9bff4f3..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.10.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb b/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb
new file mode 100644
index 0000000..ff61dd8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb
@@ -0,0 +1,13 @@
+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] = "1f25a2332750d4bfacfb314235fedff0"
+SRC_URI[sha256sum] = "46632b2785ff4a231dcf241eeb0dcb5fc0c7d4da8ee49cf5687722cdbe8b2024"
+
+UPSTREAM_CHECK_URI = "http://libestr.adiscon.com/download/"
+
+inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb b/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
index 6bea165..4fc6eb0 100644
--- a/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
@@ -3,7 +3,6 @@
 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 \
@@ -13,19 +12,16 @@
 DEPENDS = "libusb1"
 
 SRC_URI = "http://www.intra2net.com/en/developer/${BPN}/download/${BPN}1-${PV}.tar.bz2"
-
 SRC_URI[md5sum] = "0c09fb2bb19a57c839fa6845c6c780a2"
 SRC_URI[sha256sum] = "ec36fb49080f834690c24008328a5ef42d3cf584ef4060f3a35aa4681cb31b74"
 
 S = "${WORKDIR}/${BPN}1-${PV}"
 
+inherit cmake binconfig pkgconfig
+
 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').replace('lib', '')}"
 
-FILES_${PN}-dev += "${libdir}/cmake"
-
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.24.3.bb b/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.4.bb
similarity index 62%
rename from meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.24.3.bb
rename to meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.4.bb
index 8f580f9..e7f7688 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.24.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.4.bb
@@ -1,12 +1,13 @@
 SUMMARY = "the Git linkable library"
 HOMEPAGE = "http://libgit2.github.com/"
-LICENSE = "GPL-2.0-with-GCC-exception"
-LIC_FILES_CHKSUM = "file://COPYING;md5=34197a479f637beb9e09e56893f48bc2"
+LICENSE = "GPL-2.0-with-GCC-exception & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3f2cd5d3cccd71d62066ba619614592b"
 
-DEPENDS = "curl openssl zlib libssh2"
+DEPENDS = "curl openssl zlib libssh2 libgcrypt"
 
-SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v0.24"
-SRCREV = "4cf1ec7cff28da8838a2f0a9fb330e312ea3f963"
+SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v0.27"
+#v0.27.5
+SRCREV = "8e0b172981a046d19f1d9efa5acd6186bccbd3ce"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.0.1.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.0.1.bb
deleted file mode 100644
index 51499fd..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.0.1.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require libgpiod.inc
-
-SRC_URI[md5sum] = "2ca0c3eb17d69e367b6f6a109ca86e41"
-SRC_URI[sha256sum] = "972924195367f5fb045c023d65340c4b7dfc8764499516be446553865208dedc"
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.2.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.2.bb
new file mode 100644
index 0000000..30289b9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.2.bb
@@ -0,0 +1,16 @@
+require libgpiod.inc
+
+DEPENDS += "autoconf-archive-native"
+
+SRC_URI[md5sum] = "34a9972f2f4e9c32fa940301301b007d"
+SRC_URI[sha256sum] = "b6b9079c933f7c8524815437937dda6b795a16141bca202a9eec70ba5844b5ba"
+
+PACKAGECONFIG[cxx] = "--enable-bindings-cxx,--disable-bindings-cxx"
+
+PACKAGECONFIG[python3] = "--enable-bindings-python,--disable-bindings-python,python3,python3-core"
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native', '', d)}
+
+PACKAGES =+ "${PN}-python"
+FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
+RRECOMMENDS_PYTHON = "${@bb.utils.contains('PACKAGECONFIG', 'python3', '${PN}-python', '',d)}"
+RRECOMMENDS_${PN} += "${RRECOMMENDS_PYTHON}"
diff --git a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
index ba380ed..fa6f4c2 100644
--- a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
@@ -24,10 +24,11 @@
     ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-DWITH_SYSTEMD=ON -DSYSTEMD_UNIT_INSTALL_DIR=${systemd_system_unitdir}', '', d)} \
 "
 
-PACKAGECONFIG ??= "USB_BACKEND NETWORK_BACKEND"
+PACKAGECONFIG ??= "USB_BACKEND NETWORK_BACKEND PYTHON_BINDINGS"
 
 PACKAGECONFIG[USB_BACKEND] = "-DWITH_USB_BACKEND=ON,-DWITH_USB_BACKEND=OFF,libusb1,libxml2"
 PACKAGECONFIG[NETWORK_BACKEND] = "-DWITH_NETWORK_BACKEND=ON,-DWITH_NETWORK_BACKEND=OFF,libxml2"
+PACKAGECONFIG[PYTHON_BINDINGS] = ",,python"
 
 PACKAGES =+ "${PN}-iiod ${PN}-tests ${PN}-python"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.55.bb b/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.59.bb
similarity index 75%
rename from meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.55.bb
rename to meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.59.bb
index 0930a27..b44c66a 100644
--- a/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.55.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.59.bb
@@ -3,11 +3,11 @@
 LICENSE = "LGPL-2.1+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=9331186f4f80db7da0e724bdd6554ee5"
 SECTION = "net"
-DEPENDS = "libgcrypt gnutls file"
+DEPENDS = "file"
 
 SRC_URI = "http://ftp.gnu.org/gnu/libmicrohttpd/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "1c20f84a8b9cf692dd50b558b3571a3a"
-SRC_URI[sha256sum] = "0c1cab8dc9f2588bd3076a28f77a7f8de9560cbf2d80e53f9a8696ada80ed0f8"
+SRC_URI[md5sum] = "8ab5123535549195aff19e91b4e49f48"
+SRC_URI[sha256sum] = "9b9ccd7d0b11b0e179f1f58dc2caa3e0c62c8609e1e1dc7dcaadf941b67d923c"
 
 inherit autotools lib_package pkgconfig gettext
 
@@ -15,12 +15,13 @@
 
 EXTRA_OECONF += "--disable-static --with-gnutls=${STAGING_LIBDIR}/../"
 
-PACKAGECONFIG ?= "curl"
+PACKAGECONFIG ?= "curl https"
 PACKAGECONFIG_append_class-target = "\
         ${@bb.utils.filter('DISTRO_FEATURES', 'largefile', d)} \
 "
 PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
 PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl,"
+PACKAGECONFIG[https] = "--enable-https,--disable-https,libgcrypt gnutls,"
 
 do_compile_append() {
     sed -i s:-L${STAGING_LIBDIR}::g libmicrohttpd.pc
diff --git a/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb b/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb
new file mode 100644
index 0000000..542fe81
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Tiny XML Library"
+LICENSE = "Mini-XML-License"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6ba38606d63bb042c5d8cfee182e120"
+HOMEPAGE = "https://www.msweet.org/mxml/"
+BUGTRACKER = "https://github.com/michaelrsweet/mxml/issues"
+
+SRC_URI = "git://github.com/michaelrsweet/mxml.git"
+SRCREV = "ba3cca82e15a88a9cc6afb60f059288a99afc703"
+S = "${WORKDIR}/git"
+PV = "2.12+git${SRCPV}"
+
+CONFIGUREOPTS = " --prefix=${prefix} \
+                  --bindir=${bindir} \
+                  --sbindir=${sbindir} \
+                  --libexecdir=${libexecdir} \
+                  --datadir=${datadir} \
+                  --sysconfdir=${sysconfdir} \
+                  --sharedstatedir=${sharedstatedir} \
+                  --localstatedir=${localstatedir} \
+                  --libdir=${libdir} \
+                  --includedir=${includedir} \
+                  --oldincludedir=${oldincludedir} \
+                  --infodir=${infodir} \
+                  --mandir=${mandir} \
+                  --host=${TARGET_SYS} \
+                  --build=${BUILD_SYS} \
+                  ${PACKAGECONFIG_CONFARGS} \
+                "
+
+do_configure() {
+    ./configure ${CONFIGUREOPTS} --enable-shared
+}
+
+do_install () {
+    export DSTROOT=${D}
+    oe_runmake install
+}
+
+PACKAGES += " ${PN}-bin "
+FILES_${PN} = "${libdir}/*"
+FILES_${PN}-bin = "${bindir}/*"
diff --git a/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth/0001-Support-OpenSSL-1.1.0.patch b/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth/0001-Support-OpenSSL-1.1.0.patch
new file mode 100644
index 0000000..8691eae
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth/0001-Support-OpenSSL-1.1.0.patch
@@ -0,0 +1,151 @@
+From c14d9bf71753a38df57cc6538b22ed389d2c2cb1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 4 Sep 2018 17:18:51 -0700
+Subject: [PATCH] Support OpenSSL 1.1.0
+
+Taken from https://github.com/x42/liboauth/issues/9
+
+Upstream-Status: Submitted[https://github.com/x42/liboauth/issues/9]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/hash.c | 65 ++++++++++++++++++++++++++++++++++++------------------
+ 1 file changed, 44 insertions(+), 21 deletions(-)
+
+diff --git a/src/hash.c b/src/hash.c
+index 17ff5c8..e128826 100644
+--- a/src/hash.c
++++ b/src/hash.c
+@@ -362,6 +362,11 @@ looser:
+ #include "oauth.h" // base64 encode fn's.
+ #include <openssl/hmac.h>
+ 
++#if OPENSSL_VERSION_NUMBER < 0x10100000
++#define EVP_MD_CTX_new EVP_MD_CTX_create
++#define EVP_MD_CTX_free EVP_MD_CTX_destroy
++#endif
++
+ char *oauth_sign_hmac_sha1 (const char *m, const char *k) {
+   return(oauth_sign_hmac_sha1_raw (m, strlen(m), k, strlen(k)));
+ }
+@@ -386,7 +391,7 @@ char *oauth_sign_rsa_sha1 (const char *m, const char *k) {
+   unsigned char *sig = NULL;
+   unsigned char *passphrase = NULL;
+   unsigned int len=0;
+-  EVP_MD_CTX md_ctx;
++  EVP_MD_CTX *md_ctx;
+ 
+   EVP_PKEY *pkey;
+   BIO *in;
+@@ -399,24 +404,31 @@ char *oauth_sign_rsa_sha1 (const char *m, const char *k) {
+     return xstrdup("liboauth/OpenSSL: can not read private key");
+   }
+ 
++	md_ctx = EVP_MD_CTX_new();
++	if (md_ctx == NULL) {
++		return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
++	}
++
+   len = EVP_PKEY_size(pkey);
+   sig = (unsigned char*)xmalloc((len+1)*sizeof(char));
+ 
+-  EVP_SignInit(&md_ctx, EVP_sha1());
+-  EVP_SignUpdate(&md_ctx, m, strlen(m));
+-  if (EVP_SignFinal (&md_ctx, sig, &len, pkey)) {
++	EVP_SignInit(md_ctx, EVP_sha1());
++	EVP_SignUpdate(md_ctx, m, strlen(m));
++	if (EVP_SignFinal (md_ctx, sig, &len, pkey)) {
+     char *tmp;
+     sig[len] = '\0';
+     tmp = oauth_encode_base64(len,sig);
+     OPENSSL_free(sig);
+     EVP_PKEY_free(pkey);
++    EVP_MD_CTX_free(md_ctx);
+     return tmp;
+   }
++  EVP_MD_CTX_free(md_ctx);
+   return xstrdup("liboauth/OpenSSL: rsa-sha1 signing failed");
+ }
+ 
+ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {
+-  EVP_MD_CTX md_ctx;
++  EVP_MD_CTX *md_ctx;
+   EVP_PKEY *pkey;
+   BIO *in;
+   X509 *cert = NULL;
+@@ -437,13 +449,18 @@ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {
+     return -2;
+   }
+ 
++	md_ctx = EVP_MD_CTX_new();
++	if (md_ctx == NULL) {
++		return -2;
++	}
++
+   b64d= (unsigned char*) xmalloc(sizeof(char)*strlen(s));
+   slen = oauth_decode_base64(b64d, s);
+ 
+-  EVP_VerifyInit(&md_ctx, EVP_sha1());
+-  EVP_VerifyUpdate(&md_ctx, m, strlen(m));
+-  err = EVP_VerifyFinal(&md_ctx, b64d, slen, pkey);
+-  EVP_MD_CTX_cleanup(&md_ctx);
++	EVP_VerifyInit(md_ctx, EVP_sha1());
++	EVP_VerifyUpdate(md_ctx, m, strlen(m));
++	err = EVP_VerifyFinal(md_ctx, b64d, slen, pkey);
++	EVP_MD_CTX_free(md_ctx);
+   EVP_PKEY_free(pkey);
+   xfree(b64d);
+   return (err);
+@@ -455,35 +472,41 @@ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {
+  */
+ char *oauth_body_hash_file(char *filename) {
+   unsigned char fb[BUFSIZ];
+-  EVP_MD_CTX ctx;
++  EVP_MD_CTX *ctx;
+   size_t len=0;
+   unsigned char *md;
+   FILE *F= fopen(filename, "r");
+   if (!F) return NULL;
+ 
+-  EVP_MD_CTX_init(&ctx);
+-  EVP_DigestInit(&ctx,EVP_sha1());
++	ctx = EVP_MD_CTX_new();
++	if (ctx == NULL) {
++		return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
++	}
++	EVP_DigestInit(ctx,EVP_sha1());
+   while (!feof(F) && (len=fread(fb,sizeof(char),BUFSIZ, F))>0) {
+-    EVP_DigestUpdate(&ctx, fb, len);
++    EVP_DigestUpdate(ctx, fb, len);
+   }
+   fclose(F);
+   len=0;
+   md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));
+-  EVP_DigestFinal(&ctx, md,(unsigned int*) &len);
+-  EVP_MD_CTX_cleanup(&ctx);
++	EVP_DigestFinal(ctx, md,(unsigned int*) &len);
++	EVP_MD_CTX_free(ctx);
+   return oauth_body_hash_encode(len, md);
+ }
+ 
+ char *oauth_body_hash_data(size_t length, const char *data) {
+-  EVP_MD_CTX ctx;
++  EVP_MD_CTX *ctx;
+   size_t len=0;
+   unsigned char *md;
+   md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));
+-  EVP_MD_CTX_init(&ctx);
+-  EVP_DigestInit(&ctx,EVP_sha1());
+-  EVP_DigestUpdate(&ctx, data, length);
+-  EVP_DigestFinal(&ctx, md,(unsigned int*) &len);
+-  EVP_MD_CTX_cleanup(&ctx);
++	ctx = EVP_MD_CTX_new();
++	if (ctx == NULL) {
++		return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
++	}
++	EVP_DigestInit(ctx,EVP_sha1());
++	EVP_DigestUpdate(ctx, data, length);
++	EVP_DigestFinal(ctx, md,(unsigned int*) &len);
++	EVP_MD_CTX_free(ctx);
+   return oauth_body_hash_encode(len, md);
+ }
+ 
diff --git a/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb b/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb
index 3311da5..498764a 100644
--- a/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb
@@ -9,7 +9,9 @@
 SECTION = "libs"
 DEPENDS = "curl openssl"
 
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BP}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BP}.tar.gz \
+           file://0001-Support-OpenSSL-1.1.0.patch \
+           "
 SRC_URI[md5sum] = "689b46c2b3ab1a39735ac33f714c4f7f"
 SRC_URI[sha256sum] = "0df60157b052f0e774ade8a8bac59d6e8d4b464058cc55f9208d72e41156811f"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.7.bb b/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.7.bb
index 949c337..87d99c1 100644
--- a/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.7.bb
@@ -22,5 +22,5 @@
     rm -rf ${D}${docdir}/${BPN}
 }
 
-FILES_${PN} += "${libdir}/engines/pkcs11.so"
-FILES_${PN}-dev += "${libdir}/engines/libpkcs11${SOLIBSDEV}"
+FILES_${PN} += "${libdir}/engines*/pkcs11.so"
+FILES_${PN}-dev += "${libdir}/engines*/libpkcs11${SOLIBSDEV}"
diff --git a/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.7.3.bb b/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.4.bb
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.7.3.bb
rename to meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.4.bb
index 79e7dc5..6040ec9 100644
--- a/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.7.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.4.bb
@@ -1,16 +1,23 @@
 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 = "cdf7690e038230623cbbf6b024ece62f41efa98d"
+DEPENDS = "zlib openssl libgcrypt"
+
+SRC_URI = "git://git.libssh.org/projects/libssh.git;branch=stable-0.8"
+SRCREV = "789df0b7d0c7abd6b85db9fc5247e146e3d4ddba"
+
 S = "${WORKDIR}/git"
 
+inherit cmake
+
+PACKAGECONFIG ??=""
+PACKAGECONFIG[gssapi] = "-DWITH_GSSAPI=1, -DWITH_GSSAPI=0, krb5, "
+
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
 EXTRA_OECMAKE = " \
     -DWITH_GCRYPT=1 \
     -DWITH_PCAP=1 \
@@ -19,16 +26,10 @@
     -DLIB_SUFFIX=${@d.getVar('baselib').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"
 TOOLCHAIN = "gcc"
diff --git a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_7.0.1.bb b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_7.0.1.bb
index 74780e1..e4bb3f3 100644
--- a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_7.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_7.0.1.bb
@@ -12,6 +12,4 @@
 
 inherit cmake
 
-FILES_${PN}-dev += "${libdir}/cmake/"
-
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat/0001-usb.h-Include-sys-types.h.patch b/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat/0001-usb.h-Include-sys-types.h.patch
new file mode 100644
index 0000000..b88440d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat/0001-usb.h-Include-sys-types.h.patch
@@ -0,0 +1,30 @@
+From 340f911f9e3f4ff6b01682c5341c959060782af2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 2 Apr 2015 19:18:45 -0700
+Subject: [PATCH] usb.h: Include sys/types.h
+
+We need the definitions for things like u_intX_t
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libusb/usb.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/libusb/usb.h b/libusb/usb.h
+index 84e730f..caffae2 100644
+--- a/libusb/usb.h
++++ b/libusb/usb.h
+@@ -31,6 +31,8 @@
+ 
+ #include <dirent.h>
+ 
++#include <sys/types.h>
++
+ /*
+  * USB spec information
+  *
+-- 
+2.1.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat_0.1.5.bb b/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat_0.1.5.bb
new file mode 100644
index 0000000..1ddbe23
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libusb/libusb-compat_0.1.5.bb
@@ -0,0 +1,42 @@
+SUMMARY = "libusb-0.1 compatibility layer for libusb1"
+DESCRIPTION = "libusb-0.1 compatible layer for libusb1, a drop-in replacement \
+that aims to look, feel and behave exactly like libusb-0.1"
+HOMEPAGE = "http://www.libusb.org/"
+BUGTRACKER = "http://www.libusb.org/report"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f2ac5f3ac4835e8f91324a26a590a423"
+DEPENDS = "libusb1"
+
+# Few packages are known not to work with libusb-compat (e.g. libmtp-1.0.0),
+# so here libusb-0.1 is removed completely instead of adding virtual/libusb0.
+# Besides, libusb-0.1 uses a per 1ms polling that hurts a lot to power
+# consumption.
+PROVIDES = "libusb virtual/libusb0"
+BBCLASSEXTEND = "native nativesdk"
+
+PE = "1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libusb/libusb-compat-${PV}.tar.bz2 \
+           file://0001-usb.h-Include-sys-types.h.patch \
+          "
+
+SRC_URI[md5sum] = "2780b6a758a1e2c2943bdbf7faf740e4"
+SRC_URI[sha256sum] = "404ef4b6b324be79ac1bfb3d839eac860fbc929e6acb1ef88793a6ea328bc55a"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libusb/files/libusb-compat-0.1/"
+UPSTREAM_CHECK_REGEX = "/libusb-compat-(?P<pver>(\d+[\.\-_]*)+)/$"
+
+BINCONFIG = "${bindir}/libusb-config"
+
+inherit autotools pkgconfig binconfig-disabled lib_package
+
+EXTRA_OECONF = "--libdir=${base_libdir}"
+
+do_install_append() {
+	install -d ${D}${libdir}
+	if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+		mv ${D}${base_libdir}/pkgconfig ${D}${libdir}
+	fi
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/links/files/ac-prog-cxx.patch b/meta-openembedded/meta-oe/recipes-support/links/files/ac-prog-cxx.patch
index 41c3826..2dc57a5 100644
--- a/meta-openembedded/meta-oe/recipes-support/links/files/ac-prog-cxx.patch
+++ b/meta-openembedded/meta-oe/recipes-support/links/files/ac-prog-cxx.patch
@@ -1,11 +1,21 @@
---- 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 @@
+From c00668541f68c17a5e453a4dcc2a86022b20af87 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Mon, 30 Jul 2012 23:52:49 +0200
+
+---
+ configure.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index 7c15b6b..9896631 100644
+--- a/configure.in
++++ b/configure.in
+@@ -23,7 +23,7 @@ AM_CONFIG_HEADER(config.h)
  dnl Checks for programs.
  AC_PROG_CC
  
--#AC_PROG_CXX
+-dnl AC_PROG_CXX
 +AC_PROG_CXX
- #AC_PROG_AWK
- #AM_PROG_LEX
- #AC_PROG_YACC
+ dnl AC_PROG_AWK
+ dnl AM_PROG_LEX
+ dnl AC_PROG_YACC
diff --git a/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.16.bb b/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.16.bb
new file mode 100644
index 0000000..f55a6fc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.16.bb
@@ -0,0 +1,53 @@
+# FIXME: the LIC_FILES_CHKSUM values have been updated by 'devtool upgrade'.
+# The following is the difference between the old and the new license text.
+# Please update the LICENSE value if needed, and summarize the changes in
+# the commit message via 'License-Update:' tag.
+# (example: 'License-Update: copyright years updated.')
+#
+# The changes:
+#
+# --- COPYING
+# +++ COPYING
+# @@ -293,7 +293,7 @@
+#      <one line to give the program's name and a brief idea of what it does.>
+#      Copyright (C) <year>  <name of author>
+#  
+# -    on, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USAThis program is free software; you can redistribute it and/or modify
+# +    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.
+# 
+#
+
+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] = "645fb0c0294e4c3268f94d307d394ffb"
+SRC_URI[sha256sum] = "82f03038d5e050a65681b9888762af41c40fd42dec7e59a8d630bfb0ee134a3f"
+SRC_URI[icon.md5sum] = "477e8787927c634614bac01b44355a33"
+SRC_URI[icon.sha256sum] = "eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47"
diff --git a/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.7.bb b/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.7.bb
deleted file mode 100644
index 2ae11ac..0000000
--- a/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.7.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-support/links/links.inc b/meta-openembedded/meta-oe/recipes-support/links/links.inc
index e072408..d6aa2d2 100644
--- a/meta-openembedded/meta-oe/recipes-support/links/links.inc
+++ b/meta-openembedded/meta-oe/recipes-support/links/links.inc
@@ -3,7 +3,7 @@
 HOMEPAGE = "http://links.twibright.com/"
 SECTION = "console/network"
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=65e735be2e05d5943803344148f57603"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b0c80473f97008e42e29a9f80fcc55ff"
 DEPENDS = "jpeg libpng flex openssl zlib"
 
 SRC_URI = "http://links.twibright.com/download/links-${PV}.tar.bz2 \
diff --git a/meta-openembedded/meta-oe/recipes-support/links/links_2.16.bb b/meta-openembedded/meta-oe/recipes-support/links/links_2.16.bb
new file mode 100644
index 0000000..19ea7a6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/links/links_2.16.bb
@@ -0,0 +1,15 @@
+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] = "645fb0c0294e4c3268f94d307d394ffb"
+SRC_URI[sha256sum] = "82f03038d5e050a65681b9888762af41c40fd42dec7e59a8d630bfb0ee134a3f"
+SRC_URI[icon.md5sum] = "477e8787927c634614bac01b44355a33"
+SRC_URI[icon.sha256sum] = "eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47"
diff --git a/meta-openembedded/meta-oe/recipes-support/links/links_2.7.bb b/meta-openembedded/meta-oe/recipes-support/links/links_2.7.bb
deleted file mode 100644
index e80dd7b..0000000
--- a/meta-openembedded/meta-oe/recipes-support/links/links_2.7.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb b/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
index 3a6319c..d9780cf 100644
--- a/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
@@ -60,3 +60,7 @@
     bash"
 
 FILES_${PN} += "${sbindir}/* /etc/init.d/* /etc/target/*"
+
+# http://errors.yoctoproject.org/Errors/Details/184712/
+# python-native/python: can't open file 'setup.py': [Errno 2] No such file or directory
+CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch
new file mode 100644
index 0000000..12f5be9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch
@@ -0,0 +1,30 @@
+From 2f39dc3d6f920c0826aa74367da1a0a7cc49b0fe Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 11 Aug 2018 15:18:04 -0700
+Subject: [PATCH] include sys/sysmacros.h for major/minor definitions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.
+This means that in a future release, the macros “major”, “minor”, and
+“makedev” will only be available from <sys/sysmacros.h>.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/lockdev.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/lockdev.c b/src/lockdev.c
+index 9a0fca5..3581938 100644
+--- a/src/lockdev.c
++++ b/src/lockdev.c
+@@ -117,6 +117,7 @@
+ #include <sys/stat.h>
+ #include <sys/file.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/wait.h>
+ #include "lockdev.h"
+ #include "ttylock.h"
diff --git a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb
index 507ce3f..5ad7f0c 100644
--- a/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb
@@ -6,7 +6,9 @@
 PV = "1.0.3+git${SRCPV}"
 
 SRCREV = "16b899645d32012cc94cc9232f64d4ddaaf0b795"
-SRC_URI = "git://anonscm.debian.org/lockdev/lockdev.git"
+SRC_URI = "git://anonscm.debian.org/lockdev/lockdev.git \
+           file://0001-include-sys-sysmacros.h-for-major-minor-definitions.patch \
+           "
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch
index e86ab25..5b55111 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch
@@ -17,17 +17,17 @@
  scripts/lvm2_monitoring_init_rhel4            | 4 ++--
  8 files changed, 17 insertions(+), 17 deletions(-)
 
-diff --git a/scripts/blk_availability_init_red_hat.in b/scripts/blk_availability_init_red_hat.in
-index a84ffe7..6b855b7 100644
---- a/scripts/blk_availability_init_red_hat.in
-+++ b/scripts/blk_availability_init_red_hat.in
+Index: LVM2.2.02.177/scripts/blk_availability_init_red_hat.in
+===================================================================
+--- LVM2.2.02.177.orig/scripts/blk_availability_init_red_hat.in
++++ LVM2.2.02.177/scripts/blk_availability_init_red_hat.in
 @@ -1,4 +1,4 @@
 -#!/bin/bash
 +#!/bin/sh
  #
- # Copyright (C) 2012 Red Hat, Inc. All rights reserved.
+ # Copyright (C) 2012-2017 Red Hat, Inc. All rights reserved.
  #
-@@ -53,6 +53,6 @@ case "$1" in
+@@ -51,6 +51,6 @@ case "$1" in
    status)
  	;;
    *)
@@ -35,10 +35,10 @@
 +	echo "Usage: $0 {start|stop|status}"
  	;;
  esac
-diff --git a/scripts/clvmd_init_red_hat.in b/scripts/clvmd_init_red_hat.in
-index d7f3392..abc8011 100644
---- a/scripts/clvmd_init_red_hat.in
-+++ b/scripts/clvmd_init_red_hat.in
+Index: LVM2.2.02.177/scripts/clvmd_init_red_hat.in
+===================================================================
+--- LVM2.2.02.177.orig/scripts/clvmd_init_red_hat.in
++++ LVM2.2.02.177/scripts/clvmd_init_red_hat.in
 @@ -1,4 +1,4 @@
 -#!/bin/bash
 +#!/bin/sh
@@ -63,17 +63,17 @@
  	rtrn=2
  	;;
  esac
-diff --git a/scripts/cmirrord_init_red_hat.in b/scripts/cmirrord_init_red_hat.in
-index d4b7e37..d442cbc 100755
---- a/scripts/cmirrord_init_red_hat.in
-+++ b/scripts/cmirrord_init_red_hat.in
+Index: LVM2.2.02.177/scripts/cmirrord_init_red_hat.in
+===================================================================
+--- LVM2.2.02.177.orig/scripts/cmirrord_init_red_hat.in
++++ LVM2.2.02.177/scripts/cmirrord_init_red_hat.in
 @@ -1,4 +1,4 @@
 -#!/bin/bash
 +#!/bin/sh
  #
  # chkconfig: - 22 78
  # description: Starts and stops cmirrord
-@@ -101,7 +101,7 @@ case "$1" in
+@@ -103,7 +103,7 @@ case "$1" in
  		;;
  
  	*)
@@ -82,15 +82,15 @@
  		;;
  esac
  
-diff --git a/scripts/lvm2_cluster_activation_red_hat.sh.in b/scripts/lvm2_cluster_activation_red_hat.sh.in
-index abea026..d8cba2e 100644
---- a/scripts/lvm2_cluster_activation_red_hat.sh.in
-+++ b/scripts/lvm2_cluster_activation_red_hat.sh.in
+Index: LVM2.2.02.177/scripts/lvm2_cluster_activation_red_hat.sh.in
+===================================================================
+--- LVM2.2.02.177.orig/scripts/lvm2_cluster_activation_red_hat.sh.in
++++ LVM2.2.02.177/scripts/lvm2_cluster_activation_red_hat.sh.in
 @@ -1,4 +1,4 @@
 -#!/bin/bash
 +#!/bin/sh
  
- sbindir=@sbindir@
+ sbindir="@SBINDIR@"
  
 @@ -54,7 +54,7 @@ case "$1" in
  	rtrn=$?
@@ -101,15 +101,34 @@
  	rtrn=3
  	;;
  esac
-diff --git a/scripts/lvm2_lvmetad_init_red_hat.in b/scripts/lvm2_lvmetad_init_red_hat.in
-index b2f5d50..96269a9 100644
---- a/scripts/lvm2_lvmetad_init_red_hat.in
-+++ b/scripts/lvm2_lvmetad_init_red_hat.in
+Index: LVM2.2.02.177/scripts/lvm2_lvmetad_init_red_hat.in
+===================================================================
+--- LVM2.2.02.177.orig/scripts/lvm2_lvmetad_init_red_hat.in
++++ LVM2.2.02.177/scripts/lvm2_lvmetad_init_red_hat.in
 @@ -1,4 +1,4 @@
 -#!/bin/bash
 +#!/bin/sh
  #
- # Copyright (C) 2012 Red Hat, Inc. All rights reserved.
+ # Copyright (C) 2012-2017 Red Hat, Inc. All rights reserved.
+ #
+@@ -103,7 +103,7 @@ case "$1" in
+ 	;;
+ 
+   *)
+-	echo $"Usage: $0 {start|stop|force-stop|restart|condrestart|try-restart|status}"
++	echo "Usage: $0 {start|stop|force-stop|restart|condrestart|try-restart|status}"
+ 	;;
+ esac
+ 
+Index: LVM2.2.02.177/scripts/lvm2_lvmpolld_init_red_hat.in
+===================================================================
+--- LVM2.2.02.177.orig/scripts/lvm2_lvmpolld_init_red_hat.in
++++ LVM2.2.02.177/scripts/lvm2_lvmpolld_init_red_hat.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # Copyright (C) 2015 Red Hat, Inc. All rights reserved.
  #
 @@ -105,7 +105,7 @@ case "$1" in
  	;;
@@ -120,36 +139,17 @@
  	;;
  esac
  
-diff --git a/scripts/lvm2_lvmpolld_init_red_hat.in b/scripts/lvm2_lvmpolld_init_red_hat.in
-index c521955..cdbaece 100644
---- a/scripts/lvm2_lvmpolld_init_red_hat.in
-+++ b/scripts/lvm2_lvmpolld_init_red_hat.in
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- #
- # Copyright (C) 2015 Red Hat, Inc. All rights reserved.
- #
-@@ -107,7 +107,7 @@ case "$1" in
- 	;;
- 
-   *)
--	echo $"Usage: $0 {start|stop|force-stop|restart|condrestart|try-restart|status}"
-+	echo "Usage: $0 {start|stop|force-stop|restart|condrestart|try-restart|status}"
- 	;;
- esac
- 
-diff --git a/scripts/lvm2_monitoring_init_red_hat.in b/scripts/lvm2_monitoring_init_red_hat.in
-index de7ff0d..9ff6bb7 100644
---- a/scripts/lvm2_monitoring_init_red_hat.in
-+++ b/scripts/lvm2_monitoring_init_red_hat.in
+Index: LVM2.2.02.177/scripts/lvm2_monitoring_init_red_hat.in
+===================================================================
+--- LVM2.2.02.177.orig/scripts/lvm2_monitoring_init_red_hat.in
++++ LVM2.2.02.177/scripts/lvm2_monitoring_init_red_hat.in
 @@ -1,4 +1,4 @@
 -#!/bin/bash
 +#!/bin/sh
  #
  # Copyright (C) 2007-2009 Red Hat, Inc. All rights reserved.
  #
-@@ -128,7 +128,7 @@ case "$1" in
+@@ -127,7 +127,7 @@ case "$1" in
  	;;
  
    *)
@@ -158,10 +158,10 @@
  	;;
  esac
  
-diff --git a/scripts/lvm2_monitoring_init_rhel4 b/scripts/lvm2_monitoring_init_rhel4
-index 8eb06c5..2e8d0f7 100644
---- a/scripts/lvm2_monitoring_init_rhel4
-+++ b/scripts/lvm2_monitoring_init_rhel4
+Index: LVM2.2.02.177/scripts/lvm2_monitoring_init_rhel4
+===================================================================
+--- LVM2.2.02.177.orig/scripts/lvm2_monitoring_init_rhel4
++++ LVM2.2.02.177/scripts/lvm2_monitoring_init_rhel4
 @@ -1,4 +1,4 @@
 -#!/bin/bash
 +#!/bin/sh
@@ -177,6 +177,3 @@
  	;;
  esac
  
--- 
-2.12.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-implement-libc-specific-reopen_stream.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-implement-libc-specific-reopen_stream.patch
index 5d72402..bb582ed 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-implement-libc-specific-reopen_stream.patch
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-implement-libc-specific-reopen_stream.patch
@@ -19,11 +19,11 @@
  tools/lvmcmdline.c | 6 +++---
  2 files changed, 9 insertions(+), 3 deletions(-)
 
-diff --git a/lib/log/log.c b/lib/log/log.c
-index c933154..3581084 100644
---- a/lib/log/log.c
-+++ b/lib/log/log.c
-@@ -161,6 +161,7 @@ static void _check_and_replace_standard_log_streams(FILE *old_stream, FILE *new_
+Index: LVM2.2.02.177/lib/log/log.c
+===================================================================
+--- LVM2.2.02.177.orig/lib/log/log.c
++++ LVM2.2.02.177/lib/log/log.c
+@@ -161,6 +161,7 @@ static void _check_and_replace_standard_
   * Close and reopen standard stream on file descriptor fd.
   */
  int reopen_standard_stream(FILE **stream, const char *mode)
@@ -31,7 +31,7 @@
  {
  	int fd, fd_copy, new_fd;
  	const char *name;
-@@ -207,6 +208,11 @@ int reopen_standard_stream(FILE **stream, const char *mode)
+@@ -207,6 +208,11 @@ int reopen_standard_stream(FILE **stream
  	*stream = new_stream;
  	return 1;
  }
@@ -43,11 +43,11 @@
  
  void init_log_fn(lvm2_log_fn_t log_fn)
  {
-diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
-index 9a4deb7..f1f18e6 100644
---- a/tools/lvmcmdline.c
-+++ b/tools/lvmcmdline.c
-@@ -1818,7 +1818,7 @@ static int _check_standard_fds(void)
+Index: LVM2.2.02.177/tools/lvmcmdline.c
+===================================================================
+--- LVM2.2.02.177.orig/tools/lvmcmdline.c
++++ LVM2.2.02.177/tools/lvmcmdline.c
+@@ -3095,7 +3095,7 @@ static int _check_standard_fds(void)
  	int err = is_valid_fd(STDERR_FILENO);
  
  	if (!is_valid_fd(STDIN_FILENO) &&
@@ -56,7 +56,7 @@
  		if (err)
  			perror("stdin stream open");
  		else
-@@ -1828,7 +1828,7 @@ static int _check_standard_fds(void)
+@@ -3105,7 +3105,7 @@ static int _check_standard_fds(void)
  	}
  
  	if (!is_valid_fd(STDOUT_FILENO) &&
@@ -65,7 +65,7 @@
  		if (err)
  			perror("stdout stream open");
  		/* else no stdout */
-@@ -1836,7 +1836,7 @@ static int _check_standard_fds(void)
+@@ -3113,7 +3113,7 @@ static int _check_standard_fds(void)
  	}
  
  	if (!is_valid_fd(STDERR_FILENO) &&
@@ -74,6 +74,3 @@
  		printf("stderr stream open: %s\n",
  		       strerror(errno));
  		return 0;
--- 
-2.12.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch
index 95dcede..ce8a97a 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0002-Guard-use-of-mallinfo-with-__GLIBC__.patch
@@ -12,11 +12,11 @@
  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 da90144..f34f890 100644
---- a/lib/mm/memlock.c
-+++ b/lib/mm/memlock.c
-@@ -150,7 +150,7 @@ static void _touch_memory(void *mem, size_t size)
+Index: LVM2.2.02.177/lib/mm/memlock.c
+===================================================================
+--- LVM2.2.02.177.orig/lib/mm/memlock.c
++++ LVM2.2.02.177/lib/mm/memlock.c
+@@ -151,7 +151,7 @@ static void _touch_memory(void *mem, siz
  
  static void _allocate_memory(void)
  {
@@ -25,6 +25,3 @@
  	void *stack_mem;
  	struct rlimit limit;
  	int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks;
--- 
-2.12.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0004-tweak-MODPROBE_CMD-for-cross-compile.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0004-tweak-MODPROBE_CMD-for-cross-compile.patch
index aaeaa72..517b9a5 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0004-tweak-MODPROBE_CMD-for-cross-compile.patch
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0004-tweak-MODPROBE_CMD-for-cross-compile.patch
@@ -1,6 +1,6 @@
-From 0012ea63f6070a5d41fa380970f9c30b953237d2 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Tue, 25 Oct 2016 11:59:40 +0000
+From 3bba45890985b877b823836e78a1c8ac3c878856 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 31 Jul 2018 15:04:29 +0800
 Subject: [PATCH 4/4] tweak MODPROBE_CMD for cross compile
 
 Lvm uses variable MODPROBE_CMD at runtime, so build time detection of modprobe
@@ -16,23 +16,23 @@
 Upstream-Status: Inappropriate [oe specific]
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
 ---
- configure.in | 1 -
- 1 file changed, 1 deletion(-)
+ configure.ac | 2 --
+ 1 file changed, 2 deletions(-)
 
-diff --git a/configure.in b/configure.in
-index cc77aab..a3579f2 100644
---- a/configure.in
-+++ b/configure.in
-@@ -1853,7 +1853,6 @@ if test "$UDEV_SYNC" = yes; then
+diff --git a/configure.ac b/configure.ac
+index e427708..aa374ea 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1791,8 +1791,6 @@ if test "$BUILD_DMFILEMAPD" = yes; then
  fi
  
  ################################################################################
--AC_PATH_TOOL(MODPROBE_CMD, modprobe)
- 
+-AC_PATH_TOOL(MODPROBE_CMD, modprobe, [], [$PATH_SBIN])
+-
  if test -n "$MODPROBE_CMD"; then
  	AC_DEFINE_UNQUOTED([MODPROBE_CMD], ["$MODPROBE_CMD"], [The path to 'modprobe', if available.])
+ fi
 -- 
-2.9.3
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch
index 15aa9f5..e3ce4c8 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch
@@ -1,6 +1,6 @@
-From d8bb25e34d6533ba78eaae697771ee499a66706f Mon Sep 17 00:00:00 2001
+From 51d661ff33bb254d7b335a9c87acf5c6e7a94192 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 2 Aug 2017 03:41:37 -0400
+Date: Tue, 31 Jul 2018 15:08:34 +0800
 Subject: [PATCH] do not build manual
 
 On some host (ubuntu 1404), build manual failed.
@@ -15,24 +15,33 @@
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 ---
- Makefile.in  | 4 ++--
- configure.in | 1 -
- 2 files changed, 2 insertions(+), 3 deletions(-)
+ Makefile.in  | 6 +++---
+ configure.ac | 1 -
+ 2 files changed, 3 insertions(+), 4 deletions(-)
 
 diff --git a/Makefile.in b/Makefile.in
-index 31d428d..24f89a2 100644
+index e2f5a84..acf31e5 100644
 --- a/Makefile.in
 +++ b/Makefile.in
 @@ -18,7 +18,7 @@ top_builddir = @top_builddir@
  abs_top_builddir = @abs_top_builddir@
  abs_top_srcdir = @abs_top_srcdir@
  
--SUBDIRS = conf daemons include lib libdaemon libdm man scripts tools
-+SUBDIRS = conf daemons include lib libdaemon libdm scripts tools
+-SUBDIRS = conf daemons include lib libdaemon libdm man scripts device_mapper tools
++SUBDIRS = conf daemons include lib libdaemon libdm scripts device_mapper tools
  
  ifeq ("@UDEV_RULES@", "yes")
    SUBDIRS += udev
-@@ -69,7 +69,7 @@ liblvm.device-mapper: include.device-mapper
+@@ -41,7 +41,7 @@ ifeq ($(MAKECMDGOALS),clean)
+ endif
+ # FIXME Should use intermediate Makefiles here!
+ ifeq ($(MAKECMDGOALS),distclean)
+-  SUBDIRS = conf include man test scripts \
++  SUBDIRS = conf include test scripts \
+     libdaemon lib tools daemons libdm \
+     udev po liblvm python device_mapper
+ tools.distclean: test.distclean
+@@ -71,7 +71,7 @@ liblvm.device-mapper: include.device-mapper
  daemons.device-mapper: libdm.device-mapper
  tools.device-mapper: libdm.device-mapper
  scripts.device-mapper: include.device-mapper
@@ -41,11 +50,11 @@
  
  ifeq ("@INTL@", "yes")
  lib.pofile: include.pofile
-diff --git a/configure.in b/configure.in
-index 1dc8819..108ace4 100644
---- a/configure.in
-+++ b/configure.in
-@@ -2213,7 +2213,6 @@ libdm/Makefile
+diff --git a/configure.ac b/configure.ac
+index aa374ea..5a92cba 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -2124,7 +2124,6 @@ libdm/Makefile
  libdm/libdevmapper.pc
  liblvm/Makefile
  liblvm/liblvm2app.pc
@@ -54,5 +63,5 @@
  python/Makefile
  python/setup.py
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.171.bb b/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.171.bb
deleted file mode 100644
index b6ae902..0000000
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.171.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require lvm2.inc
-
-SRC_URI[md5sum] = "153b7bb643eb26073274968e9026fa8f"
-SRC_URI[sha256sum] = "b815a711a2fabaa5c3dc1a4a284df0268bf0f325f0fc0f5c9530c9bbb54b9964"
-
-DEPENDS += "autoconf-archive-native"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-do_install() {
-    oe_runmake 'DESTDIR=${D}' -C libdm install
-}
-
-RRECOMMENDS_${PN}_append_class-target = " lvm2-udevrules"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.180.bb b/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.180.bb
new file mode 100644
index 0000000..26af327
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.180.bb
@@ -0,0 +1,17 @@
+require lvm2.inc
+
+SRC_URI[md5sum] = "bc26da66e96727babbd288bb0f050339"
+SRC_URI[sha256sum] = "24997e26dfc916151707c9da504d38d0473bec3481a8230b676bc079041bead6"
+
+DEPENDS += "autoconf-archive-native"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' -C libdm install
+    oe_runmake 'DESTDIR=${D}' -C tools install_device-mapper
+}
+
+RRECOMMENDS_${PN}_append_class-target = " lvm2-udevrules"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
index 289e07d..26a887e 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
@@ -1,11 +1,11 @@
 HOMEPAGE = "https://www.sourceware.org/lvm2/"
 SECTION = "utils"
 DESCRIPTION = "LVM2 is a set of utilities to manage logical volumes in Linux."
-LICENSE = "GPLv2 & LGPLv2"
+LICENSE = "GPLv2 & LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=12713b4d9386533feeb07d6e4831765a \
                     file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24"
 
-DEPENDS += "util-linux"
+DEPENDS += "util-linux libaio"
 
 SRC_URI = "ftp://sources.redhat.com/pub/lvm2/old/LVM2.${PV}.tgz \
            file://lvm.conf \
@@ -17,6 +17,10 @@
            file://0005-do-not-build-manual.patch \
            file://0006-start-lvm2-monitor.service-after-tmp.mount.patch \
            "
+
+UPSTREAM_CHECK_URI = "ftp://sources.redhat.com/pub/lvm2/"
+UPSTREAM_CHECK_REGEX = "LVM2\.(?P<pver>\d+(\.\d+)+)"
+
 S = "${WORKDIR}/LVM2.${PV}"
 
 inherit autotools-brokensep pkgconfig systemd license
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
index e85818d..7f5dd93 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
@@ -1,4 +1,4 @@
-From 0a8e466fcf99622896e070c5133165e4278e8cfb Mon Sep 17 00:00:00 2001
+From 5a3e13ae94318c2bed60f875bb3852c45ce0113c Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Thu, 25 May 2017 05:27:11 -0400
 Subject: [PATCH] explicitly do not install libdm
@@ -9,12 +9,14 @@
 Upstream-Status: Inappropriate [meta-oe specific]
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Signed-off-by: Andrew Bresticker <abrestic@waymo.com>
 ---
  libdm/Makefile.in | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ tools/Makefile.in | 3 ++-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
 
 diff --git a/libdm/Makefile.in b/libdm/Makefile.in
-index 3c9a4ce..45c91c6 100644
+index 66ec39513..c779c9d86 100644
 --- a/libdm/Makefile.in
 +++ b/libdm/Makefile.in
 @@ -77,9 +77,11 @@ ifeq ("@PKGCONFIG@", "yes")
@@ -23,14 +25,28 @@
  
 -install: $(INSTALL_TYPE) install_include
 +install:
-+	echo "Do not install device mappler in lvm2"
++	echo "Do not install device mapper in lvm2"
  
 -install_device-mapper: install
 +install_device-mapper:
-+	echo "Do not install device mappler in lvm2"
++	echo "Do not install device mapper in lvm2"
  
  install_include: $(srcdir)/libdevmapper.h
  	$(INSTALL_DATA) -D $< $(includedir)/$(<F)
+diff --git a/tools/Makefile.in b/tools/Makefile.in
+index 103b76732..63ba7fc04 100644
+--- a/tools/Makefile.in
++++ b/tools/Makefile.in
+@@ -267,7 +267,8 @@ install_dmsetup_static: dmsetup.static
+ 	$(Q) $(INSTALL_PROGRAM) -D $< $(staticdir)/$(<F)
+ 	$(Q) $(LN_S) -f $(<F) $(staticdir)/dmstats
+ 
+-install_device-mapper: $(INSTALL_DMSETUP_TARGETS)
++install_device-mapper:
++	echo "Do not install device mapper in lvm2"
+ 
+ install_lvm2: $(INSTALL_LVM_TARGETS)
+ 
 -- 
-2.8.1
+2.19.0.397.gdd90340f6a-goog
 
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.171.bb b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.180.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.171.bb
rename to meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.180.bb
index 84881e7..7bd7b09 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.171.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.180.bb
@@ -1,12 +1,16 @@
 require lvm2.inc
 
-SRC_URI[md5sum] = "153b7bb643eb26073274968e9026fa8f"
-SRC_URI[sha256sum] = "b815a711a2fabaa5c3dc1a4a284df0268bf0f325f0fc0f5c9530c9bbb54b9964"
+SRC_URI[md5sum] = "bc26da66e96727babbd288bb0f050339"
+SRC_URI[sha256sum] = "24997e26dfc916151707c9da504d38d0473bec3481a8230b676bc079041bead6"
 
 SRC_URI += "file://0001-explicitly-do-not-install-libdm.patch"
 
 DEPENDS += "autoconf-archive-native"
 
+inherit multilib_script
+
+MULTILIB_SCRIPTS = "${PN}:${sysconfdir}/lvm/lvm.conf"
+
 CACHED_CONFIGUREVARS += "MODPROBE_CMD=${base_sbindir}/modprobe"
 
 do_install_append() {
@@ -34,6 +38,8 @@
 
 TARGET_CC_ARCH += "${LDFLAGS}"
 
+EXTRA_OECONF_append_class-nativesdk = " --with-confdir=${sysconfdir}"
+
 FILES_${PN} += "${libdir}/device-mapper/*.so"
 FILES_${PN}-scripts = " \
     ${sbindir}/blkdeactivate \
@@ -44,7 +50,9 @@
 # Specified explicitly for the udev rules, just in case that it does not get picked
 # up automatically:
 FILES_${PN}-udevrules = "${nonarch_base_libdir}/udev/rules.d"
+RDEPENDS_${PN}-udevrules = "${PN}"
 RDEPENDS_${PN}_append_class-target = " libdevmapper"
+RDEPENDS_${PN}_append_class-nativesdk = " libdevmapper"
 
 RDEPENDS_${PN}-scripts = "${PN} (= ${EXTENDPKGV}) bash"
 RRECOMMENDS_${PN}_class-target = "${PN}-scripts (= ${EXTENDPKGV})"
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb b/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb
index f876144..cc33cba 100644
--- a/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mcelog/mce-inject_git.bb
@@ -8,6 +8,10 @@
 
 SRCREV = "4cbe46321b4a81365ff3aafafe63967264dbfec5"
 
+UPSTREAM_CHECK_COMMITS = "1"
+
+DEPENDS = "bison-native"
+
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://README;beginline=30;md5=94c18755082a2da9c9cf97cba3ad47d6"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_1.49.bb b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_161.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_1.49.bb
rename to meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_161.bb
index 84633a7..dfca385 100644
--- a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_1.49.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_161.bb
@@ -9,10 +9,10 @@
     file://run-ptest \
 "
 
-SRCREV = "2cfdf29b2ef98ccd5ed42cdde8bbe437e0d6412f"
+SRCREV = "6ed93e30f83519b0ab71f8ecd156b8ff0b2912b6"
 
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://README.md;md5=279840fabb191e6cd9150492d31b0e20"
+LIC_FILES_CHKSUM = "file://README.md;md5=74bb47b9a68850cb398665cf78b31de6"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-kpartx-include-limits.h-for-PATH_MAX.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-kpartx-include-limits.h-for-PATH_MAX.patch
deleted file mode 100644
index 46dd8e2..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-kpartx-include-limits.h-for-PATH_MAX.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 330028a5a904a0da3788141030e614569dc5aaa7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 14 Jul 2017 23:28:12 -0700
-Subject: [PATCH] kpartx: include limits.h for PATH_MAX
-
-lopart.c:76:12: error: 'PATH_MAX' undeclared (first use in this function); did you mean 'INT8_MAX'?
-  char path[PATH_MAX];
-            ^~~~~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- kpartx/lopart.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/kpartx/lopart.c b/kpartx/lopart.c
-index 7005445..5efe5dc 100644
---- a/kpartx/lopart.c
-+++ b/kpartx/lopart.c
-@@ -22,6 +22,7 @@
- #include <errno.h>
- #include <stdlib.h>
- #include <unistd.h>
-+#include <limits.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
- #include <sys/mman.h>
--- 
-2.13.3
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-attempt-at-common-multipath.rules.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-attempt-at-common-multipath.rules.patch
deleted file mode 100644
index acb4269..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-attempt-at-common-multipath.rules.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 5ab50e0cb888e553a2635bbbf81eea3cdeffee60 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Wed, 12 Apr 2017 09:07:51 -0500
-Subject: [PATCH 01/14] multipath: attempt at common multipath.rules
-
-This is a proposal to try and bring the Redhat and SuSE multipath.rules
-closer. There are a couple of changes that I'd like some input on.
-
-The big change is moving the kpartx call into the multipath rules.  Half
-of the current kpartx.rules file is about creating symlinks for multiple
-types of dm devices. The other half auto-creates kpartx devices on top
-of multipath devices. Since it is only creating kpartx devices on top of
-multipath devices, I've moved the these rules into multipath.rules, or
-rather, I've replaced them with the redhat rules in multipath.rules. The
-biggest difference is the kpartx isn't run on every reload.  It works
-with the 11-dm-mpath.rules code to not run kpartx on multipathd
-generated reloads or when there aren't any working paths. It does
-remember if it didn't get to run kpartx when it was supposed to (because
-there were no valid paths or the device was suspended) and will make
-sure to run it on the next possible uevent.
-
-The other change is the redhat multipath rules remove the partition
-device nodes for devices claimed by multipath. The udev rule will only
-do this one time (both to keep from running partx on every event, and so
-that if users manually reread the partition table, we don't keep
-removing them when clearly they are wanted). Redhat does this because we
-had multiple customer issues where they were using the scsi partitions
-instead of the kpartx devices. Obviously, with setting the partition
-devices to not ready and clearing their fs_type, this isn't essential,
-but it has helped make customers do the right thing.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- kpartx/kpartx.rules       |  8 --------
- multipath/multipath.rules | 27 ++++++++++++++++++++++++---
- 2 files changed, 24 insertions(+), 11 deletions(-)
-
-diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules
-index a958791..906e320 100644
---- a/kpartx/kpartx.rules
-+++ b/kpartx/kpartx.rules
-@@ -34,12 +34,4 @@ ENV{ID_FS_LABEL_ENC}=="?*", IMPORT{db}="ID_FS_LABEL_ENC"
- ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", \
- 	SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
- 
--# Create dm tables for partitions
--ENV{DM_ACTION}=="PATH_FAILED|PATH_REINSTATED", GOTO="kpartx_end"
--ENV{DM_NR_VALID_PATHS}=="0", GOTO="kpartx_end"
--ENV{ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1"
--ENV{DM_SUBSYSTEM_UDEV_FLAG1}=="1", GOTO="kpartx_end"
--ENV{DM_STATE}!="SUSPENDED", ENV{DM_UUID}=="mpath-*", \
--	RUN+="/sbin/kpartx -un -p -part /dev/$name"
--
- LABEL="kpartx_end"
-diff --git a/multipath/multipath.rules b/multipath/multipath.rules
-index 86defc0..616a04c 100644
---- a/multipath/multipath.rules
-+++ b/multipath/multipath.rules
-@@ -1,13 +1,13 @@
- # Set DM_MULTIPATH_DEVICE_PATH if the device should be handled by multipath
- SUBSYSTEM!="block", GOTO="end_mpath"
- ACTION!="add|change", GOTO="end_mpath"
--KERNEL!="sd*|dasd*", GOTO="end_mpath"
--
-+KERNEL!="sd*|dasd*|rbd*|dm-*", GOTO="end_mpath"
- IMPORT{cmdline}="nompath"
- ENV{nompath}=="?*", GOTO="end_mpath"
- IMPORT{cmdline}="multipath"
- ENV{multipath}=="off", GOTO="end_mpath"
- 
-+KERNEL=="dm-*", GOTO="check_kpartx"
- ENV{DEVTYPE}!="partition", GOTO="test_dev"
- IMPORT{parent}="DM_MULTIPATH_DEVICE_PATH"
- ENV{DM_MULTIPATH_DEVICE_PATH}=="1", ENV{ID_FS_TYPE}="none", \
-@@ -21,7 +21,28 @@ TEST!="$env{MPATH_SBIN_PATH}/multipath", ENV{MPATH_SBIN_PATH}="/usr/sbin"
- 
- ENV{DM_MULTIPATH_DEVICE_PATH}!="1", \
- 	PROGRAM=="$env{MPATH_SBIN_PATH}/multipath -u %k", \
--	ENV{DM_MULTIPATH_DEVICE_PATH}="1", ENV{ID_FS_TYPE}="none", \
-+	ENV{DM_MULTIPATH_DEVICE_PATH}="1", ENV{ID_FS_TYPE}="mpath_member", \
- 	ENV{SYSTEMD_READY}="0"
- 
-+ENV{DM_MULTIPATH_DEVICE_PATH}!="1", GOTO="end_mpath"
-+
-+IMPORT{db}="DM_MULTIPATH_WIPE_PARTS"
-+ENV{DM_MULTIPATH_WIPE_PARTS}!="1", ENV{DM_MULTIPATH_WIPE_PARTS}="1", \
-+	RUN+="/sbin/partx -d --nr 1-1024 $env{DEVNAME}"
-+GOTO="end_mpath"
-+
-+LABEL="check_kpartx"
-+
-+IMPORT{db}="DM_MULTIPATH_NEED_KPARTX"
-+ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1"
-+ENV{DM_SUBSYSTEM_UDEV_FLAG1}=="1", GOTO="end_mpath"
-+ACTION!="change", GOTO="end_mpath"
-+ENV{DM_UUID}!="mpath-?*", GOTO="end_mpath"
-+ENV{DM_ACTIVATION}=="1", ENV{DM_MULTIPATH_NEED_KPARTX}="1"
-+ENV{DM_SUSPENDED}=="1", GOTO="end_mpath"
-+ENV{DM_ACTION}=="PATH_FAILED", GOTO="end_mpath"
-+ENV{DM_ACTIVATION}!="1", ENV{DM_MULTIPATH_NEED_KPARTX}!="1", GOTO="end_mpath"
-+RUN+="/sbin/kpartx -un -p -part /dev/$name"
-+ENV{DM_MULTIPATH_NEED_KPARTX}=""
-+
- LABEL="end_mpath"
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch
new file mode 100644
index 0000000..1d983e9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch
@@ -0,0 +1,42 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Wed, 11 Apr 2018 15:14:13 +0200
+Subject: [PATCH] multipath-tools: add RDAC SUN/ArrayStorage to hwtable
+
+Already in scsi_dh: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/scsi_dh.c#n70
+
+Cc: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: DM ML <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/hwtable.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
+index 88b4700..827e899 100644
+--- a/libmultipath/hwtable.c
++++ b/libmultipath/hwtable.c
+@@ -890,6 +890,18 @@ static struct hwentry default_hw[] = {
+ 		.no_path_retry = 30,
+ 	},
+ 	{
++		.vendor        = "SUN",
++		.product       = "ArrayStorage",
++		.bl_product    = "Universal Xport",
++		.pgpolicy      = GROUP_BY_PRIO,
++		.checker_name  = RDAC,
++		.features      = "2 pg_init_retries 50",
++		.hwhandler     = "1 rdac",
++		.prio_name     = PRIO_RDAC,
++		.pgfailback    = -FAILBACK_IMMEDIATE,
++		.no_path_retry = 30,
++	},
++	{
+ 		/* ZFS Storage Appliances */
+ 		.vendor        = "SUN",
+ 		.product       = "(Sun Storage|ZFS Storage|COMSTAR)",
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-RH-fixup-udev-rules-for-redhat.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-RH-fixup-udev-rules-for-redhat.patch
deleted file mode 100644
index e63d2eb..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-RH-fixup-udev-rules-for-redhat.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 158255383c02d3fb81c82fb9ec6fd36fb234f68e Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Thu, 13 Apr 2017 07:22:23 -0500
-Subject: [PATCH 02/14] RH: fixup udev rules for redhat
-
-The multipath rules need to run after scsi_id is run. This means moving
-them after 60-persistent-storage.rules for redhat. Also, we don't
-currently set up all the symlinks that SuSE does. If we want them, they
-should be done in the device-mapper package, since they are for all
-device-mapper devices. Redhat also uses a different naming scheme for
-partitions than SuSE.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- Makefile.inc              |  2 +-
- kpartx/Makefile           | 14 +++++++-------
- multipath/Makefile        |  4 ++--
- multipath/multipath.rules |  3 ++-
- 4 files changed, 12 insertions(+), 11 deletions(-)
-
-diff --git a/Makefile.inc b/Makefile.inc
-index 1815f9a..2591fa9 100644
---- a/Makefile.inc
-+++ b/Makefile.inc
-@@ -47,7 +47,7 @@ endif
- 
- prefix		=
- exec_prefix	= $(prefix)
--bindir		= $(exec_prefix)/sbin
-+bindir		= $(exec_prefix)/usr/sbin
- libudevdir	= $(prefix)/$(SYSTEMDPATH)/udev
- udevrulesdir	= $(libudevdir)/rules.d
- multipathdir	= $(TOPDIR)/libmultipath
-diff --git a/kpartx/Makefile b/kpartx/Makefile
-index 7b75032..bfa6fe8 100644
---- a/kpartx/Makefile
-+++ b/kpartx/Makefile
-@@ -26,19 +26,19 @@ $(EXEC): $(OBJS)
- install: $(EXEC) $(EXEC).8
- 	$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
- 	$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
--	$(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)
--	$(INSTALL_PROGRAM) -m 755 kpartx_id $(DESTDIR)$(libudevdir)
--	$(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)/rules.d
--	$(INSTALL_PROGRAM) -m 644 kpartx.rules $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
-+#	$(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)
-+#	$(INSTALL_PROGRAM) -m 755 kpartx_id $(DESTDIR)$(libudevdir)
-+#	$(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)/rules.d
-+#	$(INSTALL_PROGRAM) -m 644 kpartx.rules $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
- 	$(INSTALL_PROGRAM) -d $(DESTDIR)$(man8dir)
- 	$(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(man8dir)
- 
- uninstall:
- 	$(RM) $(DESTDIR)$(bindir)/$(EXEC)
- 	$(RM) $(DESTDIR)$(man8dir)/$(EXEC).8.gz
--	$(RM) $(DESTDIR)$(libudevdir)/kpartx_id
--	$(RM) $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
--	$(RM) $(DESTDIR)$(libudevdir)/rules.d/67-kpartx-compat.rules
-+#	$(RM) $(DESTDIR)$(libudevdir)/kpartx_id
-+#	$(RM) $(DESTDIR)$(libudevdir)/rules.d/66-kpartx.rules
-+#	$(RM) $(DESTDIR)$(libudevdir)/rules.d/67-kpartx-compat.rules
- 
- clean:
- 	$(RM) core *.o $(EXEC) *.gz
-diff --git a/multipath/Makefile b/multipath/Makefile
-index c85314e..1e9ee4b 100644
---- a/multipath/Makefile
-+++ b/multipath/Makefile
-@@ -24,7 +24,7 @@ install:
- 	$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/
- 	$(INSTALL_PROGRAM) -d $(DESTDIR)$(udevrulesdir)
- 	$(INSTALL_PROGRAM) -m 644 11-dm-mpath.rules $(DESTDIR)$(udevrulesdir)
--	$(INSTALL_PROGRAM) -m 644 $(EXEC).rules $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
-+	$(INSTALL_PROGRAM) -m 644 $(EXEC).rules $(DESTDIR)$(libudevdir)/rules.d/62-multipath.rules
- 	$(INSTALL_PROGRAM) -d $(DESTDIR)$(man8dir)
- 	$(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(man8dir)
- 	$(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir)
-@@ -33,7 +33,7 @@ install:
- uninstall:
- 	$(RM) $(DESTDIR)$(bindir)/$(EXEC)
- 	$(RM) $(DESTDIR)$(udevrulesdir)/11-dm-mpath.rules
--	$(RM) $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
-+	$(RM) $(DESTDIR)$(libudevdir)/rules.d/62-multipath.rules
- 	$(RM) $(DESTDIR)$(man8dir)/$(EXEC).8.gz
- 	$(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
- 
-diff --git a/multipath/multipath.rules b/multipath/multipath.rules
-index 616a04c..4d78b98 100644
---- a/multipath/multipath.rules
-+++ b/multipath/multipath.rules
-@@ -33,6 +33,7 @@ GOTO="end_mpath"
- 
- LABEL="check_kpartx"
- 
-+ENV{DM_UUID}=="mpath-?*|part[0-9]*-mpath-?*", OPTIONS+="link_priority=10"
- IMPORT{db}="DM_MULTIPATH_NEED_KPARTX"
- ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", IMPORT{db}="DM_SUBSYSTEM_UDEV_FLAG1"
- ENV{DM_SUBSYSTEM_UDEV_FLAG1}=="1", GOTO="end_mpath"
-@@ -42,7 +43,7 @@ ENV{DM_ACTIVATION}=="1", ENV{DM_MULTIPATH_NEED_KPARTX}="1"
- ENV{DM_SUSPENDED}=="1", GOTO="end_mpath"
- ENV{DM_ACTION}=="PATH_FAILED", GOTO="end_mpath"
- ENV{DM_ACTIVATION}!="1", ENV{DM_MULTIPATH_NEED_KPARTX}!="1", GOTO="end_mpath"
--RUN+="/sbin/kpartx -un -p -part /dev/$name"
-+RUN+="/sbin/kpartx -un /dev/$name"
- ENV{DM_MULTIPATH_NEED_KPARTX}=""
- 
- LABEL="end_mpath"
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch
new file mode 100644
index 0000000..73f000a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch
@@ -0,0 +1,33 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Tue, 24 Apr 2018 15:03:40 +0200
+Subject: [PATCH] multipath-tools: remove "c" from __cpluscplus, misspelled
+
+found by cppcheck(http://cppcheck.sf.net/):
+[libmpathcmd/mpath_cmd.h:24]: (error) Invalid number of character '{' when these macros are defined: '__cpluscplus'.
+
+Cc: Benjamin Marzinski <bmarzins@redhat.com>
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: DM ML <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmpathcmd/mpath_cmd.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libmpathcmd/mpath_cmd.h b/libmpathcmd/mpath_cmd.h
+index aaa8da9..df9d938 100644
+--- a/libmpathcmd/mpath_cmd.h
++++ b/libmpathcmd/mpath_cmd.h
+@@ -20,7 +20,7 @@
+ #ifndef LIB_MPATH_CMD_H
+ #define LIB_MPATH_CMD_H
+ 
+-#ifdef __cpluscplus
++#ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch
new file mode 100644
index 0000000..7358e1a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch
@@ -0,0 +1,43 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Thu, 12 Apr 2018 18:17:13 +0200
+Subject: [PATCH] multipath-tools: remove emacs autoconfig of kpartx/gpt.h
+
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: DM ML <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ kpartx/gpt.h | 19 -------------------
+ 1 file changed, 19 deletions(-)
+
+diff --git a/kpartx/gpt.h b/kpartx/gpt.h
+index 66ce8f1..7bb54b7 100644
+--- a/kpartx/gpt.h
++++ b/kpartx/gpt.h
+@@ -109,22 +109,3 @@ int read_gpt_pt (int fd, struct slice all, struct slice *sp, int ns);
+ 
+ 
+ #endif
+-
+-/*
+- * Overrides for Emacs so that we follow Linus's tabbing style.
+- * Emacs will notice this stuff at the end of the file and automatically
+- * adjust the settings for this buffer only.  This must remain at the end
+- * of the file.
+- * ---------------------------------------------------------------------------
+- * Local variables:
+- * c-indent-level: 4
+- * c-brace-imaginary-offset: 0
+- * c-brace-offset: -4
+- * c-argdecl-indent: 4
+- * c-label-offset: -4
+- * c-continued-statement-offset: 4
+- * c-continued-brace-offset: 0
+- * indent-tabs-mode: nil
+- * tab-width: 8
+- * End:
+- */
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-multipath-tools-replace-FSF-address-with-a-www-point.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-multipath-tools-replace-FSF-address-with-a-www-point.patch
new file mode 100644
index 0000000..13f18b5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-multipath-tools-replace-FSF-address-with-a-www-point.patch
@@ -0,0 +1,191 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Fri, 11 May 2018 15:42:43 +0200
+Subject: [PATCH] multipath-tools: replace FSF address with a www pointer
+
+Less prone to future modifications, new FSF licences
+point exactly to this url: <http://www.gnu.org/licenses/>.
+And sending a smail to FSF is outdated.
+
+First clean up was done in 5619a39c433ac3d10a88079593cec1aa6472cbeb
+
+Cc: Martin Wilck <mwilck@suse.com>
+Cc: Benjamin Marzinski <bmarzins@redhat.com>
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: DM ML <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/dm-generic.c   | 4 +---
+ libmultipath/dm-generic.h   | 4 +---
+ libmultipath/foreign.c      | 4 +---
+ libmultipath/foreign.h      | 4 +---
+ libmultipath/foreign/nvme.c | 4 +---
+ libmultipath/generic.c      | 4 +---
+ libmultipath/generic.h      | 4 +---
+ tests/dmevents.c            | 2 +-
+ tests/parser.c              | 2 +-
+ tests/uevent.c              | 2 +-
+ tests/util.c                | 2 +-
+ 11 files changed, 11 insertions(+), 25 deletions(-)
+
+diff --git a/libmultipath/dm-generic.c b/libmultipath/dm-generic.c
+index bdc9ca0..d752991 100644
+--- a/libmultipath/dm-generic.c
++++ b/libmultipath/dm-generic.c
+@@ -12,9 +12,7 @@
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+-  along with this program; if not, write to the Free Software
+-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+-  USA.
++  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+  */
+ 
+ #include <stdint.h>
+diff --git a/libmultipath/dm-generic.h b/libmultipath/dm-generic.h
+index 5d59724..986429f 100644
+--- a/libmultipath/dm-generic.h
++++ b/libmultipath/dm-generic.h
+@@ -12,9 +12,7 @@
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+-  along with this program; if not, write to the Free Software
+-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+-  USA.
++  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+  */
+ #ifndef _DM_GENERIC_H
+ #define _DM_GENERIC_H
+diff --git a/libmultipath/foreign.c b/libmultipath/foreign.c
+index 7217184..80b399b 100644
+--- a/libmultipath/foreign.c
++++ b/libmultipath/foreign.c
+@@ -12,9 +12,7 @@
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+-  along with this program; if not, write to the Free Software
+-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+-  USA.
++  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+ 
+ #include <sys/sysmacros.h>
+diff --git a/libmultipath/foreign.h b/libmultipath/foreign.h
+index 973f368..697f12f 100644
+--- a/libmultipath/foreign.h
++++ b/libmultipath/foreign.h
+@@ -12,9 +12,7 @@
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+-  along with this program; if not, write to the Free Software
+-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+-  USA.
++  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+ #ifndef _FOREIGN_H
+ #define _FOREIGN_H
+diff --git a/libmultipath/foreign/nvme.c b/libmultipath/foreign/nvme.c
+index 235f75d..280b6bd 100644
+--- a/libmultipath/foreign/nvme.c
++++ b/libmultipath/foreign/nvme.c
+@@ -12,9 +12,7 @@
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+-  along with this program; if not, write to the Free Software
+-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+-  USA.
++  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+ 
+ #include <sys/sysmacros.h>
+diff --git a/libmultipath/generic.c b/libmultipath/generic.c
+index 6f7a2cd..0d1e632 100644
+--- a/libmultipath/generic.c
++++ b/libmultipath/generic.c
+@@ -12,9 +12,7 @@
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+-  along with this program; if not, write to the Free Software
+-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+-  USA.
++  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+  */
+ 
+ 
+diff --git a/libmultipath/generic.h b/libmultipath/generic.h
+index 7f7fe66..6346ffe 100644
+--- a/libmultipath/generic.h
++++ b/libmultipath/generic.h
+@@ -12,9 +12,7 @@
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+-  along with this program; if not, write to the Free Software
+-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+-  USA.
++  along with this program.  If not, see <https://www.gnu.org/licenses/>.
+  */
+ #ifndef _GENERIC_H
+ #define _GENERIC_H
+diff --git a/tests/dmevents.c b/tests/dmevents.c
+index bba51dc..3399c81 100644
+--- a/tests/dmevents.c
++++ b/tests/dmevents.c
+@@ -12,7 +12,7 @@
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
++ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+  *
+  */
+ 
+diff --git a/tests/parser.c b/tests/parser.c
+index a7e7598..29859da 100644
+--- a/tests/parser.c
++++ b/tests/parser.c
+@@ -12,7 +12,7 @@
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
++ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+  *
+  */
+ 
+diff --git a/tests/uevent.c b/tests/uevent.c
+index acfcb14..b0d0bfd 100644
+--- a/tests/uevent.c
++++ b/tests/uevent.c
+@@ -12,7 +12,7 @@
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
++ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+  *
+  */
+ 
+diff --git a/tests/util.c b/tests/util.c
+index 113b134..839effd 100644
+--- a/tests/util.c
++++ b/tests/util.c
+@@ -12,7 +12,7 @@
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
++ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+  *
+  */
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch
new file mode 100644
index 0000000..953e739
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch
@@ -0,0 +1,156 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Fri, 11 May 2018 15:43:11 +0200
+Subject: [PATCH] multipath-tools: Remove trailing/leading whitespaces and
+ reformat code
+
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: device-mapper development <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ Makefile.inc           | 23 +++++++++++------------
+ kpartx/mac.h           |  2 +-
+ kpartx/test-kpartx     |  2 +-
+ libmpathcmd/Makefile   |  2 +-
+ libmultipath/hwtable.c | 14 +++++++-------
+ libmultipath/print.h   |  2 +-
+ multipathd/main.h      |  6 +++---
+ 7 files changed, 25 insertions(+), 26 deletions(-)
+
+diff --git a/Makefile.inc b/Makefile.inc
+index 57a1835..af2f5ba 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -103,21 +103,20 @@ LDFLAGS		= -Wl,-z,relro -Wl,-z,now
+ BIN_LDFLAGS	= -pie
+ 
+ # Check whether a function with name $1 has been declared in header file $2.
+-check_func =								       \
+-    $(shell								       \
++check_func = $(shell \
+ 	if grep -Eq "^[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \
+-	   found=1;							       \
+-	   status="yes";						       \
+-	else								       \
+-	   found=0;							       \
+-	   status="no";							       \
+-	fi;								       \
+-	echo 1>&2 "Checking for $1 in $2 ... $$status";			       \
+-	echo "$$found"							       \
+-    )
++		found=1; \
++		status="yes"; \
++	else \
++		found=0; \
++		status="no"; \
++	fi; \
++	echo 1>&2 "Checking for $1 in $2 ... $$status"; \
++	echo "$$found" \
++	)
+ 
+ # Checker whether a file with name $1 exists
+-check_file = $(shell	\
++check_file = $(shell \
+ 	if [ -f "$1" ]; then \
+ 		found=1; \
+ 		status="yes"; \
+diff --git a/kpartx/mac.h b/kpartx/mac.h
+index a44cf38..55c3ec9 100644
+--- a/kpartx/mac.h
++++ b/kpartx/mac.h
+@@ -24,7 +24,7 @@ struct mac_driver_desc {
+ 	uint16_t  signature;      /* expected to be MAC_DRIVER_MAGIC */
+ 	uint16_t  block_size;
+ 	uint32_t  block_count;
+-    /* ... more stuff */
++	/* ... more stuff */
+ };
+ 
+ #endif
+diff --git a/kpartx/test-kpartx b/kpartx/test-kpartx
+index 9cee20f..d2001dc 100755
+--- a/kpartx/test-kpartx
++++ b/kpartx/test-kpartx
+@@ -131,7 +131,7 @@ step "create DM devices (spans)"
+ # They also serve as DM devices to test partition removal on those.
+ 
+ TABLE="\
+-0 $((SIZE/SECTSIZ-OFFS)) linear $DEV1 $OFFS 
++0 $((SIZE/SECTSIZ-OFFS)) linear $DEV1 $OFFS
+ $((SIZE/SECTSIZ-OFFS)) $((SIZE/SECTSIZ-OFFS)) linear $DEV2 $OFFS"
+ 
+ SPAN1=kpt
+diff --git a/libmpathcmd/Makefile b/libmpathcmd/Makefile
+index 53c0899..0f6b816 100644
+--- a/libmpathcmd/Makefile
++++ b/libmpathcmd/Makefile
+@@ -27,7 +27,7 @@ uninstall:
+ 	$(RM) $(DESTDIR)$(includedir)/mpath_cmd.h
+ 
+ clean: dep_clean
+-	$(RM) core *.a *.o *.so *.so.* *.gz 
++	$(RM) core *.a *.o *.so *.so.* *.gz
+ 
+ include $(wildcard $(OBJS:.o=.d))
+ 
+diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
+index 827e899..2ca6888 100644
+--- a/libmultipath/hwtable.c
++++ b/libmultipath/hwtable.c
+@@ -78,13 +78,13 @@
+ #endif
+ 
+ static struct hwentry default_hw[] = {
+-       /*
+-	* Generic NVMe
+-	*
+-	* Due to the parsing logic in find_hwe(), generic entries
+-	* have to be put on top of this list, and more specific ones
+-	* below.
+-	*/
++	/*
++	 * Generic NVMe devices
++	 *
++	 * Due to the parsing logic in find_hwe(), generic entries
++	 * have to be put on top of this list, and more specific ones
++	 * below.
++	 */
+ 	{
+ 		.vendor        = "NVME",
+ 		.product       = ".*",
+diff --git a/libmultipath/print.h b/libmultipath/print.h
+index 7ba6438..9b5a23a 100644
+--- a/libmultipath/print.h
++++ b/libmultipath/print.h
+@@ -113,7 +113,7 @@ int _snprint_multipath (const struct gen_multipath *, char *, int,
+ 			const char *, int);
+ #define snprint_multipath(buf, len, fmt, mp, v)				\
+ 	_snprint_multipath(dm_multipath_to_gen(mp), buf, len, fmt,  v)
+-int _snprint_multipath_topology (const struct gen_multipath *, char *, int, 
++int _snprint_multipath_topology (const struct gen_multipath *, char *, int,
+ 				 int verbosity);
+ #define snprint_multipath_topology(buf, len, mpp, v) \
+ 	_snprint_multipath_topology (dm_multipath_to_gen(mpp), buf, len, v)
+diff --git a/multipathd/main.h b/multipathd/main.h
+index af39558..8fd426b 100644
+--- a/multipathd/main.h
++++ b/multipathd/main.h
+@@ -29,11 +29,11 @@ int ev_remove_map (char *, char *, int, struct vectors *);
+ int set_config_state(enum daemon_status);
+ void * mpath_alloc_prin_response(int prin_sa);
+ int prin_do_scsi_ioctl(char *, int rq_servact, struct prin_resp * resp,
+-       int noisy);
++		       int noisy);
+ void dumpHex(const char * , int len, int no_ascii);
+ int prout_do_scsi_ioctl(char * , int rq_servact, int rq_scope,
+-       unsigned int rq_type, struct prout_param_descriptor *param,
+-       int noisy);
++			unsigned int rq_type,
++			struct prout_param_descriptor *param, int noisy);
+ int mpath_pr_event_handle(struct path *pp);
+ void * mpath_pr_event_handler_fn (void * );
+ int update_map_pr(struct multipath *mpp);
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-multipath-tools-fix-compilation-with-musl-libc.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-multipath-tools-fix-compilation-with-musl-libc.patch
new file mode 100644
index 0000000..c6fd5b4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-multipath-tools-fix-compilation-with-musl-libc.patch
@@ -0,0 +1,58 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Fri, 11 May 2018 18:39:44 +0200
+Subject: [PATCH] multipath-tools: fix compilation with musl libc
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In file included from alias.c:15:
+file.h:9:47: error: unknown type name ‘mode_t’; did you mean ‘time_t’?
+ int ensure_directories_exist(const char *str, mode_t dir_mode);
+                                               ^~~~~~
+                                               time_t
+
+sysfs.c: In function ‘sysfs_is_multipathed’:
+sysfs.c:304:15: error: ‘PATH_MAX’ undeclared (first use in this function); did you mean ‘PATH_UP’?
+  char pathbuf[PATH_MAX];
+               ^~~~~~~~
+               PATH_UP
+
+Cc: Martin Wilck <mwilck@suse.com>
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: DM ML <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/file.h  | 2 ++
+ libmultipath/sysfs.c | 1 +
+ 2 files changed, 3 insertions(+)
+
+diff --git a/libmultipath/file.h b/libmultipath/file.h
+index 29520c7..3c75c90 100644
+--- a/libmultipath/file.h
++++ b/libmultipath/file.h
+@@ -5,6 +5,8 @@
+ #ifndef _FILE_H
+ #define _FILE_H
+ 
++#include <sys/stat.h>
++
+ #define FILE_TIMEOUT 30
+ int ensure_directories_exist(const char *str, mode_t dir_mode);
+ int open_file(const char *file, int *can_write, const char *header);
+diff --git a/libmultipath/sysfs.c b/libmultipath/sysfs.c
+index ee72e6a..16e0a73 100644
+--- a/libmultipath/sysfs.c
++++ b/libmultipath/sysfs.c
+@@ -28,6 +28,7 @@
+ #include <dirent.h>
+ #include <libudev.h>
+ #include <fnmatch.h>
++#include <limits.h>
+ 
+ #include "checkers.h"
+ #include "vector.h"
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-RH-trigger-change-uevent-on-new-device-creation.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-RH-trigger-change-uevent-on-new-device-creation.patch
deleted file mode 100644
index 025a351..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-RH-trigger-change-uevent-on-new-device-creation.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From 0d2c9afbd89d79fd700f9c99aa20e5f7c7382027 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Mon, 24 Apr 2017 09:39:57 -0500
-Subject: [PATCH 07/14] RH: trigger change uevent on new device creation
-
-When multipath first sees a path device with user_friendly names
-enabled, it can't know if the device should be multipathed. This means
-that it will not claim the device in udev.  If the device is eventually
-multipathed, multipath should trigger a change uevent to update the udev
-database to claim the device.
-
-This also reverts commit 64e27ec066a001012f44550f095c93443e91d845.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/configure.c | 26 ++++++++++++++++++++++++--
- libmultipath/configure.h |  1 +
- libmultipath/wwids.c     |  4 ++--
- multipath/main.c         |  2 +-
- multipathd/main.c        |  7 ++-----
- 5 files changed, 30 insertions(+), 10 deletions(-)
-
-diff --git a/libmultipath/configure.c b/libmultipath/configure.c
-index bd090d9..843dd09 100644
---- a/libmultipath/configure.c
-+++ b/libmultipath/configure.c
-@@ -422,6 +422,28 @@ trigger_udev_change(const struct multipath *mpp)
- 	udev_device_unref(udd);
- }
- 
-+void
-+trigger_paths_udev_change(const struct multipath *mpp)
-+{
-+	struct pathgroup * pgp;
-+	struct path * pp;
-+	int i, j;
-+
-+	if (!mpp || !mpp->pg)
-+		return;
-+
-+	vector_foreach_slot (mpp->pg, pgp, i) {
-+		if (!pgp->paths)
-+			continue;
-+		vector_foreach_slot(pgp->paths, pp, j) {
-+			if (!pp->udev)
-+				continue;
-+			sysfs_attr_set_value(pp->udev, "uevent", "change",
-+					     strlen("change"));
-+		}
-+	}
-+}
-+
- static int
- is_mpp_known_to_udev(const struct multipath *mpp)
- {
-@@ -802,8 +824,8 @@ int domap(struct multipath *mpp, char *params, int is_daemon)
- 		 * succeeded
- 		 */
- 		mpp->force_udev_reload = 0;
--		if (mpp->action == ACT_CREATE)
--			remember_wwid(mpp->wwid);
-+		if (mpp->action == ACT_CREATE && remember_wwid(mpp->wwid) == 1)
-+			trigger_paths_udev_change(mpp);
- 		if (!is_daemon) {
- 			/* multipath client mode */
- 			dm_switchgroup(mpp->alias, mpp->bestpg);
-diff --git a/libmultipath/configure.h b/libmultipath/configure.h
-index fd7f581..253e29b 100644
---- a/libmultipath/configure.h
-+++ b/libmultipath/configure.h
-@@ -36,3 +36,4 @@ int get_refwwid (enum mpath_cmds cmd, char * dev, enum devtypes dev_type,
- 		 vector pathvec, char **wwid);
- int reload_map(struct vectors *vecs, struct multipath *mpp, int refresh, int is_daemon);
- int sysfs_get_host_adapter_name(struct path *pp, char *adapter_name);
-+void trigger_paths_udev_change(const struct multipath *mpp);
-diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c
-index 88bb72b..249c6c1 100644
---- a/libmultipath/wwids.c
-+++ b/libmultipath/wwids.c
-@@ -319,7 +319,7 @@ remember_wwid(char *wwid)
- 		condlog(3, "wrote wwid %s to wwids file", wwid);
- 	else
- 		condlog(4, "wwid %s already in wwids file", wwid);
--	return 0;
-+	return ret;
- }
- 
- int remember_cmdline_wwid(void)
-@@ -353,7 +353,7 @@ int remember_cmdline_wwid(void)
- 			next++;
- 		}
- 		if (strlen(ptr)) {
--			if (remember_wwid(ptr) != 0)
-+			if (remember_wwid(ptr) < 0)
- 				ret = -1;
- 		}
- 		else {
-diff --git a/multipath/main.c b/multipath/main.c
-index 72585b0..2eda6a3 100644
---- a/multipath/main.c
-+++ b/multipath/main.c
-@@ -336,7 +336,7 @@ configure (struct config *conf, enum mpath_cmds cmd,
- 		}
- 		if (cmd == CMD_ADD_WWID) {
- 			r = remember_wwid(refwwid);
--			if (r == 0)
-+			if (r >= 0)
- 				printf("wwid '%s' added\n", refwwid);
- 			else
- 				printf("failed adding '%s' to wwids file\n",
-diff --git a/multipathd/main.c b/multipathd/main.c
-index 81c76ca..874bcce 100644
---- a/multipathd/main.c
-+++ b/multipathd/main.c
-@@ -2093,7 +2093,8 @@ configure (struct vectors * vecs, int start_waiters)
- 
- 	sync_maps_state(mpvec);
- 	vector_foreach_slot(mpvec, mpp, i){
--		remember_wwid(mpp->wwid);
-+		if (remember_wwid(mpp->wwid) == 1)
-+			trigger_paths_udev_change(mpp);
- 		update_map_pr(mpp);
- 	}
- 
-@@ -2175,10 +2176,6 @@ reconfigure (struct vectors * vecs)
- 		conf->verbosity = verbosity;
- 	if (bindings_read_only)
- 		conf->bindings_read_only = bindings_read_only;
--	if (conf->find_multipaths) {
--		condlog(2, "find_multipaths is set: -n is implied");
--		ignore_new_devs = 1;
--	}
- 	if (ignore_new_devs)
- 		conf->ignore_new_devs = ignore_new_devs;
- 	uxsock_timeout = conf->uxsock_timeout;
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch
new file mode 100644
index 0000000..9e608e1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch
@@ -0,0 +1,27 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Sun, 13 May 2018 00:39:41 +0200
+Subject: [PATCH] multipath-tools: add +x to doc-preclean.pl and split-man.pl
+
+It is not strictly necessary, but it helps identify bin files.
+
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: DM ML <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libdmmp/docs/doc-preclean.pl | 0
+ libdmmp/docs/split-man.pl    | 0
+ 2 files changed, 0 insertions(+), 0 deletions(-)
+ mode change 100644 => 100755 libdmmp/docs/doc-preclean.pl
+ mode change 100644 => 100755 libdmmp/docs/split-man.pl
+
+diff --git a/libdmmp/docs/doc-preclean.pl b/libdmmp/docs/doc-preclean.pl
+old mode 100644
+new mode 100755
+diff --git a/libdmmp/docs/split-man.pl b/libdmmp/docs/split-man.pl
+old mode 100644
+new mode 100755
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-libmultipath-change-how-RADOS-checker-is-enabled.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-libmultipath-change-how-RADOS-checker-is-enabled.patch
deleted file mode 100644
index f678809..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-libmultipath-change-how-RADOS-checker-is-enabled.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 0be174dbedd861d7694b0c7799fe26be31eb32b0 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Fri, 26 May 2017 17:52:57 -0500
-Subject: [PATCH 08/14] libmultipath: change how RADOS checker is enabled
-
-Instead of making the user call "make", "make install" and "make clean"
-with ENABLE_RADOS set correctly, have the makefile check if
-/usr/include/rados/librados.h exists, just like it checks if specific
-functions exist in a file.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- Makefile.inc                   | 13 +++++++++++++
- libmultipath/checkers/Makefile |  3 ++-
- 2 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile.inc b/Makefile.inc
-index 2591fa9..e084fd1 100644
---- a/Makefile.inc
-+++ b/Makefile.inc
-@@ -109,5 +109,18 @@ check_func =								       \
- 	echo "$$found"							       \
-     )
- 
-+# Checker whether a file with name $1 exists
-+check_file = $(shell	\
-+	if [ -f "$1" ]; then \
-+		found=1; \
-+		status="yes"; \
-+	else \
-+		found=0; \
-+		status="no"; \
-+	fi; \
-+	echo 1>&2 "Checking if $1 exists ... $$status"; \
-+	echo "$$found" \
-+	)
-+
- %.o:	%.c
- 	$(CC) $(CFLAGS) -c -o $@ $<
-diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile
-index 732ca9d..bce6b8b 100644
---- a/libmultipath/checkers/Makefile
-+++ b/libmultipath/checkers/Makefile
-@@ -14,7 +14,8 @@ LIBS= \
- 	libcheckemc_clariion.so \
- 	libcheckhp_sw.so \
- 	libcheckrdac.so
--ifneq ($(ENABLE_RADOS),0)
-+
-+ifneq ($(call check_file,/usr/include/rados/librados.h),0)
- LIBS += libcheckrbd.so
- endif
- 
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch
new file mode 100644
index 0000000..3752158
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch
@@ -0,0 +1,784 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Sun, 13 May 2018 00:39:42 +0200
+Subject: [PATCH] multipath-tools: refresh kernel-doc from kernel sources
+
+Cc: Gris Ge <fge@redhat.com>
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: device-mapper development <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libdmmp/docs/kernel-doc | 671 ++++++++++++++++++++++++++----------------------
+ 1 file changed, 368 insertions(+), 303 deletions(-)
+
+diff --git a/libdmmp/docs/kernel-doc b/libdmmp/docs/kernel-doc
+index fee8952..0057d8e 100755
+--- a/libdmmp/docs/kernel-doc
++++ b/libdmmp/docs/kernel-doc
+@@ -1,4 +1,5 @@
+ #!/usr/bin/env perl
++# SPDX-License-Identifier: GPL-2.0
+ 
+ use warnings;
+ use strict;
+@@ -328,13 +329,15 @@ my $lineprefix="";
+ use constant {
+     STATE_NORMAL        => 0, # normal code
+     STATE_NAME          => 1, # looking for function name
+-    STATE_FIELD         => 2, # scanning field start
+-    STATE_PROTO         => 3, # scanning prototype
+-    STATE_DOCBLOCK      => 4, # documentation block
+-    STATE_INLINE        => 5, # gathering documentation outside main block
++    STATE_BODY_MAYBE    => 2, # body - or maybe more description
++    STATE_BODY          => 3, # the body of the comment
++    STATE_PROTO         => 4, # scanning prototype
++    STATE_DOCBLOCK      => 5, # documentation block
++    STATE_INLINE        => 6, # gathering documentation outside main block
+ };
+ my $state;
+ my $in_doc_sect;
++my $leading_space;
+ 
+ # Inline documentation state
+ use constant {
+@@ -363,7 +366,7 @@ my $doc_sect = $doc_com .
+ my $doc_content = $doc_com_body . '(.*)';
+ my $doc_block = $doc_com . 'DOC:\s*(.*)?';
+ my $doc_inline_start = '^\s*/\*\*\s*$';
+-my $doc_inline_sect = '\s*\*\s*(@[\w\s]+):(.*)';
++my $doc_inline_sect = '\s*\*\s*(@\s*[\w][\w\.]*\s*):(.*)';
+ my $doc_inline_end = '^\s*\*/\s*$';
+ my $doc_inline_oneline = '^\s*/\*\*\s*(@[\w\s]+):\s*(.*)\s*\*/\s*$';
+ my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;';
+@@ -553,10 +556,9 @@ sub output_highlight {
+ 	}
+ 	if ($line eq ""){
+ 	    if (! $output_preformatted) {
+-		print $lineprefix, local_unescape($blankline);
++		print $lineprefix, $blankline;
+ 	    }
+ 	} else {
+-	    $line =~ s/\\\\\\/\&/g;
+ 	    if ($output_mode eq "man" && substr($line, 0, 1) eq ".") {
+ 		print "\\&$line";
+ 	    } else {
+@@ -747,17 +749,73 @@ sub output_blockhead_rst(%) {
+     }
+ }
+ 
+-sub output_highlight_rst {
+-    my $contents = join "\n",@_;
+-    my $line;
+-
+-    # undo the evil effects of xml_escape() earlier
+-    $contents = xml_unescape($contents);
+-
++#
++# Apply the RST highlights to a sub-block of text.
++#   
++sub highlight_block($) {
++    # The dohighlight kludge requires the text be called $contents
++    my $contents = shift;
+     eval $dohighlight;
+     die $@ if $@;
++    return $contents;
++}
+ 
+-    foreach $line (split "\n", $contents) {
++#
++# Regexes used only here.
++#
++my $sphinx_literal = '^[^.].*::$';
++my $sphinx_cblock = '^\.\.\ +code-block::';
++
++sub output_highlight_rst {
++    my $input = join "\n",@_;
++    my $output = "";
++    my $line;
++    my $in_literal = 0;
++    my $litprefix;
++    my $block = "";
++
++    foreach $line (split "\n",$input) {
++	#
++	# If we're in a literal block, see if we should drop out
++	# of it.  Otherwise pass the line straight through unmunged.
++	#
++	if ($in_literal) {
++	    if (! ($line =~ /^\s*$/)) {
++		#
++		# If this is the first non-blank line in a literal
++		# block we need to figure out what the proper indent is.
++		#
++		if ($litprefix eq "") {
++		    $line =~ /^(\s*)/;
++		    $litprefix = '^' . $1;
++		    $output .= $line . "\n";
++		} elsif (! ($line =~ /$litprefix/)) {
++		    $in_literal = 0;
++		} else {
++		    $output .= $line . "\n";
++		}
++	    } else {
++		$output .= $line . "\n";
++	    }
++	}
++	#
++	# Not in a literal block (or just dropped out)
++	#
++	if (! $in_literal) {
++	    $block .= $line . "\n";
++	    if (($line =~ /$sphinx_literal/) || ($line =~ /$sphinx_cblock/)) {
++		$in_literal = 1;
++		$litprefix = "";
++		$output .= highlight_block($block);
++		$block = ""
++	    }
++	}
++    }
++
++    if ($block) {
++	$output .= highlight_block($block);
++    }
++    foreach $line (split "\n", $output) {
+ 	print $lineprefix . $line . "\n";
+     }
+ }
+@@ -1062,7 +1120,7 @@ sub dump_struct($$) {
+ 					# Handle bitmaps
+ 					$arg =~ s/:\s*\d+\s*//g;
+ 					# Handle arrays
+-					$arg =~ s/\[\S+\]//g;
++					$arg =~ s/\[.*\]//g;
+ 					# The type may have multiple words,
+ 					# and multiple IDs can be defined, like:
+ 					#	const struct foo, *bar, foobar
+@@ -1422,8 +1480,6 @@ sub push_parameter($$$$) {
+ 		}
+ 	}
+ 
+-	$param = xml_escape($param);
+-
+ 	# strip spaces from $param so that it is one continuous string
+ 	# on @parameterlist;
+ 	# this fixes a problem where check_sections() cannot find
+@@ -1522,6 +1578,7 @@ sub dump_function($$) {
+     $prototype =~ s/__meminit +//;
+     $prototype =~ s/__must_check +//;
+     $prototype =~ s/__weak +//;
++    $prototype =~ s/__sched +//;
+     my $define = $prototype =~ s/^#\s*define\s+//; #ak added
+     $prototype =~ s/__attribute__\s*\(\(
+             (?:
+@@ -1748,47 +1805,6 @@ sub process_proto_type($$) {
+     }
+ }
+ 
+-# xml_escape: replace <, >, and & in the text stream;
+-#
+-# however, formatting controls that are generated internally/locally in the
+-# kernel-doc script are not escaped here; instead, they begin life like
+-# $blankline_html (4 of '\' followed by a mnemonic + ':'), then these strings
+-# are converted to their mnemonic-expected output, without the 4 * '\' & ':',
+-# just before actual output; (this is done by local_unescape())
+-sub xml_escape($) {
+-	my $text = shift;
+-	if ($output_mode eq "man") {
+-		return $text;
+-	}
+-	$text =~ s/\&/\\\\\\amp;/g;
+-	$text =~ s/\</\\\\\\lt;/g;
+-	$text =~ s/\>/\\\\\\gt;/g;
+-	return $text;
+-}
+-
+-# xml_unescape: reverse the effects of xml_escape
+-sub xml_unescape($) {
+-	my $text = shift;
+-	if ($output_mode eq "man") {
+-		return $text;
+-	}
+-	$text =~ s/\\\\\\amp;/\&/g;
+-	$text =~ s/\\\\\\lt;/</g;
+-	$text =~ s/\\\\\\gt;/>/g;
+-	return $text;
+-}
+-
+-# convert local escape strings to html
+-# local escape strings look like:  '\\\\menmonic:' (that's 4 backslashes)
+-sub local_unescape($) {
+-	my $text = shift;
+-	if ($output_mode eq "man") {
+-		return $text;
+-	}
+-	$text =~ s/\\\\\\\\lt:/</g;
+-	$text =~ s/\\\\\\\\gt:/>/g;
+-	return $text;
+-}
+ 
+ sub map_filename($) {
+     my $file;
+@@ -1826,15 +1842,291 @@ sub process_export_file($) {
+     close(IN);
+ }
+ 
+-sub process_file($) {
+-    my $file;
++#
++# Parsers for the various processing states.
++#
++# STATE_NORMAL: looking for the /** to begin everything.
++#
++sub process_normal() {
++    if (/$doc_start/o) {
++	$state = STATE_NAME;	# next line is always the function name
++	$in_doc_sect = 0;
++	$declaration_start_line = $. + 1;
++    }
++}
++
++#
++# STATE_NAME: Looking for the "name - description" line
++#
++sub process_name($$) {
++    my $file = shift;
+     my $identifier;
+-    my $func;
+     my $descr;
+-    my $in_purpose = 0;
++
++    if (/$doc_block/o) {
++	$state = STATE_DOCBLOCK;
++	$contents = "";
++	$new_start_line = $. + 1;
++
++	if ( $1 eq "" ) {
++	    $section = $section_intro;
++	} else {
++	    $section = $1;
++	}
++    }
++    elsif (/$doc_decl/o) {
++	$identifier = $1;
++	if (/\s*([\w\s]+?)(\(\))?\s*-/) {
++	    $identifier = $1;
++	}
++
++	$state = STATE_BODY;
++	# if there's no @param blocks need to set up default section
++	# here
++	$contents = "";
++	$section = $section_default;
++	$new_start_line = $. + 1;
++	if (/-(.*)/) {
++	    # strip leading/trailing/multiple spaces
++	    $descr= $1;
++	    $descr =~ s/^\s*//;
++	    $descr =~ s/\s*$//;
++	    $descr =~ s/\s+/ /g;
++	    $declaration_purpose = $descr;
++	    $state = STATE_BODY_MAYBE;
++	} else {
++	    $declaration_purpose = "";
++	}
++
++	if (($declaration_purpose eq "") && $verbose) {
++	    print STDERR "${file}:$.: warning: missing initial short description on line:\n";
++	    print STDERR $_;
++	    ++$warnings;
++	}
++
++	if ($identifier =~ m/^struct/) {
++	    $decl_type = 'struct';
++	} elsif ($identifier =~ m/^union/) {
++	    $decl_type = 'union';
++	} elsif ($identifier =~ m/^enum/) {
++	    $decl_type = 'enum';
++	} elsif ($identifier =~ m/^typedef/) {
++	    $decl_type = 'typedef';
++	} else {
++	    $decl_type = 'function';
++	}
++
++	if ($verbose) {
++	    print STDERR "${file}:$.: info: Scanning doc for $identifier\n";
++	}
++    } else {
++	print STDERR "${file}:$.: warning: Cannot understand $_ on line $.",
++	    " - I thought it was a doc line\n";
++	++$warnings;
++	$state = STATE_NORMAL;
++    }
++}
++
++
++#
++# STATE_BODY and STATE_BODY_MAYBE: the bulk of a kerneldoc comment.
++#
++sub process_body($$) {
++    my $file = shift;
++
++    if (/$doc_sect/i) { # case insensitive for supported section names
++	$newsection = $1;
++	$newcontents = $2;
++
++	# map the supported section names to the canonical names
++	if ($newsection =~ m/^description$/i) {
++	    $newsection = $section_default;
++	} elsif ($newsection =~ m/^context$/i) {
++	    $newsection = $section_context;
++	} elsif ($newsection =~ m/^returns?$/i) {
++	    $newsection = $section_return;
++	} elsif ($newsection =~ m/^\@return$/) {
++	    # special: @return is a section, not a param description
++	    $newsection = $section_return;
++	}
++
++	if (($contents ne "") && ($contents ne "\n")) {
++	    if (!$in_doc_sect && $verbose) {
++		print STDERR "${file}:$.: warning: contents before sections\n";
++		++$warnings;
++	    }
++	    dump_section($file, $section, $contents);
++	    $section = $section_default;
++	}
++
++	$in_doc_sect = 1;
++	$state = STATE_BODY;
++	$contents = $newcontents;
++	$new_start_line = $.;
++	while (substr($contents, 0, 1) eq " ") {
++	    $contents = substr($contents, 1);
++	}
++	if ($contents ne "") {
++	    $contents .= "\n";
++	}
++	$section = $newsection;
++	$leading_space = undef;
++    } elsif (/$doc_end/) {
++	if (($contents ne "") && ($contents ne "\n")) {
++	    dump_section($file, $section, $contents);
++	    $section = $section_default;
++	    $contents = "";
++	}
++	# look for doc_com + <text> + doc_end:
++	if ($_ =~ m'\s*\*\s*[a-zA-Z_0-9:\.]+\*/') {
++	    print STDERR "${file}:$.: warning: suspicious ending line: $_";
++	    ++$warnings;
++	}
++
++	$prototype = "";
++	$state = STATE_PROTO;
++	$brcount = 0;
++    } elsif (/$doc_content/) {
++	# miguel-style comment kludge, look for blank lines after
++	# @parameter line to signify start of description
++	if ($1 eq "") {
++	    if ($section =~ m/^@/ || $section eq $section_context) {
++		dump_section($file, $section, $contents);
++		$section = $section_default;
++		$contents = "";
++		$new_start_line = $.;
++	    } else {
++		$contents .= "\n";
++	    }
++	    $state = STATE_BODY;
++	} elsif ($state == STATE_BODY_MAYBE) {
++	    # Continued declaration purpose
++	    chomp($declaration_purpose);
++	    $declaration_purpose .= " " . $1;
++	    $declaration_purpose =~ s/\s+/ /g;
++	} else {
++	    my $cont = $1;
++	    if ($section =~ m/^@/ || $section eq $section_context) {
++		if (!defined $leading_space) {
++		    if ($cont =~ m/^(\s+)/) {
++			$leading_space = $1;
++		    } else {
++			$leading_space = "";
++		    }
++		}
++		$cont =~ s/^$leading_space//;
++	    }
++	    $contents .= $cont . "\n";
++	}
++    } else {
++	# i dont know - bad line?  ignore.
++	print STDERR "${file}:$.: warning: bad line: $_";
++	++$warnings;
++    }
++}
++
++
++#
++# STATE_PROTO: reading a function/whatever prototype.
++#
++sub process_proto($$) {
++    my $file = shift;
++
++    if (/$doc_inline_oneline/) {
++	$section = $1;
++	$contents = $2;
++	if ($contents ne "") {
++	    $contents .= "\n";
++	    dump_section($file, $section, $contents);
++	    $section = $section_default;
++	    $contents = "";
++	}
++    } elsif (/$doc_inline_start/) {
++	$state = STATE_INLINE;
++	$inline_doc_state = STATE_INLINE_NAME;
++    } elsif ($decl_type eq 'function') {
++	process_proto_function($_, $file);
++    } else {
++	process_proto_type($_, $file);
++    }
++}
++
++#
++# STATE_DOCBLOCK: within a DOC: block.
++#
++sub process_docblock($$) {
++    my $file = shift;
++
++    if (/$doc_end/) {
++	dump_doc_section($file, $section, $contents);
++	$section = $section_default;
++	$contents = "";
++	$function = "";
++	%parameterdescs = ();
++	%parametertypes = ();
++	@parameterlist = ();
++	%sections = ();
++	@sectionlist = ();
++	$prototype = "";
++	$state = STATE_NORMAL;
++    } elsif (/$doc_content/) {
++	if ( $1 eq "" )	{
++	    $contents .= $blankline;
++	} else {
++	    $contents .= $1 . "\n";
++	}
++    }
++}
++
++#
++# STATE_INLINE: docbook comments within a prototype.
++#
++sub process_inline($$) {
++    my $file = shift;
++
++    # First line (state 1) needs to be a @parameter
++    if ($inline_doc_state == STATE_INLINE_NAME && /$doc_inline_sect/o) {
++	$section = $1;
++	$contents = $2;
++	$new_start_line = $.;
++	if ($contents ne "") {
++	    while (substr($contents, 0, 1) eq " ") {
++		$contents = substr($contents, 1);
++	    }
++	    $contents .= "\n";
++	}
++	$inline_doc_state = STATE_INLINE_TEXT;
++	# Documentation block end */
++    } elsif (/$doc_inline_end/) {
++	if (($contents ne "") && ($contents ne "\n")) {
++	    dump_section($file, $section, $contents);
++	    $section = $section_default;
++	    $contents = "";
++	}
++	$state = STATE_PROTO;
++	$inline_doc_state = STATE_INLINE_NA;
++	# Regular text
++    } elsif (/$doc_content/) {
++	if ($inline_doc_state == STATE_INLINE_TEXT) {
++	    $contents .= $1 . "\n";
++	    # nuke leading blank lines
++	    if ($contents =~ /^\s*$/) {
++		$contents = "";
++	    }
++	} elsif ($inline_doc_state == STATE_INLINE_NAME) {
++	    $inline_doc_state = STATE_INLINE_ERROR;
++	    print STDERR "${file}:$.: warning: ";
++	    print STDERR "Incorrect use of kernel-doc format: $_";
++	    ++$warnings;
++	}
++    }
++}
++
++
++sub process_file($) {
++    my $file;
+     my $initial_section_counter = $section_counter;
+     my ($orig_file) = @_;
+-    my $leading_space;
+ 
+     $file = map_filename($orig_file);
+ 
+@@ -1853,250 +2145,23 @@ sub process_file($) {
+ 	}
+ 	# Replace tabs by spaces
+         while ($_ =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {};
++	# Hand this line to the appropriate state handler
+ 	if ($state == STATE_NORMAL) {
+-	    if (/$doc_start/o) {
+-		$state = STATE_NAME;	# next line is always the function name
+-		$in_doc_sect = 0;
+-		$declaration_start_line = $. + 1;
+-	    }
+-	} elsif ($state == STATE_NAME) {# this line is the function name (always)
+-	    if (/$doc_block/o) {
+-		$state = STATE_DOCBLOCK;
+-		$contents = "";
+-                $new_start_line = $. + 1;
+-
+-		if ( $1 eq "" ) {
+-			$section = $section_intro;
+-		} else {
+-			$section = $1;
+-		}
+-	    }
+-	    elsif (/$doc_decl/o) {
+-		$identifier = $1;
+-		if (/\s*([\w\s]+?)\s*-/) {
+-		    $identifier = $1;
+-		}
+-
+-		$state = STATE_FIELD;
+-		# if there's no @param blocks need to set up default section
+-		# here
+-		$contents = "";
+-		$section = $section_default;
+-		$new_start_line = $. + 1;
+-		if (/-(.*)/) {
+-		    # strip leading/trailing/multiple spaces
+-		    $descr= $1;
+-		    $descr =~ s/^\s*//;
+-		    $descr =~ s/\s*$//;
+-		    $descr =~ s/\s+/ /g;
+-		    $declaration_purpose = xml_escape($descr);
+-		    $in_purpose = 1;
+-		} else {
+-		    $declaration_purpose = "";
+-		}
+-
+-		if (($declaration_purpose eq "") && $verbose) {
+-			print STDERR "${file}:$.: warning: missing initial short description on line:\n";
+-			print STDERR $_;
+-			++$warnings;
+-		}
+-
+-		if ($identifier =~ m/^struct/) {
+-		    $decl_type = 'struct';
+-		} elsif ($identifier =~ m/^union/) {
+-		    $decl_type = 'union';
+-		} elsif ($identifier =~ m/^enum/) {
+-		    $decl_type = 'enum';
+-		} elsif ($identifier =~ m/^typedef/) {
+-		    $decl_type = 'typedef';
+-		} else {
+-		    $decl_type = 'function';
+-		}
+-
+-		if ($verbose) {
+-		    print STDERR "${file}:$.: info: Scanning doc for $identifier\n";
+-		}
+-	    } else {
+-		print STDERR "${file}:$.: warning: Cannot understand $_ on line $.",
+-		" - I thought it was a doc line\n";
+-		++$warnings;
+-		$state = STATE_NORMAL;
+-	    }
+-	} elsif ($state == STATE_FIELD) {	# look for head: lines, and include content
+-	    if (/$doc_sect/i) { # case insensitive for supported section names
+-		$newsection = $1;
+-		$newcontents = $2;
+-
+-		# map the supported section names to the canonical names
+-		if ($newsection =~ m/^description$/i) {
+-		    $newsection = $section_default;
+-		} elsif ($newsection =~ m/^context$/i) {
+-		    $newsection = $section_context;
+-		} elsif ($newsection =~ m/^returns?$/i) {
+-		    $newsection = $section_return;
+-		} elsif ($newsection =~ m/^\@return$/) {
+-		    # special: @return is a section, not a param description
+-		    $newsection = $section_return;
+-		}
+-
+-		if (($contents ne "") && ($contents ne "\n")) {
+-		    if (!$in_doc_sect && $verbose) {
+-			print STDERR "${file}:$.: warning: contents before sections\n";
+-			++$warnings;
+-		    }
+-		    dump_section($file, $section, xml_escape($contents));
+-		    $section = $section_default;
+-		}
+-
+-		$in_doc_sect = 1;
+-		$in_purpose = 0;
+-		$contents = $newcontents;
+-                $new_start_line = $.;
+-		while (substr($contents, 0, 1) eq " ") {
+-		    $contents = substr($contents, 1);
+-		}
+-		if ($contents ne "") {
+-		    $contents .= "\n";
+-		}
+-		$section = $newsection;
+-		$leading_space = undef;
+-	    } elsif (/$doc_end/) {
+-		if (($contents ne "") && ($contents ne "\n")) {
+-		    dump_section($file, $section, xml_escape($contents));
+-		    $section = $section_default;
+-		    $contents = "";
+-		}
+-		# look for doc_com + <text> + doc_end:
+-		if ($_ =~ m'\s*\*\s*[a-zA-Z_0-9:\.]+\*/') {
+-		    print STDERR "${file}:$.: warning: suspicious ending line: $_";
+-		    ++$warnings;
+-		}
+-
+-		$prototype = "";
+-		$state = STATE_PROTO;
+-		$brcount = 0;
+-#		print STDERR "end of doc comment, looking for prototype\n";
+-	    } elsif (/$doc_content/) {
+-		# miguel-style comment kludge, look for blank lines after
+-		# @parameter line to signify start of description
+-		if ($1 eq "") {
+-		    if ($section =~ m/^@/ || $section eq $section_context) {
+-			dump_section($file, $section, xml_escape($contents));
+-			$section = $section_default;
+-			$contents = "";
+-                        $new_start_line = $.;
+-		    } else {
+-			$contents .= "\n";
+-		    }
+-		    $in_purpose = 0;
+-		} elsif ($in_purpose == 1) {
+-		    # Continued declaration purpose
+-		    chomp($declaration_purpose);
+-		    $declaration_purpose .= " " . xml_escape($1);
+-		    $declaration_purpose =~ s/\s+/ /g;
+-		} else {
+-		    my $cont = $1;
+-		    if ($section =~ m/^@/ || $section eq $section_context) {
+-			if (!defined $leading_space) {
+-			    if ($cont =~ m/^(\s+)/) {
+-				$leading_space = $1;
+-			    } else {
+-				$leading_space = "";
+-			    }
+-			}
+-
+-			$cont =~ s/^$leading_space//;
+-		    }
+-		    $contents .= $cont . "\n";
+-		}
+-	    } else {
+-		# i dont know - bad line?  ignore.
+-		print STDERR "${file}:$.: warning: bad line: $_";
+-		++$warnings;
+-	    }
++	    process_normal();
++	} elsif ($state == STATE_NAME) {
++	    process_name($file, $_);
++	} elsif ($state == STATE_BODY || $state == STATE_BODY_MAYBE) {
++	    process_body($file, $_);
+ 	} elsif ($state == STATE_INLINE) { # scanning for inline parameters
+-	    # First line (state 1) needs to be a @parameter
+-	    if ($inline_doc_state == STATE_INLINE_NAME && /$doc_inline_sect/o) {
+-		$section = $1;
+-		$contents = $2;
+-                $new_start_line = $.;
+-		if ($contents ne "") {
+-		    while (substr($contents, 0, 1) eq " ") {
+-			$contents = substr($contents, 1);
+-		    }
+-		    $contents .= "\n";
+-		}
+-		$inline_doc_state = STATE_INLINE_TEXT;
+-	    # Documentation block end */
+-	    } elsif (/$doc_inline_end/) {
+-		if (($contents ne "") && ($contents ne "\n")) {
+-		    dump_section($file, $section, xml_escape($contents));
+-		    $section = $section_default;
+-		    $contents = "";
+-		}
+-		$state = STATE_PROTO;
+-		$inline_doc_state = STATE_INLINE_NA;
+-	    # Regular text
+-	    } elsif (/$doc_content/) {
+-		if ($inline_doc_state == STATE_INLINE_TEXT) {
+-		    $contents .= $1 . "\n";
+-		    # nuke leading blank lines
+-		    if ($contents =~ /^\s*$/) {
+-			$contents = "";
+-		    }
+-		} elsif ($inline_doc_state == STATE_INLINE_NAME) {
+-		    $inline_doc_state = STATE_INLINE_ERROR;
+-		    print STDERR "${file}:$.: warning: ";
+-		    print STDERR "Incorrect use of kernel-doc format: $_";
+-		    ++$warnings;
+-		}
+-	    }
+-	} elsif ($state == STATE_PROTO) {	# scanning for function '{' (end of prototype)
+-	    if (/$doc_inline_oneline/) {
+-		$section = $1;
+-		$contents = $2;
+-		if ($contents ne "") {
+-		    $contents .= "\n";
+-		    dump_section($file, $section, xml_escape($contents));
+-		    $section = $section_default;
+-		    $contents = "";
+-		}
+-	    } elsif (/$doc_inline_start/) {
+-		$state = STATE_INLINE;
+-		$inline_doc_state = STATE_INLINE_NAME;
+-	    } elsif ($decl_type eq 'function') {
+-		process_proto_function($_, $file);
+-	    } else {
+-		process_proto_type($_, $file);
+-	    }
++	    process_inline($file, $_);
++	} elsif ($state == STATE_PROTO) {
++	    process_proto($file, $_);
+ 	} elsif ($state == STATE_DOCBLOCK) {
+-		if (/$doc_end/)
+-		{
+-			dump_doc_section($file, $section, xml_escape($contents));
+-			$section = $section_default;
+-			$contents = "";
+-			$function = "";
+-			%parameterdescs = ();
+-			%parametertypes = ();
+-			@parameterlist = ();
+-			%sections = ();
+-			@sectionlist = ();
+-			$prototype = "";
+-			$state = STATE_NORMAL;
+-		}
+-		elsif (/$doc_content/)
+-		{
+-			if ( $1 eq "" )
+-			{
+-				$contents .= $blankline;
+-			}
+-			else
+-			{
+-				$contents .= $1 . "\n";
+-			}
+-		}
++	    process_docblock($file, $_);
+ 	}
+     }
++
++    # Make sure we got something interesting.
+     if ($initial_section_counter == $section_counter) {
+ 	if ($output_mode ne "none") {
+ 	    print STDERR "${file}:1: warning: no structured comments found\n";
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-set-verbosity-to-default-during-config.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-set-verbosity-to-default-during-config.patch
deleted file mode 100644
index 17d2d91..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-set-verbosity-to-default-during-config.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 526e539628e051128abf46a60ec22e18c9b5d84f Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Wed, 31 May 2017 15:03:02 -0500
-Subject: [PATCH 09/14] multipath: set verbosity to default during config
-
-condlog was setting the verbosity to 0 if there was no configuration.
-This keeps multipath from printing warning messages about config file
-problems that are found while loading the configuration. Instead, it
-should use the default config level until it loads the configuration
-to find the current value.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/debug.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/libmultipath/debug.c b/libmultipath/debug.c
-index fbe171a..f89b264 100644
---- a/libmultipath/debug.c
-+++ b/libmultipath/debug.c
-@@ -11,6 +11,7 @@
- #include "../third-party/valgrind/drd.h"
- #include "vector.h"
- #include "config.h"
-+#include "defaults.h"
- 
- void dlog (int sink, int prio, const char * fmt, ...)
- {
-@@ -21,7 +22,7 @@ void dlog (int sink, int prio, const char * fmt, ...)
- 	va_start(ap, fmt);
- 	conf = get_multipath_config();
- 	ANNOTATE_IGNORE_READS_BEGIN();
--	thres = (conf) ? conf->verbosity : 0;
-+	thres = (conf) ? conf->verbosity : DEFAULT_VERBOSITY;
- 	ANNOTATE_IGNORE_READS_END();
- 	put_multipath_config(conf);
- 
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch
new file mode 100644
index 0000000..2cae075
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch
@@ -0,0 +1,56 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Date: Mon, 14 May 2018 17:30:17 +0200
+Subject: [PATCH] multipath-tools: configure hitachi ams2000 and hus100 as full
+ active arrays
+
+AMS2000 and HUS100 families are active/active arrays.
+
+Based on https://support.hitachivantara.com/download/epcra/df818913.pdf
+and internal hitachi docs.
+
+Cc: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
+Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
+Cc: DM-DEV ML <dm-devel@redhat.com>
+Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/hwtable.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
+index 2ca6888..148f0ba 100644
+--- a/libmultipath/hwtable.c
++++ b/libmultipath/hwtable.c
+@@ -398,13 +398,13 @@ static struct hwentry default_hw[] = {
+ 	 * Mail : matthias.rudolph@hds.com
+ 	 */
+ 	{
+-		/* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families */
++		/* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families / HP XP */
+ 		.vendor        = "(HITACHI|HP)",
+ 		.product       = "^OPEN-",
+ 		.pgpolicy      = MULTIBUS,
+ 	},
+ 	{
+-		/* AMS 2000 and HUS 100 families */
++		/* AMS other than AMS 2000 */
+ 		.vendor        = "HITACHI",
+ 		.product       = "^DF",
+ 		.no_path_retry = NO_PATH_RETRY_QUEUE,
+@@ -412,6 +412,12 @@ static struct hwentry default_hw[] = {
+ 		.pgfailback    = -FAILBACK_IMMEDIATE,
+ 		.prio_name     = PRIO_HDS,
+ 	},
++	{
++		/* AMS 2000 and HUS 100 families */
++		.vendor        = "HITACHI",
++		.product       = "^DF600F",
++		.pgpolicy      = MULTIBUS,
++	},
+ 	/*
+ 	 * IBM
+ 	 *
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch
new file mode 100644
index 0000000..2dda2ed
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch
@@ -0,0 +1,42 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Martin Wilck <mwilck@suse.com>
+Date: Wed, 21 Mar 2018 10:34:18 +0100
+Subject: [PATCH] libmultipath: don't reject maps with undefined prio
+
+libmultipath's prio routines can deal with pp->priority == PRIO_UNDEF
+just fine. PRIO_UNDEF is just a very low priority. So there's
+no reason to reject setting up a multipath map because paths have
+undefined priority.
+
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/configure.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/libmultipath/configure.c b/libmultipath/configure.c
+index 5796683..5c54f9b 100644
+--- a/libmultipath/configure.c
++++ b/libmultipath/configure.c
+@@ -1063,9 +1063,6 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
+ 			continue;
+ 		}
+ 
+-		if (pp1->priority == PRIO_UNDEF)
+-			mpp->action = ACT_REJECT;
+-
+ 		if (!mpp->paths) {
+ 			condlog(0, "%s: skip coalesce (no paths)", mpp->alias);
+ 			remove_map(mpp, vecs, 0);
+@@ -1091,8 +1088,6 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
+ 					mpp->size);
+ 				mpp->action = ACT_REJECT;
+ 			}
+-			if (pp2->priority == PRIO_UNDEF)
+-				mpp->action = ACT_REJECT;
+ 		}
+ 		verify_paths(mpp, vecs);
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-mpath-skip-device-configs-without-vendor-product.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-mpath-skip-device-configs-without-vendor-product.patch
deleted file mode 100644
index 396b6d3..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-mpath-skip-device-configs-without-vendor-product.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From f88d60a93e98d86ae294f2317a122c4efde276f0 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Wed, 31 May 2017 17:58:59 -0500
-Subject: [PATCH 10/14] mpath: skip device configs without vendor/product
-
-Right now if multipath.conf includes a device configuration without a
-vendor or product string, it will automatically be applied to all
-devices, skipping all other configs entirely.  This is clearly wrong.
-This patch makes sure that user added configs include vendor and
-product strings
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/config.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/libmultipath/config.c b/libmultipath/config.c
-index c485748..bdde113 100644
---- a/libmultipath/config.c
-+++ b/libmultipath/config.c
-@@ -452,6 +452,13 @@ restart:
- 			break;
- 		j = n;
- 		vector_foreach_slot_after(hw, hwe2, j) {
-+			/* drop invalid device configs */
-+			if (!hwe2->vendor || !hwe2->product) {
-+				condlog(0, "device config missing vendor or product parameter");
-+				vector_del_slot(hw, j--);
-+				free_hwe(hwe2);
-+				continue;
-+			}
- 			if (hwe_regmatch(hwe1, hwe2))
- 				continue;
- 			/* dup */
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-fix-show-maps-json-crash.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-fix-show-maps-json-crash.patch
deleted file mode 100644
index 12d6d38..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-fix-show-maps-json-crash.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From bc3ceda747104afdc24386df5dc45ca86f6c2936 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Thu, 1 Jun 2017 17:52:28 -0500
-Subject: [PATCH 11/14] multipathd: fix "show maps json" crash
-
-If there are no multipath devices, show_maps_json sets the maximum size
-of the reply buffer to 0. Having a size of 0 causes the calls to calloc
-and realloc to behave in ways that the code isn't designed to handle,
-leading to a double-free crash. Instead, show_maps_json should just
-use the INITIAL_REPLY_LEN if there are no multipath devices.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- multipathd/cli_handlers.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
-index 04c7386..7b0d00c 100644
---- a/multipathd/cli_handlers.c
-+++ b/multipathd/cli_handlers.c
-@@ -162,10 +162,12 @@ show_maps_json (char ** r, int * len, struct vectors * vecs)
- 	struct multipath * mpp;
- 	char * c;
- 	char * reply;
--	unsigned int maxlen = INITIAL_REPLY_LEN *
--			PRINT_JSON_MULTIPLIER * VECTOR_SIZE(vecs->mpvec);
-+	unsigned int maxlen = INITIAL_REPLY_LEN;
- 	int again = 1;
- 
-+	if (VECTOR_SIZE(vecs->mpvec) > 0)
-+		maxlen *= PRINT_JSON_MULTIPLIER * VECTOR_SIZE(vecs->mpvec);
-+
- 	vector_foreach_slot(vecs->mpvec, mpp, i) {
- 		if (update_multipath(vecs, mpp->alias, 0)) {
- 			return 1;
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch
new file mode 100644
index 0000000..96a814f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch
@@ -0,0 +1,57 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Martin Wilck <mwilck@suse.com>
+Date: Wed, 21 Mar 2018 10:34:19 +0100
+Subject: [PATCH] multipathd: handle errors in uxlsnr as fatal
+
+The ppoll() calls of the uxlsnr thread are vital for proper functioning of
+multipathd. If the uxlsnr thread can't open the socket or fails to call ppoll()
+for other reasons, quit the daemon. If we don't do that, multipathd may
+hang in a state where it can't be terminated any more, because the uxlsnr
+thread is responsible for handling all signals. This happens e.g. if
+systemd's multipathd.socket is running in and multipathd is started from
+outside systemd.
+
+24f2844 "multipathd: fix signal blocking logic" has made this problem more
+severe. Before that patch, the signals weren't actually blocked in any thread.
+That's not to say 24f2844 was wrong. I still think it's correct, we just
+need this one on top.
+
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ multipathd/uxlsnr.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/multipathd/uxlsnr.c b/multipathd/uxlsnr.c
+index cdafd82..6f66666 100644
+--- a/multipathd/uxlsnr.c
++++ b/multipathd/uxlsnr.c
+@@ -178,7 +178,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
+ 
+ 	if (ux_sock == -1) {
+ 		condlog(1, "could not create uxsock: %d", errno);
+-		return NULL;
++		exit_daemon();
+ 	}
+ 
+ 	pthread_cleanup_push(uxsock_cleanup, (void *)ux_sock);
+@@ -187,7 +187,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
+ 	polls = (struct pollfd *)MALLOC((MIN_POLLS + 1) * sizeof(struct pollfd));
+ 	if (!polls) {
+ 		condlog(0, "uxsock: failed to allocate poll fds");
+-		return NULL;
++		exit_daemon();
+ 	}
+ 	sigfillset(&mask);
+ 	sigdelset(&mask, SIGINT);
+@@ -249,6 +249,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
+ 
+ 			/* something went badly wrong! */
+ 			condlog(0, "uxsock: poll failed with %d", errno);
++			exit_daemon();
+ 			break;
+ 		}
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch
new file mode 100644
index 0000000..8ce2431
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch
@@ -0,0 +1,36 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Martin Wilck <mwilck@suse.com>
+Date: Tue, 15 May 2018 14:32:44 +0200
+Subject: [PATCH] libmultipath: fix error parsing "find_multipaths strict"
+
+If "find_multipaths strict" is set in multipath.conf, the error message
+"illegal value for find_multipaths: strict" is printed. This causes no
+functional problem, as "strict" happens to be the default, fallback
+value. It should be fixed nonetheless. FIND_MULTIPATHS_STRICT, having
+the highest numeric value, must be last in the enum.
+
+Fixes: c36f2f42 "libmultipath: change find_multipaths option to multi-value"
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/structs.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libmultipath/structs.h b/libmultipath/structs.h
+index eb6a178..e424b15 100644
+--- a/libmultipath/structs.h
++++ b/libmultipath/structs.h
+@@ -122,9 +122,9 @@ enum find_multipaths_states {
+ 	FIND_MULTIPATHS_UNDEF = YNU_UNDEF,
+ 	FIND_MULTIPATHS_OFF = YNU_NO,
+ 	FIND_MULTIPATHS_ON = _FIND_MULTIPATHS_F,
+-	FIND_MULTIPATHS_STRICT = _FIND_MULTIPATHS_F|_FIND_MULTIPATHS_N,
+ 	FIND_MULTIPATHS_GREEDY = _FIND_MULTIPATHS_I,
+ 	FIND_MULTIPATHS_SMART = _FIND_MULTIPATHS_F|_FIND_MULTIPATHS_I,
++	FIND_MULTIPATHS_STRICT = _FIND_MULTIPATHS_F|_FIND_MULTIPATHS_N,
+ 	__FIND_MULTIPATHS_LAST,
+ };
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-multipath-tools-modify-Makefile.inc-for-cross-compil.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-multipath-tools-modify-Makefile.inc-for-cross-compil.patch
deleted file mode 100644
index 5ccd4ae..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-multipath-tools-modify-Makefile.inc-for-cross-compil.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 6864ba28dec61609662ce5dc8bc7ed1925abb546 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 5 Jul 2017 02:56:13 -0400
-Subject: [PATCH 12/14] 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>
-
-Update for version 0.7.1
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- Makefile.inc | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
-
-diff --git a/Makefile.inc b/Makefile.inc
-index e084fd1..c7f45fa 100644
---- a/Makefile.inc
-+++ b/Makefile.inc
-@@ -35,12 +35,6 @@ ifndef RUN
- 	endif
- endif
- 
--ifndef SYSTEMD
--	ifeq ($(shell systemctl --version > /dev/null 2>&1 && echo 1), 1)
--		SYSTEMD = $(shell systemctl --version 2> /dev/null |  sed -n 's/systemd \([0-9]*\)/\1/p')
--	endif
--endif
--
- ifndef SYSTEMDPATH
- 	SYSTEMDPATH=usr/lib
- endif
-@@ -82,11 +76,13 @@ TEST_CC_OPTION = $(shell \
- 
- STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)
- 
-+ifndef OPTFLAGS
- OPTFLAGS	= -O2 -g -pipe -Wall -Wextra -Wformat=2 -Werror=implicit-int \
- 		  -Werror=implicit-function-declaration -Werror=format-security \
- 		  -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered \
- 		  -Wp,-D_FORTIFY_SOURCE=2 $(STACKPROT) \
- 		  --param=ssp-buffer-size=4
-+endif
- 
- CFLAGS		= $(OPTFLAGS) -DLIB_STRING=\"${LIB}\" -DRUN_DIR=\"${RUN}\"
- BIN_CFLAGS	= -fPIE -DPIE
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-libmultipath-print-correct-default-for-delay_-_check.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-libmultipath-print-correct-default-for-delay_-_check.patch
new file mode 100644
index 0000000..c767804
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-libmultipath-print-correct-default-for-delay_-_check.patch
@@ -0,0 +1,40 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Mon, 7 May 2018 17:16:05 -0500
+Subject: [PATCH] libmultipath: print correct default for delay_*_checks
+
+These options default to "no", so they should display that when the
+config is printed.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/dict.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/libmultipath/dict.c b/libmultipath/dict.c
+index 4040611..3e7c5d6 100644
+--- a/libmultipath/dict.c
++++ b/libmultipath/dict.c
+@@ -1115,7 +1115,8 @@ print_off_int_undef(char * buff, int len, long v)
+ }
+ 
+ declare_def_handler(delay_watch_checks, set_off_int_undef)
+-declare_def_snprint(delay_watch_checks, print_off_int_undef)
++declare_def_snprint_defint(delay_watch_checks, print_off_int_undef,
++			   DEFAULT_DELAY_CHECKS)
+ declare_ovr_handler(delay_watch_checks, set_off_int_undef)
+ declare_ovr_snprint(delay_watch_checks, print_off_int_undef)
+ declare_hw_handler(delay_watch_checks, set_off_int_undef)
+@@ -1123,7 +1124,8 @@ declare_hw_snprint(delay_watch_checks, print_off_int_undef)
+ declare_mp_handler(delay_watch_checks, set_off_int_undef)
+ declare_mp_snprint(delay_watch_checks, print_off_int_undef)
+ declare_def_handler(delay_wait_checks, set_off_int_undef)
+-declare_def_snprint(delay_wait_checks, print_off_int_undef)
++declare_def_snprint_defint(delay_wait_checks, print_off_int_undef,
++			   DEFAULT_DELAY_CHECKS)
+ declare_ovr_handler(delay_wait_checks, set_off_int_undef)
+ declare_ovr_snprint(delay_wait_checks, print_off_int_undef)
+ declare_hw_handler(delay_wait_checks, set_off_int_undef)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-multipath.conf.5-clarify-property-whitelist-handling.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-multipath.conf.5-clarify-property-whitelist-handling.patch
new file mode 100644
index 0000000..0ab4e06
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-multipath.conf.5-clarify-property-whitelist-handling.patch
@@ -0,0 +1,31 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Wed, 9 May 2018 14:32:59 -0500
+Subject: [PATCH] multipath.conf.5: clarify property whitelist handling
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ multipath/multipath.conf.5 | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
+index f689795..96d1b66 100644
+--- a/multipath/multipath.conf.5
++++ b/multipath/multipath.conf.5
+@@ -1181,10 +1181,9 @@ and
+ keywords. For a full description of these keywords please see the \fIdevices\fR
+ section description.
+ .LP
+-The \fIproperty\fR blacklist and whitelist handling is different from the usual
+-handling in the sense that the whitelist \fIhas\fR to be set, otherwise the
+-device will be blacklisted. In these cases the message \fIblacklisted, udev
+-property missing\fR will be displayed.
++The \fIproperty\fR whitelist handling is different from the usual
++handling in the sense that the device \fIhas\fR to have a udev property that
++matches the whitelist, otherwise the device will be blacklisted. In these cases the message \fIblacklisted, udev property missing\fR will be displayed.
+ .
+ .
+ .\" ----------------------------------------------------------------------------
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0015-mpathpersist-add-all_tg_pt-option.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0015-mpathpersist-add-all_tg_pt-option.patch
new file mode 100644
index 0000000..be2681d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0015-mpathpersist-add-all_tg_pt-option.patch
@@ -0,0 +1,317 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Thu, 31 May 2018 17:47:11 -0500
+Subject: [PATCH] mpathpersist: add all_tg_pt option
+
+Some arrays, such as the EMC VNX, don't follow the scsi persistent
+reservations spec in making key registrations per I_T NEXUS. Instead,
+the registration is shared by all target ports connected to a given
+host.  This causes mpathpersist to fail whenever it tries to register a
+key, since it will receive a registration conflict on some of the paths.
+
+To deal with this, mpathpersist needs to track the hosts that it has
+done a registration on, and only register once per host. The new
+"all_tg_pt" multipath.conf option is used to set which arrays need this
+feature.  I currently don't know if all EMC VNX arrays handle persistent
+reservations like this, or if it is configurable. A future patch will
+update the VNX built-in config, if this is indeed their default (or
+only) setting.
+
+Multipathd doesn't need to worry about this. It is often the case that
+when a path device comes back, it will still have the keys registered to
+it. Because of this, multipathd uses register-and-ignore, which means
+that it won't cause an error if the registration has already happened
+down a different target port.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmpathpersist/mpath_persist.c | 28 ++++++++++++++++++++++------
+ libmultipath/config.c           |  2 ++
+ libmultipath/config.h           |  2 ++
+ libmultipath/defaults.h         |  1 +
+ libmultipath/dict.c             | 10 ++++++++++
+ libmultipath/propsel.c          | 15 +++++++++++++++
+ libmultipath/propsel.h          |  1 +
+ libmultipath/structs.h          |  7 +++++++
+ multipath/multipath.conf.5      | 11 +++++++++++
+ 9 files changed, 71 insertions(+), 6 deletions(-)
+
+diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c
+index 907a17c..ca91c55 100644
+--- a/libmpathpersist/mpath_persist.c
++++ b/libmpathpersist/mpath_persist.c
+@@ -335,6 +335,7 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope,
+ 
+ 	conf = get_multipath_config();
+ 	select_reservation_key(conf, mpp);
++	select_all_tg_pt(conf, mpp);
+ 	put_multipath_config(conf);
+ 
+ 	memcpy(&prkey, paramp->sa_key, 8);
+@@ -456,7 +457,7 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
+ 	unsigned int rq_type, struct prout_param_descriptor * paramp, int noisy)
+ {
+ 
+-	int i, j;
++	int i, j, k;
+ 	struct pathgroup *pgp = NULL;
+ 	struct path *pp = NULL;
+ 	int rollback = 0;
+@@ -481,11 +482,13 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
+ 	}
+ 
+ 	struct threadinfo thread[active_pathcount];
++	int hosts[active_pathcount];
+ 
+ 	memset(thread, 0, sizeof(thread));
+ 
+ 	/* init thread parameter */
+ 	for (i =0; i< active_pathcount; i++){
++		hosts[i] = -1;
+ 		thread[i].param.rq_servact = rq_servact;
+ 		thread[i].param.rq_scope = rq_scope;
+ 		thread[i].param.rq_type = rq_type;
+@@ -514,6 +517,17 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
+ 				condlog (1, "%s: %s path not up. Skip.", mpp->wwid, pp->dev);
+ 				continue;
+ 			}
++			if (mpp->all_tg_pt == ALL_TG_PT_ON &&
++			    pp->sg_id.host_no != -1) {
++				for (k = 0; k < count; k++) {
++					if (pp->sg_id.host_no == hosts[k]) {
++						condlog(3, "%s: %s host %d matches skip.", pp->wwid, pp->dev, pp->sg_id.host_no);
++						break;
++					}
++				}
++				if (k < count)
++					continue;
++			}
+ 			strncpy(thread[count].param.dev, pp->dev,
+ 				FILE_NAME_SIZE - 1);
+ 
+@@ -531,10 +545,12 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
+ 				condlog (0, "%s: failed to create thread %d", mpp->wwid, rc);
+ 				thread[count].param.status = MPATH_PR_THREAD_ERROR;
+ 			}
++			else
++				hosts[count] = pp->sg_id.host_no;
+ 			count = count + 1;
+ 		}
+ 	}
+-	for( i=0; i < active_pathcount ; i++){
++	for( i=0; i < count ; i++){
+ 		if (thread[i].param.status != MPATH_PR_THREAD_ERROR) {
+ 			rc = pthread_join(thread[i].id, NULL);
+ 			if (rc){
+@@ -557,7 +573,7 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
+ 	}
+ 	if (rollback && ((rq_servact == MPATH_PROUT_REG_SA) && sa_key != 0 )){
+ 		condlog (3, "%s: ERROR: initiating pr out rollback", mpp->wwid);
+-		for( i=0 ; i < active_pathcount ; i++){
++		for( i=0 ; i < count ; i++){
+ 			if(thread[i].param.status == MPATH_PR_SUCCESS) {
+ 				memcpy(&thread[i].param.paramp->key, &thread[i].param.paramp->sa_key, 8);
+ 				memset(&thread[i].param.paramp->sa_key, 0, 8);
+@@ -571,7 +587,7 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
+ 			} else
+ 				thread[i].param.status = MPATH_PR_SKIP;
+ 		}
+-		for(i=0; i < active_pathcount ; i++){
++		for(i=0; i < count ; i++){
+ 			if (thread[i].param.status != MPATH_PR_SKIP &&
+ 			    thread[i].param.status != MPATH_PR_THREAD_ERROR) {
+ 				rc = pthread_join(thread[i].id, NULL);
+@@ -720,7 +736,7 @@ int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope,
+ 		}
+ 	}
+ 	pthread_attr_destroy (&attr);
+-	for (i = 0; i < active_pathcount; i++){
++	for (i = 0; i < count; i++){
+ 		if (thread[i].param.status != MPATH_PR_THREAD_ERROR) {
+ 			rc = pthread_join (thread[i].id, NULL);
+ 			if (rc){
+@@ -729,7 +745,7 @@ int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope,
+ 		}
+ 	}
+ 
+-	for (i = 0; i < active_pathcount; i++){
++	for (i = 0; i < count; i++){
+ 		/*  check thread status here and return the status */
+ 
+ 		if (thread[i].param.status == MPATH_PR_RESERV_CONFLICT)
+diff --git a/libmultipath/config.c b/libmultipath/config.c
+index 085a3e1..5872927 100644
+--- a/libmultipath/config.c
++++ b/libmultipath/config.c
+@@ -352,6 +352,7 @@ merge_hwe (struct hwentry * dst, struct hwentry * src)
+ 	merge_num(skip_kpartx);
+ 	merge_num(max_sectors_kb);
+ 	merge_num(ghost_delay);
++	merge_num(all_tg_pt);
+ 
+ 	snprintf(id, sizeof(id), "%s/%s", dst->vendor, dst->product);
+ 	reconcile_features_with_options(id, &dst->features,
+@@ -622,6 +623,7 @@ load_config (char * file)
+ 	conf->disable_changed_wwids = DEFAULT_DISABLE_CHANGED_WWIDS;
+ 	conf->remove_retries = 0;
+ 	conf->ghost_delay = DEFAULT_GHOST_DELAY;
++	conf->all_tg_pt = DEFAULT_ALL_TG_PT;
+ 
+ 	/*
+ 	 * preload default hwtable
+diff --git a/libmultipath/config.h b/libmultipath/config.h
+index 6e69a37..1bf708a 100644
+--- a/libmultipath/config.h
++++ b/libmultipath/config.h
+@@ -82,6 +82,7 @@ struct hwentry {
+ 	int skip_kpartx;
+ 	int max_sectors_kb;
+ 	int ghost_delay;
++	int all_tg_pt;
+ 	char * bl_product;
+ };
+ 
+@@ -194,6 +195,7 @@ struct config {
+ 	char * partition_delim;
+ 	char * config_dir;
+ 	int prkey_source;
++	int all_tg_pt;
+ 	struct be64 reservation_key;
+ 
+ 	vector keywords;
+diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
+index d7b87b4..f076b4b 100644
+--- a/libmultipath/defaults.h
++++ b/libmultipath/defaults.h
+@@ -43,6 +43,7 @@
+ #define DEFAULT_GHOST_DELAY GHOST_DELAY_OFF
+ #define DEFAULT_FIND_MULTIPATHS_TIMEOUT -10
+ #define DEFAULT_UNKNOWN_FIND_MULTIPATHS_TIMEOUT 1
++#define DEFAULT_ALL_TG_PT ALL_TG_PT_OFF
+ 
+ #define DEFAULT_CHECKINT	5
+ #define MAX_CHECKINT(a)		(a << 2)
+diff --git a/libmultipath/dict.c b/libmultipath/dict.c
+index 3e7c5d6..2557b8a 100644
+--- a/libmultipath/dict.c
++++ b/libmultipath/dict.c
+@@ -1178,6 +1178,13 @@ declare_hw_snprint(ghost_delay, print_off_int_undef)
+ declare_mp_handler(ghost_delay, set_off_int_undef)
+ declare_mp_snprint(ghost_delay, print_off_int_undef)
+ 
++declare_def_handler(all_tg_pt, set_yes_no_undef)
++declare_def_snprint_defint(all_tg_pt, print_yes_no_undef, DEFAULT_ALL_TG_PT)
++declare_ovr_handler(all_tg_pt, set_yes_no_undef)
++declare_ovr_snprint(all_tg_pt, print_yes_no_undef)
++declare_hw_handler(all_tg_pt, set_yes_no_undef)
++declare_hw_snprint(all_tg_pt, print_yes_no_undef)
++
+ 
+ static int
+ def_uxsock_timeout_handler(struct config *conf, vector strvec)
+@@ -1509,6 +1516,7 @@ init_keywords(vector keywords)
+ 	install_keyword("prkeys_file", &def_prkeys_file_handler, &snprint_def_prkeys_file);
+ 	install_keyword("log_checker_err", &def_log_checker_err_handler, &snprint_def_log_checker_err);
+ 	install_keyword("reservation_key", &def_reservation_key_handler, &snprint_def_reservation_key);
++	install_keyword("all_tg_pt", &def_all_tg_pt_handler, &snprint_def_all_tg_pt);
+ 	install_keyword("retain_attached_hw_handler", &def_retain_hwhandler_handler, &snprint_def_retain_hwhandler);
+ 	install_keyword("detect_prio", &def_detect_prio_handler, &snprint_def_detect_prio);
+ 	install_keyword("detect_checker", &def_detect_checker_handler, &snprint_def_detect_checker);
+@@ -1618,6 +1626,7 @@ init_keywords(vector keywords)
+ 	install_keyword("skip_kpartx", &hw_skip_kpartx_handler, &snprint_hw_skip_kpartx);
+ 	install_keyword("max_sectors_kb", &hw_max_sectors_kb_handler, &snprint_hw_max_sectors_kb);
+ 	install_keyword("ghost_delay", &hw_ghost_delay_handler, &snprint_hw_ghost_delay);
++	install_keyword("all_tg_pt", &hw_all_tg_pt_handler, &snprint_hw_all_tg_pt);
+ 	install_sublevel_end();
+ 
+ 	install_keyword_root("overrides", &overrides_handler);
+@@ -1654,6 +1663,7 @@ init_keywords(vector keywords)
+ 	install_keyword("skip_kpartx", &ovr_skip_kpartx_handler, &snprint_ovr_skip_kpartx);
+ 	install_keyword("max_sectors_kb", &ovr_max_sectors_kb_handler, &snprint_ovr_max_sectors_kb);
+ 	install_keyword("ghost_delay", &ovr_ghost_delay_handler, &snprint_ovr_ghost_delay);
++	install_keyword("all_tg_pt", &ovr_all_tg_pt_handler, &snprint_ovr_all_tg_pt);
+ 
+ 	install_keyword_root("multipaths", &multipaths_handler);
+ 	install_keyword_multi("multipath", &multipath_handler, NULL);
+diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
+index 627d366..9ca1355 100644
+--- a/libmultipath/propsel.c
++++ b/libmultipath/propsel.c
+@@ -978,3 +978,18 @@ out:
+ 		pp->dev, pp->find_multipaths_timeout, origin);
+ 	return 0;
+ }
++
++int select_all_tg_pt (struct config *conf, struct multipath * mp)
++{
++	const char *origin;
++
++	mp_set_ovr(all_tg_pt);
++	mp_set_hwe(all_tg_pt);
++	mp_set_conf(all_tg_pt);
++	mp_set_default(all_tg_pt, DEFAULT_ALL_TG_PT);
++out:
++	condlog(3, "%s: all_tg_pt = %s %s", mp->alias,
++		(mp->all_tg_pt == ALL_TG_PT_ON)? "yes" : "no",
++		origin);
++	return 0;
++}
+diff --git a/libmultipath/propsel.h b/libmultipath/propsel.h
+index a022bee..ae99b92 100644
+--- a/libmultipath/propsel.h
++++ b/libmultipath/propsel.h
+@@ -34,3 +34,4 @@ int select_ghost_delay(struct config *conf, struct multipath * mp);
+ void reconcile_features_with_options(const char *id, char **features,
+ 				     int* no_path_retry,
+ 				     int *retain_hwhandler);
++int select_all_tg_pt (struct config *conf, struct multipath * mp);
+diff --git a/libmultipath/structs.h b/libmultipath/structs.h
+index e424b15..0194b1e 100644
+--- a/libmultipath/structs.h
++++ b/libmultipath/structs.h
+@@ -217,6 +217,12 @@ enum prkey_sources {
+ 	PRKEY_SOURCE_FILE,
+ };
+ 
++enum all_tg_pt_states {
++	ALL_TG_PT_UNDEF = YNU_UNDEF,
++	ALL_TG_PT_OFF = YNU_NO,
++	ALL_TG_PT_ON = YNU_YES,
++};
++
+ struct sg_id {
+ 	int host_no;
+ 	int channel;
+@@ -362,6 +368,7 @@ struct multipath {
+ 	int prkey_source;
+ 	struct be64 reservation_key;
+ 	unsigned char prflag;
++	int all_tg_pt;
+ 	struct gen_multipath generic_mp;
+ };
+ 
+diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
+index 96d1b66..0c1f174 100644
+--- a/multipath/multipath.conf.5
++++ b/multipath/multipath.conf.5
+@@ -743,6 +743,17 @@ The default is: \fB<unset>\fR
+ .
+ .
+ .TP
++.B all_tg_pt
++This must be set to \fByes\fR to successfully use mpathpersist on arrays that
++automatically set and clear registration keys on all target ports from a
++host, instead of per target port per host.
++.RS
++.TP
++The default is: \fBno\fR
++.RE
++.
++.
++.TP
+ .B retain_attached_hw_handler
+ (Obsolete for kernels >= 4.3) If set to
+ .I yes
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0016-libmultipath-remove-rbd-code.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0016-libmultipath-remove-rbd-code.patch
new file mode 100644
index 0000000..8d19547
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0016-libmultipath-remove-rbd-code.patch
@@ -0,0 +1,1093 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Fri, 1 Jun 2018 16:30:44 -0500
+Subject: [PATCH] libmultipath: remove rbd code
+
+The Ceph tean has asked to drop support for multipathed rbd, since it
+was running into data corruption issues. There was never an upstream
+Ceph release based on it, and because of the corruption, there should be
+no users of this code. This patch simply reverts all the rbd code from
+multipath.
+
+Cc: Michael Christie <mchristi@redhat.com>
+Cc: Jason Dillaman <dillaman@redhat.com>
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/checkers.c              |  22 --
+ libmultipath/checkers.h              |   6 -
+ libmultipath/checkers/Makefile       |   7 -
+ libmultipath/checkers/cciss_tur.c    |   5 -
+ libmultipath/checkers/directio.c     |   5 -
+ libmultipath/checkers/emc_clariion.c |   5 -
+ libmultipath/checkers/hp_sw.c        |   5 -
+ libmultipath/checkers/rbd.c          | 653 -----------------------------------
+ libmultipath/checkers/rdac.c         |   5 -
+ libmultipath/checkers/readsector0.c  |   5 -
+ libmultipath/checkers/tur.c          |   5 -
+ libmultipath/discovery.c             |  70 ----
+ libmultipath/hwtable.c               |  12 -
+ multipath/multipath.conf.5           |   3 -
+ multipathd/main.c                    |  11 -
+ 15 files changed, 819 deletions(-)
+ delete mode 100644 libmultipath/checkers/rbd.c
+
+diff --git a/libmultipath/checkers.c b/libmultipath/checkers.c
+index 08cdfc3..0bacc86 100644
+--- a/libmultipath/checkers.c
++++ b/libmultipath/checkers.c
+@@ -141,13 +141,6 @@ struct checker * add_checker (char *multipath_dir, char * name)
+ 	if (!c->free)
+ 		goto out;
+ 
+-	c->repair = (void (*)(struct checker *)) dlsym(c->handle,
+-						       "libcheck_repair");
+-	errstr = dlerror();
+-	if (errstr != NULL)
+-		condlog(0, "A dynamic linking error occurred: (%s)", errstr);
+-	if (!c->repair)
+-		goto out;
+ done:
+ 	c->fd = -1;
+ 	c->sync = 1;
+@@ -222,20 +215,6 @@ void checker_put (struct checker * dst)
+ 	free_checker(src);
+ }
+ 
+-void checker_repair (struct checker * c)
+-{
+-	if (!checker_selected(c))
+-		return;
+-
+-	c->message[0] = '\0';
+-	if (c->disable) {
+-		MSG(c, "checker disabled");
+-		return;
+-	}
+-	if (c->repair)
+-		c->repair(c);
+-}
+-
+ int checker_check (struct checker * c, int path_state)
+ {
+ 	int r;
+@@ -310,7 +289,6 @@ void checker_get (char *multipath_dir, struct checker * dst, char * name)
+ 	dst->sync = src->sync;
+ 	strncpy(dst->name, src->name, CHECKER_NAME_LEN);
+ 	strncpy(dst->message, src->message, CHECKER_MSG_LEN);
+-	dst->repair = src->repair;
+ 	dst->check = src->check;
+ 	dst->init = src->init;
+ 	dst->free = src->free;
+diff --git a/libmultipath/checkers.h b/libmultipath/checkers.h
+index 52154ca..7b18a1a 100644
+--- a/libmultipath/checkers.h
++++ b/libmultipath/checkers.h
+@@ -86,7 +86,6 @@ enum path_check_state {
+ #define READSECTOR0  "readsector0"
+ #define CCISS_TUR    "cciss_tur"
+ #define NONE         "none"
+-#define RBD          "rbd"
+ 
+ #define ASYNC_TIMEOUT_SEC	30
+ 
+@@ -113,9 +112,6 @@ struct checker {
+ 						multipath-wide. Use MALLOC if
+ 						you want to stuff data in. */
+ 	int (*check)(struct checker *);
+-	void (*repair)(struct checker *);    /* called if check returns
+-						PATH_DOWN to bring path into
+-						usable state */
+ 	int (*init)(struct checker *);       /* to allocate the context */
+ 	void (*free)(struct checker *);      /* to free the context */
+ };
+@@ -136,7 +132,6 @@ void checker_set_async (struct checker *);
+ void checker_set_fd (struct checker *, int);
+ void checker_enable (struct checker *);
+ void checker_disable (struct checker *);
+-void checker_repair (struct checker *);
+ int checker_check (struct checker *, int);
+ int checker_selected (struct checker *);
+ char * checker_name (struct checker *);
+@@ -148,6 +143,5 @@ void checker_get (char *, struct checker *, char *);
+ int libcheck_check(struct checker *);
+ int libcheck_init(struct checker *);
+ void libcheck_free(struct checker *);
+-void libcheck_repair(struct checker *);
+ 
+ #endif /* _CHECKERS_H */
+diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile
+index 87c15bd..02caea6 100644
+--- a/libmultipath/checkers/Makefile
++++ b/libmultipath/checkers/Makefile
+@@ -15,15 +15,8 @@ LIBS= \
+ 	libcheckhp_sw.so \
+ 	libcheckrdac.so
+ 
+-ifneq ($(call check_file,/usr/include/rados/librados.h),0)
+-LIBS += libcheckrbd.so
+-endif
+-
+ all: $(LIBS)
+ 
+-libcheckrbd.so: rbd.o
+-	$(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ -lrados -ludev
+-
+ libcheckdirectio.so: libsg.o directio.o
+ 	$(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ -laio
+ 
+diff --git a/libmultipath/checkers/cciss_tur.c b/libmultipath/checkers/cciss_tur.c
+index 436470c..1cab201 100644
+--- a/libmultipath/checkers/cciss_tur.c
++++ b/libmultipath/checkers/cciss_tur.c
+@@ -59,11 +59,6 @@ void libcheck_free (struct checker * c)
+ 	return;
+ }
+ 
+-void libcheck_repair (struct checker * c)
+-{
+-	return;
+-}
+-
+ int libcheck_check(struct checker * c)
+ {
+ 	int rc;
+diff --git a/libmultipath/checkers/directio.c b/libmultipath/checkers/directio.c
+index ce60e4c..a80848d 100644
+--- a/libmultipath/checkers/directio.c
++++ b/libmultipath/checkers/directio.c
+@@ -118,11 +118,6 @@ void libcheck_free (struct checker * c)
+ 	free(ct);
+ }
+ 
+-void libcheck_repair (struct checker * c)
+-{
+-	return;
+-}
+-
+ static int
+ check_state(int fd, struct directio_context *ct, int sync, int timeout_secs)
+ {
+diff --git a/libmultipath/checkers/emc_clariion.c b/libmultipath/checkers/emc_clariion.c
+index 9c1ffed..9115b1b 100644
+--- a/libmultipath/checkers/emc_clariion.c
++++ b/libmultipath/checkers/emc_clariion.c
+@@ -90,11 +90,6 @@ void libcheck_free (struct checker * c)
+ 	free(c->context);
+ }
+ 
+-void libcheck_repair (struct checker * c)
+-{
+-	return;
+-}
+-
+ int libcheck_check (struct checker * c)
+ {
+ 	unsigned char sense_buffer[128] = { 0, };
+diff --git a/libmultipath/checkers/hp_sw.c b/libmultipath/checkers/hp_sw.c
+index cee9aab..0ad34a6 100644
+--- a/libmultipath/checkers/hp_sw.c
++++ b/libmultipath/checkers/hp_sw.c
+@@ -45,11 +45,6 @@ void libcheck_free (struct checker * c)
+ 	return;
+ }
+ 
+-void libcheck_repair (struct checker * c)
+-{
+-	return;
+-}
+-
+ static int
+ do_inq(int sg_fd, int cmddt, int evpd, unsigned int pg_op,
+        void *resp, int mx_resp_len, int noisy, unsigned int timeout)
+diff --git a/libmultipath/checkers/rbd.c b/libmultipath/checkers/rbd.c
+deleted file mode 100644
+index 4ff54f4..0000000
+--- a/libmultipath/checkers/rbd.c
++++ /dev/null
+@@ -1,653 +0,0 @@
+-/*
+- * Copyright (c) 2016 Red Hat
+- * Copyright (c) 2004 Christophe Varoqui
+- *
+- * Code based off of tur.c and ceph's krbd.cc
+- */
+-#define _GNU_SOURCE
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <unistd.h>
+-#include <fcntl.h>
+-#include <errno.h>
+-#include <pthread.h>
+-#include <libudev.h>
+-#include <ifaddrs.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-#include <sys/ioctl.h>
+-#include <sys/time.h>
+-#include <sys/wait.h>
+-#include <urcu.h>
+-
+-#include "rados/librados.h"
+-
+-#include "structs.h"
+-#include "checkers.h"
+-
+-#include "../libmultipath/debug.h"
+-#include "../libmultipath/util.h"
+-#include "../libmultipath/time-util.h"
+-#include "../libmultipath/util.h"
+-
+-struct rbd_checker_context;
+-typedef int (thread_fn)(struct rbd_checker_context *ct, char *msg);
+-
+-#define RBD_MSG(msg, fmt, args...) snprintf(msg, CHECKER_MSG_LEN, fmt, ##args);
+-
+-#define RBD_FEATURE_EXCLUSIVE_LOCK	(1 << 2)
+-
+-struct rbd_checker_context {
+-	int rbd_bus_id;
+-	char *client_addr;
+-	char *config_info;
+-	char *snap;
+-	char *pool;
+-	char *image;
+-	char *username;
+-	int remapped;
+-	int blacklisted;
+-	unsigned lock_on_read:1;
+-
+-	rados_t cluster;
+-
+-	int state;
+-	int running;
+-	time_t time;
+-	thread_fn *fn;
+-	pthread_t thread;
+-	pthread_mutex_t lock;
+-	pthread_cond_t active;
+-	pthread_spinlock_t hldr_lock;
+-	int holders;
+-	char message[CHECKER_MSG_LEN];
+-};
+-
+-int libcheck_init(struct checker * c)
+-{
+-	struct rbd_checker_context *ct;
+-	struct udev_device *block_dev;
+-	struct udev_device *bus_dev;
+-	struct udev *udev;
+-	struct stat sb;
+-	const char *block_name, *addr, *config_info, *features_str;
+-	const char *image, *pool, *snap, *username;
+-	uint64_t features = 0;
+-	char sysfs_path[PATH_SIZE];
+-	int ret;
+-
+-	ct = malloc(sizeof(struct rbd_checker_context));
+-	if (!ct)
+-		return 1;
+-	memset(ct, 0, sizeof(struct rbd_checker_context));
+-	ct->holders = 1;
+-	pthread_cond_init_mono(&ct->active);
+-	pthread_mutex_init(&ct->lock, NULL);
+-	pthread_spin_init(&ct->hldr_lock, PTHREAD_PROCESS_PRIVATE);
+-	c->context = ct;
+-
+-	/*
+-	 * The rbd block layer sysfs device is not linked to the rbd bus
+-	 * device that we interact with, so figure that out now.
+-	 */
+-	if (fstat(c->fd, &sb) != 0)
+-		goto free_ct;
+-
+-	udev = udev_new();
+-	if (!udev)
+-		goto free_ct;
+-
+-	block_dev = udev_device_new_from_devnum(udev, 'b', sb.st_rdev);
+-	if (!block_dev)
+-		goto free_udev;
+-
+-	block_name  = udev_device_get_sysname(block_dev);
+-	ret = sscanf(block_name, "rbd%d", &ct->rbd_bus_id);
+-
+-	udev_device_unref(block_dev);
+-	if (ret != 1)
+-		goto free_udev;
+-
+-	snprintf(sysfs_path, sizeof(sysfs_path), "/sys/bus/rbd/devices/%d",
+-		 ct->rbd_bus_id);
+-	bus_dev = udev_device_new_from_syspath(udev, sysfs_path);
+-	if (!bus_dev)
+-		goto free_udev;
+-
+-	addr = udev_device_get_sysattr_value(bus_dev, "client_addr");
+-	if (!addr) {
+-		condlog(0, "rbd%d: Could not find client_addr in rbd sysfs. "
+-			"Try updating kernel", ct->rbd_bus_id);
+-		goto free_dev;
+-	}
+-
+-	ct->client_addr = strdup(addr);
+-	if (!ct->client_addr)
+-		goto free_dev;
+-
+-	features_str = udev_device_get_sysattr_value(bus_dev, "features");
+-	if (!features_str)
+-		goto free_addr;
+-	features = strtoll(features_str, NULL, 16);
+-	if (!(features & RBD_FEATURE_EXCLUSIVE_LOCK)) {
+-		condlog(3, "rbd%d: Exclusive lock not set.", ct->rbd_bus_id);
+-		goto free_addr;
+-	}
+-
+-	config_info = udev_device_get_sysattr_value(bus_dev, "config_info");
+-	if (!config_info)
+-		goto free_addr;
+-
+-	if (!strstr(config_info, "noshare")) {
+-		condlog(3, "rbd%d: Only nonshared clients supported.",
+-			ct->rbd_bus_id);
+-		goto free_addr;
+-	}
+-
+-	if (strstr(config_info, "lock_on_read"))
+-		ct->lock_on_read = 1;
+-
+-	ct->config_info = strdup(config_info);
+-	if (!ct->config_info)
+-		goto free_addr;
+-
+-	username = strstr(config_info, "name=");
+-	if (username) {
+-		char *end;
+-		int len;
+-
+-		username += 5;
+-		end = strchr(username, ',');
+-		if (!end)
+-			goto free_info;
+-		len = end - username;
+-
+-		ct->username = malloc(len + 1);
+-		if (!ct->username)
+-			goto free_info;
+-		strncpy(ct->username, username, len);
+-		ct->username[len] = '\0';
+-	}
+-
+-	image = udev_device_get_sysattr_value(bus_dev, "name");
+-	if (!image)
+-		goto free_username;
+-
+-	ct->image = strdup(image);
+-	if (!ct->image)
+-		goto free_username;
+-
+-	pool = udev_device_get_sysattr_value(bus_dev, "pool");
+-	if (!pool)
+-		goto free_image;
+-
+-	ct->pool = strdup(pool);
+-	if (!ct->pool)
+-		goto free_image;
+-
+-	snap = udev_device_get_sysattr_value(bus_dev, "current_snap");
+-	if (!snap)
+-		goto free_pool;
+-
+-	if (strcmp("-", snap)) {
+-		ct->snap = strdup(snap);
+-		if (!ct->snap)
+-			goto free_pool;
+-	}
+-
+-	if (rados_create(&ct->cluster, NULL) < 0) {
+-		condlog(0, "rbd%d: Could not create rados cluster",
+-			ct->rbd_bus_id);
+-		goto free_snap;
+-	}
+-
+-	if (rados_conf_read_file(ct->cluster, NULL) < 0) {
+-		condlog(0, "rbd%d: Could not read rados conf", ct->rbd_bus_id);
+-		goto shutdown_rados;
+-	}
+-
+-	ret = rados_connect(ct->cluster);
+-	if (ret < 0) {
+-		condlog(0, "rbd%d: Could not connect to rados cluster",
+-			ct->rbd_bus_id);
+-		goto shutdown_rados;
+-	}
+-
+-	udev_device_unref(bus_dev);
+-	udev_unref(udev);
+-
+-	condlog(3, "rbd%d checker init %s %s/%s@%s %s", ct->rbd_bus_id,
+-		ct->client_addr, ct->pool, ct->image, ct->snap ? ct->snap : "-",
+-		ct->username ? ct->username : "none");
+-	return 0;
+-
+-shutdown_rados:
+-	rados_shutdown(ct->cluster);
+-free_snap:
+-	if (ct->snap)
+-		free(ct->snap);
+-free_pool:
+-	free(ct->pool);
+-free_image:
+-	free(ct->image);
+-free_username:
+-	if (ct->username)
+-		free(ct->username);
+-free_info:
+-	free(ct->config_info);
+-free_addr:
+-	free(ct->client_addr);
+-free_dev:
+-	udev_device_unref(bus_dev);
+-free_udev:
+-	udev_unref(udev);
+-free_ct:
+-	free(ct);
+-	return 1;
+-}
+-
+-static void cleanup_context(struct rbd_checker_context *ct)
+-{
+-	pthread_mutex_destroy(&ct->lock);
+-	pthread_cond_destroy(&ct->active);
+-	pthread_spin_destroy(&ct->hldr_lock);
+-
+-	rados_shutdown(ct->cluster);
+-
+-	if (ct->username)
+-		free(ct->username);
+-	if (ct->snap)
+-		free(ct->snap);
+-	free(ct->pool);
+-	free(ct->image);
+-	free(ct->config_info);
+-	free(ct->client_addr);
+-	free(ct);
+-}
+-
+-void libcheck_free(struct checker * c)
+-{
+-	if (c->context) {
+-		struct rbd_checker_context *ct = c->context;
+-		int holders;
+-		pthread_t thread;
+-
+-		pthread_spin_lock(&ct->hldr_lock);
+-		ct->holders--;
+-		holders = ct->holders;
+-		thread = ct->thread;
+-		pthread_spin_unlock(&ct->hldr_lock);
+-		if (holders)
+-			pthread_cancel(thread);
+-		else
+-			cleanup_context(ct);
+-		c->context = NULL;
+-	}
+-}
+-
+-static int rbd_is_blacklisted(struct rbd_checker_context *ct, char *msg)
+-{
+-	char *addr_tok, *start, *save;
+-	const char *cmd[2];
+-	char *blklist, *stat;
+-	size_t blklist_len, stat_len;
+-	int ret;
+-	char *end;
+-
+-	cmd[0] = "{\"prefix\": \"osd blacklist ls\"}";
+-	cmd[1] = NULL;
+-
+-	ret = rados_mon_command(ct->cluster, (const char **)cmd, 1, "", 0,
+-				&blklist, &blklist_len, &stat, &stat_len);
+-	if (ret < 0) {
+-		RBD_MSG(msg, "checker failed: mon command failed %d", ret);
+-		return ret;
+-	}
+-
+-	if (!blklist || !blklist_len)
+-		goto free_bufs;
+-
+-	/*
+-	 * parse list of addrs with the format
+-	 * ipv4:port/nonce date time\n
+-	 * or
+-	 * [ipv6]:port/nonce date time\n
+-	 */
+-	ret = 0;
+-	for (start = blklist; ; start = NULL) {
+-		addr_tok = strtok_r(start, "\n", &save);
+-		if (!addr_tok || !strlen(addr_tok))
+-			break;
+-
+-		end = strchr(addr_tok, ' ');
+-		if (!end) {
+-			RBD_MSG(msg, "checker failed: invalid blacklist %s",
+-				 addr_tok);
+-			break;
+-		}
+-		*end = '\0';
+-
+-		if (!strcmp(addr_tok, ct->client_addr)) {
+-			ct->blacklisted = 1;
+-			RBD_MSG(msg, "%s is blacklisted", ct->client_addr);
+-			ret = 1;
+-			break;
+-		}
+-	}
+-
+-free_bufs:
+-	rados_buffer_free(blklist);
+-	rados_buffer_free(stat);
+-	return ret;
+-}
+-
+-static int rbd_check(struct rbd_checker_context *ct, char *msg)
+-{
+-	if (ct->blacklisted || rbd_is_blacklisted(ct, msg) == 1)
+-		return PATH_DOWN;
+-
+-	RBD_MSG(msg, "checker reports path is up");
+-	/*
+-	 * Path may have issues, but the ceph cluster is at least
+-	 * accepting IO, so we can attempt to do IO.
+-	 *
+-	 * TODO: in future versions, we can run other tests to
+-	 * verify OSDs and networks.
+-	 */
+-	return PATH_UP;
+-}
+-
+-static int sysfs_write_rbd_bus(const char *which, const char *buf,
+-			       size_t buf_len)
+-{
+-	char sysfs_path[PATH_SIZE];
+-	int fd;
+-	int r;
+-
+-	/* we require newer kernels so single_major should always be there */
+-	snprintf(sysfs_path, sizeof(sysfs_path),
+-		 "/sys/bus/rbd/%s_single_major", which);
+-	fd = open(sysfs_path, O_WRONLY);
+-	if (fd < 0)
+-		return -errno;
+-
+-	r = safe_write(fd, buf, buf_len);
+-	close(fd);
+-	return r;
+-}
+-
+-static int rbd_remap(struct rbd_checker_context *ct)
+-{
+-	char *argv[11];
+-	pid_t pid;
+-	int ret = 0, i = 0;
+-	int status;
+-
+-	pid = fork();
+-	switch (pid) {
+-	case 0:
+-		argv[i++] = "rbd";
+-		argv[i++] = "map";
+-		if (ct->lock_on_read)
+-			argv[i++] = "-o noshare,lock_on_read";
+-		else
+-			argv[i++] = "-o noshare";
+-		if (ct->username) {
+-			argv[i++] = "--id";
+-			argv[i++] = ct->username;
+-		}
+-		argv[i++] = "--pool";
+-		argv[i++] = ct->pool;
+-		if (ct->snap) {
+-			argv[i++] = "--snap";
+-			argv[i++] = ct->snap;
+-		}
+-		argv[i++] = ct->image;
+-		argv[i] = NULL;
+-
+-		ret = execvp(argv[0], argv);
+-		condlog(0, "rbd%d: Error executing rbd: %s", ct->rbd_bus_id,
+-			strerror(errno));
+-		exit(-1);
+-	case -1:
+-		condlog(0, "rbd%d: fork failed: %s", ct->rbd_bus_id,
+-			strerror(errno));
+-		return -1;
+-	default:
+-		ret = -1;
+-		wait(&status);
+-		if (WIFEXITED(status)) {
+-			status = WEXITSTATUS(status);
+-			if (status == 0)
+-				ret = 0;
+-			else
+-				condlog(0, "rbd%d: failed with %d",
+-					ct->rbd_bus_id, status);
+-		}
+-	}
+-
+-	return ret;
+-}
+-
+-static int sysfs_write_rbd_remove(const char *buf, int buf_len)
+-{
+-	return sysfs_write_rbd_bus("remove", buf, buf_len);
+-}
+-
+-static int rbd_rm_blacklist(struct rbd_checker_context *ct)
+-{
+-	const char *cmd[2];
+-	char *stat, *cmd_str;
+-	size_t stat_len;
+-	int ret;
+-
+-	ret = asprintf(&cmd_str, "{\"prefix\": \"osd blacklist\", \"blacklistop\": \"rm\", \"addr\": \"%s\"}",
+-		       ct->client_addr);
+-	if (ret == -1)
+-		return -ENOMEM;
+-
+-	cmd[0] = cmd_str;
+-	cmd[1] = NULL;
+-
+-	ret = rados_mon_command(ct->cluster, (const char **)cmd, 1, "", 0,
+-				NULL, NULL, &stat, &stat_len);
+-	if (ret < 0) {
+-		condlog(1, "rbd%d: repair failed to remove blacklist for %s %d",
+-			ct->rbd_bus_id, ct->client_addr, ret);
+-		goto free_cmd;
+-	}
+-
+-	condlog(1, "rbd%d: repair rm blacklist for %s",
+-	       ct->rbd_bus_id, ct->client_addr);
+-	free(stat);
+-free_cmd:
+-	free(cmd_str);
+-	return ret;
+-}
+-
+-static int rbd_repair(struct rbd_checker_context *ct, char *msg)
+-{
+-	char del[17];
+-	int ret;
+-
+-	if (!ct->blacklisted)
+-		return PATH_UP;
+-
+-	if (!ct->remapped) {
+-		ret = rbd_remap(ct);
+-		if (ret) {
+-			RBD_MSG(msg, "repair failed to remap. Err %d", ret);
+-			return PATH_DOWN;
+-		}
+-	}
+-	ct->remapped = 1;
+-
+-	snprintf(del, sizeof(del), "%d force", ct->rbd_bus_id);
+-	ret = sysfs_write_rbd_remove(del, strlen(del) + 1);
+-	if (ret) {
+-		RBD_MSG(msg, "repair failed to clean up. Err %d", ret);
+-		return PATH_DOWN;
+-	}
+-
+-	ret = rbd_rm_blacklist(ct);
+-	if (ret) {
+-		RBD_MSG(msg, "repair could not remove blacklist entry. Err %d",
+-			ret);
+-		return PATH_DOWN;
+-	}
+-
+-	ct->remapped = 0;
+-	ct->blacklisted = 0;
+-
+-	RBD_MSG(msg, "has been repaired");
+-	return PATH_UP;
+-}
+-
+-#define rbd_thread_cleanup_push(ct) pthread_cleanup_push(cleanup_func, ct)
+-#define rbd_thread_cleanup_pop(ct) pthread_cleanup_pop(1)
+-
+-static void cleanup_func(void *data)
+-{
+-	int holders;
+-	struct rbd_checker_context *ct = data;
+-	pthread_spin_lock(&ct->hldr_lock);
+-	ct->holders--;
+-	holders = ct->holders;
+-	ct->thread = 0;
+-	pthread_spin_unlock(&ct->hldr_lock);
+-	if (!holders)
+-		cleanup_context(ct);
+-	rcu_unregister_thread();
+-}
+-
+-static void *rbd_thread(void *ctx)
+-{
+-	struct rbd_checker_context *ct = ctx;
+-	int state;
+-
+-	/* This thread can be canceled, so setup clean up */
+-	rbd_thread_cleanup_push(ct)
+-	rcu_register_thread();
+-	condlog(3, "rbd%d: thread starting up", ct->rbd_bus_id);
+-
+-	ct->message[0] = '\0';
+-
+-	/* checker start up */
+-	pthread_mutex_lock(&ct->lock);
+-	ct->state = PATH_PENDING;
+-	pthread_mutex_unlock(&ct->lock);
+-
+-	state = ct->fn(ct, ct->message);
+-
+-	/* checker done */
+-	pthread_mutex_lock(&ct->lock);
+-	ct->state = state;
+-	pthread_cond_signal(&ct->active);
+-	pthread_mutex_unlock(&ct->lock);
+-
+-	condlog(3, "rbd%d: thead finished, state %s", ct->rbd_bus_id,
+-		checker_state_name(state));
+-	rbd_thread_cleanup_pop(ct);
+-	return ((void *)0);
+-}
+-
+-static void rbd_timeout(struct timespec *tsp)
+-{
+-	clock_gettime(CLOCK_MONOTONIC, tsp);
+-	tsp->tv_nsec += 1000 * 1000; /* 1 millisecond */
+-	normalize_timespec(tsp);
+-}
+-
+-static int rbd_exec_fn(struct checker *c, thread_fn *fn)
+-{
+-	struct rbd_checker_context *ct = c->context;
+-	struct timespec tsp;
+-	pthread_attr_t attr;
+-	int rbd_status, r;
+-
+-	if (c->sync)
+-		return fn(ct, c->message);
+-	/*
+-	 * Async mode
+-	 */
+-	r = pthread_mutex_lock(&ct->lock);
+-	if (r != 0) {
+-		condlog(2, "rbd%d: mutex lock failed with %d", ct->rbd_bus_id,
+-			r);
+-		MSG(c, "rbd%d: thread failed to initialize", ct->rbd_bus_id);
+-		return PATH_WILD;
+-	}
+-
+-	if (ct->running) {
+-		/* Check if checker is still running */
+-		if (ct->thread) {
+-			condlog(3, "rbd%d: thread not finished",
+-				ct->rbd_bus_id);
+-			rbd_status = PATH_PENDING;
+-		} else {
+-			/* checker done */
+-			ct->running = 0;
+-			rbd_status = ct->state;
+-			strncpy(c->message, ct->message, CHECKER_MSG_LEN);
+-			c->message[CHECKER_MSG_LEN - 1] = '\0';
+-		}
+-		pthread_mutex_unlock(&ct->lock);
+-	} else {
+-		/* Start new checker */
+-		ct->state = PATH_UNCHECKED;
+-		ct->fn = fn;
+-		pthread_spin_lock(&ct->hldr_lock);
+-		ct->holders++;
+-		pthread_spin_unlock(&ct->hldr_lock);
+-		setup_thread_attr(&attr, 32 * 1024, 1);
+-		r = pthread_create(&ct->thread, &attr, rbd_thread, ct);
+-		if (r) {
+-			pthread_mutex_unlock(&ct->lock);
+-			ct->thread = 0;
+-			ct->holders--;
+-			condlog(3, "rbd%d failed to start rbd thread, using sync mode",
+-				ct->rbd_bus_id);
+-			return fn(ct, c->message);
+-		}
+-		pthread_attr_destroy(&attr);
+-		rbd_timeout(&tsp);
+-		r = pthread_cond_timedwait(&ct->active, &ct->lock, &tsp);
+-		rbd_status = ct->state;
+-		strncpy(c->message, ct->message,CHECKER_MSG_LEN);
+-		c->message[CHECKER_MSG_LEN -1] = '\0';
+-		pthread_mutex_unlock(&ct->lock);
+-
+-		if (ct->thread &&
+-		    (rbd_status == PATH_PENDING || rbd_status == PATH_UNCHECKED)) {
+-			condlog(3, "rbd%d: thread still running",
+-				ct->rbd_bus_id);
+-			ct->running = 1;
+-			rbd_status = PATH_PENDING;
+-		}
+-	}
+-
+-	return rbd_status;
+-}
+-
+-void libcheck_repair(struct checker * c)
+-{
+-	struct rbd_checker_context *ct = c->context;
+-
+-	if (!ct || !ct->blacklisted)
+-		return;
+-	rbd_exec_fn(c, rbd_repair);
+-}
+-
+-int libcheck_check(struct checker * c)
+-{
+-	struct rbd_checker_context *ct = c->context;
+-
+-	if (!ct)
+-		return PATH_UNCHECKED;
+-
+-	if (ct->blacklisted)
+-		return PATH_DOWN;
+-
+-	return rbd_exec_fn(c, rbd_check);
+-}
+diff --git a/libmultipath/checkers/rdac.c b/libmultipath/checkers/rdac.c
+index a643a4a..5104e4e 100644
+--- a/libmultipath/checkers/rdac.c
++++ b/libmultipath/checkers/rdac.c
+@@ -139,11 +139,6 @@ void libcheck_free (struct checker * c)
+ 	return;
+ }
+ 
+-void libcheck_repair (struct checker * c)
+-{
+-	return;
+-}
+-
+ static int
+ do_inq(int sg_fd, unsigned int pg_op, void *resp, int mx_resp_len,
+        unsigned int timeout)
+diff --git a/libmultipath/checkers/readsector0.c b/libmultipath/checkers/readsector0.c
+index 8fccb46..1c2a868 100644
+--- a/libmultipath/checkers/readsector0.c
++++ b/libmultipath/checkers/readsector0.c
+@@ -23,11 +23,6 @@ void libcheck_free (struct checker * c)
+ 	return;
+ }
+ 
+-void libcheck_repair (struct checker * c)
+-{
+-	return;
+-}
+-
+ int libcheck_check (struct checker * c)
+ {
+ 	unsigned char buf[4096];
+diff --git a/libmultipath/checkers/tur.c b/libmultipath/checkers/tur.c
+index eb3348d..bf8486d 100644
+--- a/libmultipath/checkers/tur.c
++++ b/libmultipath/checkers/tur.c
+@@ -112,11 +112,6 @@ void libcheck_free (struct checker * c)
+ 	return;
+ }
+ 
+-void libcheck_repair (struct checker * c)
+-{
+-	return;
+-}
+-
+ #define TUR_MSG(fmt, args...)					\
+ 	do {							\
+ 		char msg[CHECKER_MSG_LEN];			\
+diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
+index 1ef1dfa..18ad0e2 100644
+--- a/libmultipath/discovery.c
++++ b/libmultipath/discovery.c
+@@ -1246,21 +1246,6 @@ nvme_sysfs_pathinfo (struct path * pp, vector hwtable)
+ }
+ 
+ static int
+-rbd_sysfs_pathinfo (struct path * pp, vector hwtable)
+-{
+-	sprintf(pp->vendor_id, "Ceph");
+-	sprintf(pp->product_id, "RBD");
+-
+-	condlog(3, "%s: vendor = %s product = %s", pp->dev, pp->vendor_id,
+-		pp->product_id);
+-	/*
+-	 * set the hwe configlet pointer
+-	 */
+-	pp->hwe = find_hwe(hwtable, pp->vendor_id, pp->product_id, NULL);
+-	return 0;
+-}
+-
+-static int
+ ccw_sysfs_pathinfo (struct path * pp, vector hwtable)
+ {
+ 	struct udev_device *parent;
+@@ -1486,8 +1471,6 @@ sysfs_pathinfo(struct path * pp, vector hwtable)
+ 		pp->bus = SYSFS_BUS_CCW;
+ 	if (!strncmp(pp->dev,"sd", 2))
+ 		pp->bus = SYSFS_BUS_SCSI;
+-	if (!strncmp(pp->dev,"rbd", 3))
+-		pp->bus = SYSFS_BUS_RBD;
+ 	if (!strncmp(pp->dev,"nvme", 4))
+ 		pp->bus = SYSFS_BUS_NVME;
+ 
+@@ -1502,9 +1485,6 @@ sysfs_pathinfo(struct path * pp, vector hwtable)
+ 	} else if (pp->bus == SYSFS_BUS_CCISS) {
+ 		if (cciss_sysfs_pathinfo(pp, hwtable))
+ 			return 1;
+-	} else if (pp->bus == SYSFS_BUS_RBD) {
+-		if (rbd_sysfs_pathinfo(pp, hwtable))
+-			return 1;
+ 	} else if (pp->bus == SYSFS_BUS_NVME) {
+ 		if (nvme_sysfs_pathinfo(pp, hwtable))
+ 			return 1;
+@@ -1753,53 +1733,6 @@ get_udev_uid(struct path * pp, char *uid_attribute, struct udev_device *udev)
+ }
+ 
+ static int
+-get_rbd_uid(struct path * pp)
+-{
+-	struct udev_device *rbd_bus_dev;
+-	int ret, rbd_bus_id;
+-	const char *pool, *image, *snap;
+-	char sysfs_path[PATH_SIZE];
+-	uint64_t snap_id, max_snap_id = -3;
+-
+-	ret = sscanf(pp->dev, "rbd%d", &rbd_bus_id);
+-	if (ret != 1)
+-		return -EINVAL;
+-
+-	snprintf(sysfs_path, sizeof(sysfs_path), "/sys/bus/rbd/devices/%d",
+-		 rbd_bus_id);
+-	rbd_bus_dev = udev_device_new_from_syspath(udev, sysfs_path);
+-	if (!rbd_bus_dev)
+-		return -ENODEV;
+-
+-	ret = -EINVAL;
+-	pool = udev_device_get_sysattr_value(rbd_bus_dev, "pool_id");
+-	if (!pool)
+-		goto free_dev;
+-
+-	image = udev_device_get_sysattr_value(rbd_bus_dev, "image_id");
+-	if (!image)
+-		goto free_dev;
+-
+-	snap = udev_device_get_sysattr_value(rbd_bus_dev, "snap_id");
+-	if (!snap)
+-		goto free_dev;
+-	snap_id = strtoull(snap, NULL, 19);
+-	if (snap_id >= max_snap_id)
+-		ret = snprintf(pp->wwid, WWID_SIZE, "%s-%s", pool, image);
+-	else
+-		ret = snprintf(pp->wwid, WWID_SIZE, "%s-%s-%s", pool,
+-			       image, snap);
+-	if (ret >= WWID_SIZE) {
+-		condlog(0, "%s: wwid overflow", pp->dev);
+-		ret = -EOVERFLOW;
+-	}
+-
+-free_dev:
+-	udev_device_unref(rbd_bus_dev);
+-	return ret;
+-}
+-
+-static int
+ get_vpd_uid(struct path * pp)
+ {
+ 	struct udev_device *parent = pp->udev;
+@@ -1876,9 +1809,6 @@ get_uid (struct path * pp, int path_state, struct udev_device *udev)
+ 		} else
+ 			len = strlen(pp->wwid);
+ 		origin = "callout";
+-	} else if (pp->bus == SYSFS_BUS_RBD) {
+-		len = get_rbd_uid(pp);
+-		origin = "sysfs";
+ 	} else {
+ 
+ 		if (udev && pp->uid_attribute) {
+diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
+index 148f0ba..d529bae 100644
+--- a/libmultipath/hwtable.c
++++ b/libmultipath/hwtable.c
+@@ -1000,18 +1000,6 @@ static struct hwentry default_hw[] = {
+ 		.prio_name     = PRIO_ALUA,
+ 	},
+ 	/*
+-	 * Red Hat
+-	 *
+-	 * Maintainer: Mike Christie
+-	 * Mail: mchristi@redhat.com
+-	 */
+-	{
+-		.vendor        = "Ceph",
+-		.product       = "RBD",
+-		.checker_name  = RBD,
+-		.deferred_remove = DEFERRED_REMOVE_ON,
+-	},
+-	/*
+ 	 * Kove
+ 	 */
+ 	{
+diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
+index 0c1f174..31f4585 100644
+--- a/multipath/multipath.conf.5
++++ b/multipath/multipath.conf.5
+@@ -482,9 +482,6 @@ Check the path state for HP/COMPAQ Smart Array(CCISS) controllers.
+ .I none
+ Do not check the device, fallback to use the values retrieved from sysfs
+ .TP
+-.I rbd
+-Check if the path is in the Ceph blacklist and remap the path if it is.
+-.TP
+ The default is: \fBtur\fR
+ .RE
+ .
+diff --git a/multipathd/main.c b/multipathd/main.c
+index 0db88ee..d40c416 100644
+--- a/multipathd/main.c
++++ b/multipathd/main.c
+@@ -1783,15 +1783,6 @@ int update_path_groups(struct multipath *mpp, struct vectors *vecs, int refresh)
+ 	return 0;
+ }
+ 
+-void repair_path(struct path * pp)
+-{
+-	if (pp->state != PATH_DOWN)
+-		return;
+-
+-	checker_repair(&pp->checker);
+-	LOG_MSG(1, checker_message(&pp->checker));
+-}
+-
+ /*
+  * Returns '1' if the path has been checked, '-1' if it was blacklisted
+  * and '0' otherwise
+@@ -1972,7 +1963,6 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
+ 			pp->mpp->failback_tick = 0;
+ 
+ 			pp->mpp->stat_path_failures++;
+-			repair_path(pp);
+ 			return 1;
+ 		}
+ 
+@@ -2071,7 +2061,6 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
+ 	}
+ 
+ 	pp->state = newstate;
+-	repair_path(pp);
+ 
+ 	if (pp->mpp->wait_for_udev)
+ 		return 1;
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0017-mpathpersist-fix-aptpl-support.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0017-mpathpersist-fix-aptpl-support.patch
new file mode 100644
index 0000000..b98d310
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0017-mpathpersist-fix-aptpl-support.patch
@@ -0,0 +1,543 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Mon, 4 Jun 2018 22:04:44 -0500
+Subject: [PATCH] mpathpersist: fix aptpl support
+
+The "Active Persist Through Power Loss" flag must be set whenever a key
+is registered. However, there is no way for multipathd to know if this
+was set by mpathpersist. The result is that if a path goes down and
+comes back up (or if it wasn't up when mpathpersist was first run)
+multipathd will clear the aptpl flag when it reregisters the key on it.
+
+To fix this, multipath.conf now accepts an optional ":aptpl" appended
+on the reservation_key value. If this is added to the reservation_key
+multipathd will set the aptpl flag when it reregisters the key. If
+reservation_key is set to "file", this will automatically be tracked
+in the /etc/multipath/prkeys file.
+
+To track this flag in the prkeys file, without changing the format
+I've made "0x<key>" stand for non-aptpl keys, and "0X<key>" stand
+for aptpl keys. Since previously, all keys used a lower-case x, this
+will default to the current behavior for existing keys. Obviously, the
+next time mpathpersist is run, this will be changed if --param-aptpl
+is used.  Since there are no more flags that are in sg_persist that
+multipathd needs to care about in mpathpersist, there shouldn't need
+to be any more flags added to the prkeys file.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmpathpersist/mpath_persist.c  |  3 ++-
+ libmpathpersist/mpath_updatepr.c | 11 +++++++----
+ libmpathpersist/mpathpr.h        |  3 ++-
+ libmultipath/Makefile            |  2 +-
+ libmultipath/config.h            |  2 ++
+ libmultipath/dict.c              | 23 +++++++++++++++++++----
+ libmultipath/dict.h              |  3 ++-
+ libmultipath/prkey.c             | 27 ++++++++++++++++++++++++---
+ libmultipath/prkey.h             |  6 ++++--
+ libmultipath/propsel.c           |  6 ++++--
+ libmultipath/structs.h           |  1 +
+ libmultipath/util.c              | 16 ++++++++++++++++
+ libmultipath/util.h              |  1 +
+ multipath/multipath.conf.5       |  7 +++++--
+ multipathd/cli_handlers.c        | 15 ++++++++++-----
+ multipathd/main.c                |  1 +
+ 16 files changed, 101 insertions(+), 26 deletions(-)
+
+diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c
+index ca91c55..6e9e67f 100644
+--- a/libmpathpersist/mpath_persist.c
++++ b/libmpathpersist/mpath_persist.c
+@@ -344,7 +344,8 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope,
+ 	      rq_servact == MPATH_PROUT_REG_SA) ||
+ 	     rq_servact == MPATH_PROUT_REG_IGN_SA)) {
+ 		memcpy(&mpp->reservation_key, paramp->sa_key, 8);
+-		if (update_prkey(alias, get_be64(mpp->reservation_key))) {
++		if (update_prkey_flags(alias, get_be64(mpp->reservation_key),
++				       paramp->sa_flags)) {
+ 			condlog(0, "%s: failed to set prkey for multipathd.",
+ 				alias);
+ 			ret = MPATH_PR_DMMP_ERROR;
+diff --git a/libmpathpersist/mpath_updatepr.c b/libmpathpersist/mpath_updatepr.c
+index 8063e90..0aca28e 100644
+--- a/libmpathpersist/mpath_updatepr.c
++++ b/libmpathpersist/mpath_updatepr.c
+@@ -1,7 +1,5 @@
+ #include <stdio.h>
+ #include <unistd.h>
+-#include <errno.h>
+-
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <fcntl.h>
+@@ -11,6 +9,8 @@
+ #include <sys/un.h>
+ #include <poll.h>
+ #include <errno.h>
++#include <libudev.h>
++#include <mpath_persist.h>
+ #include "debug.h"
+ #include "mpath_cmd.h"
+ #include "uxsock.h"
+@@ -59,11 +59,14 @@ int update_prflag(char *mapname, int set) {
+ 	return do_update_pr(mapname, (set)? "setprstatus" : "unsetprstatus");
+ }
+ 
+-int update_prkey(char *mapname, uint64_t prkey) {
++int update_prkey_flags(char *mapname, uint64_t prkey, uint8_t sa_flags) {
+ 	char str[256];
++	char *flagstr = "";
+ 
++	if (sa_flags & MPATH_F_APTPL_MASK)
++		flagstr = ":aptpl";
+ 	if (prkey)
+-		sprintf(str, "setprkey key %" PRIx64, prkey);
++		sprintf(str, "setprkey key %" PRIx64 "%s", prkey, flagstr);
+ 	else
+ 		sprintf(str, "unsetprkey");
+ 	return do_update_pr(mapname, str);
+diff --git a/libmpathpersist/mpathpr.h b/libmpathpersist/mpathpr.h
+index 72feb60..5ea8cd6 100644
+--- a/libmpathpersist/mpathpr.h
++++ b/libmpathpersist/mpathpr.h
+@@ -46,7 +46,8 @@ int send_prout_activepath(char * dev, int rq_servact, int rq_scope,
+ 	unsigned int rq_type,   struct prout_param_descriptor * paramp, int noisy);
+ 
+ int update_prflag(char *mapname, int set);
+-int update_prkey(char *mapname, uint64_t prkey);
++int update_prkey_flags(char *mapname, uint64_t prkey, uint8_t sa_flags);
++#define update_prkey(mapname, prkey) update_prkey_flags(mapname, prkey, 0)
+ void * mpath_alloc_prin_response(int prin_sa);
+ int update_map_pr(struct multipath *mpp);
+ 
+diff --git a/libmultipath/Makefile b/libmultipath/Makefile
+index f51786d..33f5269 100644
+--- a/libmultipath/Makefile
++++ b/libmultipath/Makefile
+@@ -7,7 +7,7 @@ SONAME = 0
+ DEVLIB = libmultipath.so
+ LIBS = $(DEVLIB).$(SONAME)
+ 
+-CFLAGS += $(LIB_CFLAGS) -I$(mpathcmddir)
++CFLAGS += $(LIB_CFLAGS) -I$(mpathcmddir) -I$(mpathpersistdir)
+ 
+ LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathcmddir) -lmpathcmd -lurcu -laio
+ 
+diff --git a/libmultipath/config.h b/libmultipath/config.h
+index 1bf708a..fcbe3fc 100644
+--- a/libmultipath/config.h
++++ b/libmultipath/config.h
+@@ -98,6 +98,7 @@ struct mpentry {
+ 	char * prio_args;
+ 	int prkey_source;
+ 	struct be64 reservation_key;
++	uint8_t sa_flags;
+ 	int pgpolicy;
+ 	int pgfailback;
+ 	int rr_weight;
+@@ -197,6 +198,7 @@ struct config {
+ 	int prkey_source;
+ 	int all_tg_pt;
+ 	struct be64 reservation_key;
++	uint8_t sa_flags;
+ 
+ 	vector keywords;
+ 	vector mptable;
+diff --git a/libmultipath/dict.c b/libmultipath/dict.c
+index 2557b8a..7ad0f5a 100644
+--- a/libmultipath/dict.c
++++ b/libmultipath/dict.c
+@@ -22,6 +22,8 @@
+ #include "util.h"
+ #include <errno.h>
+ #include <inttypes.h>
++#include <libudev.h>
++#include <mpath_persist.h>
+ #include "mpath_cmd.h"
+ #include "dict.h"
+ 
+@@ -1012,10 +1014,12 @@ snprint_def_log_checker_err (struct config *conf, char * buff, int len,
+ }
+ 
+ static int
+-set_reservation_key(vector strvec, struct be64 *be64_ptr, int *source_ptr)
++set_reservation_key(vector strvec, struct be64 *be64_ptr, uint8_t *flags_ptr,
++		    int *source_ptr)
+ {
+ 	char *buff;
+ 	uint64_t prkey;
++	uint8_t sa_flags;
+ 
+ 	buff = set_value(strvec);
+ 	if (!buff)
+@@ -1023,35 +1027,43 @@ set_reservation_key(vector strvec, struct be64 *be64_ptr, int *source_ptr)
+ 
+ 	if (strcmp(buff, "file") == 0) {
+ 		*source_ptr = PRKEY_SOURCE_FILE;
++		*flags_ptr = 0;
+ 		put_be64(*be64_ptr, 0);
+ 		FREE(buff);
+ 		return 0;
+ 	}
+ 
+-	if (parse_prkey(buff, &prkey) != 0) {
++	if (parse_prkey_flags(buff, &prkey, &sa_flags) != 0) {
+ 		FREE(buff);
+ 		return 1;
+ 	}
+ 	*source_ptr = PRKEY_SOURCE_CONF;
++	*flags_ptr = sa_flags;
+ 	put_be64(*be64_ptr, prkey);
+ 	FREE(buff);
+ 	return 0;
+ }
+ 
+ int
+-print_reservation_key(char * buff, int len, struct be64 key, int source)
++print_reservation_key(char * buff, int len, struct be64 key, uint8_t flags,
++		      int source)
+ {
++	char *flagstr = "";
+ 	if (source == PRKEY_SOURCE_NONE)
+ 		return 0;
+ 	if (source == PRKEY_SOURCE_FILE)
+ 		return snprintf(buff, len, "file");
+-	return snprintf(buff, len, "0x%" PRIx64, get_be64(key));
++	if (flags & MPATH_F_APTPL_MASK)
++		flagstr = ":aptpl";
++	return snprintf(buff, len, "0x%" PRIx64 "%s", get_be64(key),
++			flagstr);
+ }
+ 
+ static int
+ def_reservation_key_handler(struct config *conf, vector strvec)
+ {
+ 	return set_reservation_key(strvec, &conf->reservation_key,
++				   &conf->sa_flags,
+ 				   &conf->prkey_source);
+ }
+ 
+@@ -1060,6 +1072,7 @@ snprint_def_reservation_key (struct config *conf, char * buff, int len,
+ 			     const void * data)
+ {
+ 	return print_reservation_key(buff, len, conf->reservation_key,
++				     conf->sa_flags,
+ 				     conf->prkey_source);
+ }
+ 
+@@ -1070,6 +1083,7 @@ mp_reservation_key_handler(struct config *conf, vector strvec)
+ 	if (!mpe)
+ 		return 1;
+ 	return set_reservation_key(strvec, &mpe->reservation_key,
++				   &mpe->sa_flags,
+ 				   &mpe->prkey_source);
+ }
+ 
+@@ -1079,6 +1093,7 @@ snprint_mp_reservation_key (struct config *conf, char * buff, int len,
+ {
+ 	const struct mpentry * mpe = (const struct mpentry *)data;
+ 	return print_reservation_key(buff, len, mpe->reservation_key,
++				     mpe->sa_flags,
+ 				     mpe->prkey_source);
+ }
+ 
+diff --git a/libmultipath/dict.h b/libmultipath/dict.h
+index 7564892..a40ac66 100644
+--- a/libmultipath/dict.h
++++ b/libmultipath/dict.h
+@@ -15,6 +15,7 @@ int print_pgpolicy(char *buff, int len, long v);
+ int print_no_path_retry(char *buff, int len, long v);
+ int print_fast_io_fail(char *buff, int len, long v);
+ int print_dev_loss(char *buff, int len, unsigned long v);
+-int print_reservation_key(char * buff, int len, struct be64 key, int source);
++int print_reservation_key(char * buff, int len, struct be64 key, uint8_t
++			  flags, int source);
+ int print_off_int_undef(char *buff, int len, long v);
+ #endif /* _DICT_H */
+diff --git a/libmultipath/prkey.c b/libmultipath/prkey.c
+index 89b90ed..d645f81 100644
+--- a/libmultipath/prkey.c
++++ b/libmultipath/prkey.c
+@@ -11,6 +11,8 @@
+ #include <string.h>
+ #include <inttypes.h>
+ #include <errno.h>
++#include <libudev.h>
++#include <mpath_persist.h>
+ 
+ #define PRKEY_READ 0
+ #define PRKEY_WRITE 1
+@@ -108,7 +110,8 @@ static int do_prkey(int fd, char *wwid, char *keystr, int cmd)
+ 	return 0;
+ }
+ 
+-int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey)
++int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey,
++	      uint8_t *sa_flags)
+ {
+ 	int fd;
+ 	int unused;
+@@ -124,6 +127,9 @@ int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey)
+ 	ret = do_prkey(fd, mpp->wwid, keystr, PRKEY_READ);
+ 	if (ret)
+ 		goto out_file;
++	*sa_flags = 0;
++	if (strchr(keystr, 'X'))
++		*sa_flags = MPATH_F_APTPL_MASK;
+ 	ret = !!parse_prkey(keystr, prkey);
+ out_file:
+ 	close(fd);
+@@ -131,7 +137,8 @@ out:
+ 	return ret;
+ }
+ 
+-int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey)
++int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey,
++	      uint8_t sa_flags)
+ {
+ 	int fd;
+ 	int can_write = 1;
+@@ -141,6 +148,12 @@ int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey)
+ 	if (!strlen(mpp->wwid))
+ 		goto out;
+ 
++	if (sa_flags & ~MPATH_F_APTPL_MASK) {
++		condlog(0, "unsupported pr flags, 0x%x",
++			sa_flags & ~MPATH_F_APTPL_MASK);
++		sa_flags &= MPATH_F_APTPL_MASK;
++	}
++
+ 	fd = open_file(conf->prkeys_file, &can_write, PRKEYS_FILE_HEADER);
+ 	if (fd < 0)
+ 		goto out;
+@@ -149,7 +162,15 @@ int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey)
+ 		goto out_file;
+ 	}
+ 	if (prkey) {
+-		snprintf(keystr, PRKEY_SIZE, "0x%016" PRIx64, prkey);
++		/* using the capitalization of the 'x' is a hack, but
++		 * it's unlikely that mpath_persist will support more options
++		 * since sg_persist doesn't, and this lets us keep the
++		 * same file format as before instead of needing to change
++		 * the format of the prkeys file */
++		if (sa_flags)
++			snprintf(keystr, PRKEY_SIZE, "0X%016" PRIx64, prkey);
++		else
++			snprintf(keystr, PRKEY_SIZE, "0x%016" PRIx64, prkey);
+ 		keystr[PRKEY_SIZE - 1] = '\0';
+ 		ret = do_prkey(fd, mpp->wwid, keystr, PRKEY_WRITE);
+ 	}
+diff --git a/libmultipath/prkey.h b/libmultipath/prkey.h
+index 4028e70..6739191 100644
+--- a/libmultipath/prkey.h
++++ b/libmultipath/prkey.h
+@@ -13,7 +13,9 @@
+ "# prkey wwid\n" \
+ "#\n"
+ 
+-int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey);
+-int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey);
++int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey,
++	      uint8_t sa_flags);
++int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey,
++	      uint8_t *sa_flags);
+ 
+ #endif /* _PRKEY_H */
+diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
+index 9ca1355..62a6893 100644
+--- a/libmultipath/propsel.c
++++ b/libmultipath/propsel.c
+@@ -106,6 +106,7 @@ do {									\
+ 	if (src && src->prkey_source != PRKEY_SOURCE_NONE) {		\
+ 		mp->prkey_source = src->prkey_source;			\
+ 		mp->reservation_key = src->reservation_key;		\
++		mp->sa_flags = src->sa_flags;				\
+ 		origin = msg;						\
+ 		goto out;						\
+ 	}								\
+@@ -703,18 +704,19 @@ int select_reservation_key(struct config *conf, struct multipath *mp)
+ 	do_prkey_set(mp->mpe, multipaths_origin);
+ 	do_prkey_set(conf, conf_origin);
+ 	put_be64(mp->reservation_key, 0);
++	mp->sa_flags = 0;
+ 	mp->prkey_source = PRKEY_SOURCE_NONE;
+ 	return 0;
+ out:
+ 	if (mp->prkey_source == PRKEY_SOURCE_FILE) {
+ 		from_file = " (from prkeys file)";
+-		if (get_prkey(conf, mp, &prkey) != 0)
++		if (get_prkey(conf, mp, &prkey, &mp->sa_flags) != 0)
+ 			put_be64(mp->reservation_key, 0);
+ 		else
+ 			put_be64(mp->reservation_key, prkey);
+ 	}
+ 	print_reservation_key(buff, PRKEY_SIZE, mp->reservation_key,
+-			      mp->prkey_source);
++			      mp->sa_flags, mp->prkey_source);
+ 	condlog(3, "%s: reservation_key = %s %s%s", mp->alias, buff, origin,
+ 		from_file);
+ 	return 0;
+diff --git a/libmultipath/structs.h b/libmultipath/structs.h
+index 0194b1e..987479f 100644
+--- a/libmultipath/structs.h
++++ b/libmultipath/structs.h
+@@ -367,6 +367,7 @@ struct multipath {
+ 	/* persistent management data*/
+ 	int prkey_source;
+ 	struct be64 reservation_key;
++	uint8_t sa_flags;
+ 	unsigned char prflag;
+ 	int all_tg_pt;
+ 	struct gen_multipath generic_mp;
+diff --git a/libmultipath/util.c b/libmultipath/util.c
+index 7251ad0..8d8fcc8 100644
+--- a/libmultipath/util.c
++++ b/libmultipath/util.c
+@@ -10,6 +10,8 @@
+ #include <dirent.h>
+ #include <unistd.h>
+ #include <errno.h>
++#include <libudev.h>
++#include <mpath_persist.h>
+ 
+ #include "util.h"
+ #include "debug.h"
+@@ -435,6 +437,20 @@ int parse_prkey(char *ptr, uint64_t *prkey)
+ 	return 0;
+ }
+ 
++int parse_prkey_flags(char *ptr, uint64_t *prkey, uint8_t *flags)
++{
++	char *flagstr;
++
++	flagstr = strchr(ptr, ':');
++	*flags = 0;
++	if (flagstr) {
++		*flagstr++ = '\0';
++		if (strlen(flagstr) == 5 && strcmp(flagstr, "aptpl") == 0)
++			*flags = MPATH_F_APTPL_MASK;
++	}
++	return parse_prkey(ptr, prkey);
++}
++
+ int safe_write(int fd, const void *buf, size_t count)
+ {
+ 	while (count > 0) {
+diff --git a/libmultipath/util.h b/libmultipath/util.h
+index a3ab894..56cec76 100644
+--- a/libmultipath/util.h
++++ b/libmultipath/util.h
+@@ -19,6 +19,7 @@ void setup_thread_attr(pthread_attr_t *attr, size_t stacksize, int detached);
+ int systemd_service_enabled(const char *dev);
+ int get_linux_version_code(void);
+ int parse_prkey(char *ptr, uint64_t *prkey);
++int parse_prkey_flags(char *ptr, uint64_t *prkey, uint8_t *flags);
+ int safe_write(int fd, const void *buf, size_t count);
+ 
+ #define KERNEL_VERSION(maj, min, ptc) ((((maj) * 256) + (min)) * 256 + (ptc))
+diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
+index 31f4585..30d8598 100644
+--- a/multipath/multipath.conf.5
++++ b/multipath/multipath.conf.5
+@@ -726,14 +726,17 @@ This is the service action reservation key used by mpathpersist. It must be
+ set for all multipath devices using persistent reservations, and it must be
+ the same as the RESERVATION KEY field of the PERSISTENT RESERVE OUT parameter
+ list which contains an 8-byte value provided by the application client to the
+-device server to identify the I_T nexus.
++device server to identify the I_T nexus. If the \fI--param-aptpl\fR option is
++used when registering the key with mpathpersist, \fB:aptpl\fR must be appended
++to the end of the reservation key.
+ .RS
+ .PP
+ Alternatively, this can be set to \fBfile\fR, which will store the RESERVATION
+ KEY registered by mpathpersist in the \fIprkeys_file\fR. multipathd will then
+ use this key to register additional paths as they appear.  When the
+ registration is removed, the RESERVATION KEY is removed from the
+-\fIprkeys_file\fR.
++\fIprkeys_file\fR. The prkeys file will automatically keep track of whether
++the key was registered with \fI--param-aptpl\fR.
+ .TP
+ The default is: \fB<unset>\fR
+ .RE
+diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
+index ba50fb8..6452796 100644
+--- a/multipathd/cli_handlers.c
++++ b/multipathd/cli_handlers.c
+@@ -21,6 +21,7 @@
+ #include "sysfs.h"
+ #include <errno.h>
+ #include <libudev.h>
++#include <mpath_persist.h>
+ #include "util.h"
+ #include "prkey.h"
+ #include "propsel.h"
+@@ -1463,6 +1464,7 @@ cli_getprkey(void * v, char ** reply, int * len, void * data)
+ 	struct multipath * mpp;
+ 	struct vectors * vecs = (struct vectors *)data;
+ 	char *mapname = get_keyparam(v, MAP);
++	char *flagstr = "";
+ 
+ 	mapname = convert_dev(mapname, 0);
+ 	condlog(3, "%s: get persistent reservation key (operator)", mapname);
+@@ -1478,8 +1480,10 @@ cli_getprkey(void * v, char ** reply, int * len, void * data)
+ 		*len = strlen(*reply) + 1;
+ 		return 0;
+ 	}
+-	snprintf(*reply, 20, "0x%" PRIx64 "\n",
+-		 get_be64(mpp->reservation_key));
++	if (mpp->sa_flags & MPATH_F_APTPL_MASK)
++		flagstr = ":aptpl";
++	snprintf(*reply, 20, "0x%" PRIx64 "%s\n",
++		 get_be64(mpp->reservation_key), flagstr);
+ 	(*reply)[19] = '\0';
+ 	*len = strlen(*reply) + 1;
+ 	return 0;
+@@ -1503,7 +1507,7 @@ cli_unsetprkey(void * v, char ** reply, int * len, void * data)
+ 
+ 	conf = get_multipath_config();
+ 	pthread_cleanup_push(put_multipath_config, conf);
+-	ret = set_prkey(conf, mpp, 0);
++	ret = set_prkey(conf, mpp, 0, 0);
+ 	pthread_cleanup_pop(1);
+ 
+ 	return ret;
+@@ -1517,6 +1521,7 @@ cli_setprkey(void * v, char ** reply, int * len, void * data)
+ 	char *mapname = get_keyparam(v, MAP);
+ 	char *keyparam = get_keyparam(v, KEY);
+ 	uint64_t prkey;
++	uint8_t flags;
+ 	int ret;
+ 	struct config *conf;
+ 
+@@ -1527,14 +1532,14 @@ cli_setprkey(void * v, char ** reply, int * len, void * data)
+ 	if (!mpp)
+ 		return 1;
+ 
+-	if (parse_prkey(keyparam, &prkey) != 0) {
++	if (parse_prkey_flags(keyparam, &prkey, &flags) != 0) {
+ 		condlog(0, "%s: invalid prkey : '%s'", mapname, keyparam);
+ 		return 1;
+ 	}
+ 
+ 	conf = get_multipath_config();
+ 	pthread_cleanup_push(put_multipath_config, conf);
+-	ret = set_prkey(conf, mpp, prkey);
++	ret = set_prkey(conf, mpp, prkey, flags);
+ 	pthread_cleanup_pop(1);
+ 
+ 	return ret;
+diff --git a/multipathd/main.c b/multipathd/main.c
+index d40c416..6b1e782 100644
+--- a/multipathd/main.c
++++ b/multipathd/main.c
+@@ -3089,6 +3089,7 @@ void *  mpath_pr_event_handler_fn (void * pathp )
+ 
+ 	param= malloc(sizeof(struct prout_param_descriptor));
+ 	memset(param, 0 , sizeof(struct prout_param_descriptor));
++	param->sa_flags = mpp->sa_flags;
+ 	memcpy(param->sa_key, &mpp->reservation_key, 8);
+ 	param->num_transportid = 0;
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0018-multipath-don-t-check-timestamps-without-a-path.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0018-multipath-don-t-check-timestamps-without-a-path.patch
new file mode 100644
index 0000000..5a3fd83
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0018-multipath-don-t-check-timestamps-without-a-path.patch
@@ -0,0 +1,34 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Tue, 5 Jun 2018 15:31:55 -0500
+Subject: [PATCH] multipath: don't check timestamps without a path
+
+If a path was blacklisted, pathvec could exist but have no path in it.
+print_cmd_valid wasn't checking this before calling
+find_multipaths_check_timeout(). This was causing it to dereference a
+NULL pointer in these cases.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ multipath/main.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/multipath/main.c b/multipath/main.c
+index c69e996..3f0a6aa 100644
+--- a/multipath/main.c
++++ b/multipath/main.c
+@@ -482,10 +482,8 @@ static int print_cmd_valid(int k, const vector pathvec,
+ 			pp, pp->find_multipaths_timeout, &until);
+ 		if (wait != FIND_MULTIPATHS_WAITING)
+ 			k = 1;
+-	} else if (pathvec != NULL) {
+-		pp = VECTOR_SLOT(pathvec, 0);
++	} else if (pathvec != NULL && (pp = VECTOR_SLOT(pathvec, 0)))
+ 		wait = find_multipaths_check_timeout(pp, 0, &until);
+-	}
+ 	if (wait == FIND_MULTIPATHS_WAITING)
+ 		printf("FIND_MULTIPATHS_WAIT_UNTIL=\"%ld.%06ld\"\n",
+ 			       until.tv_sec, until.tv_nsec/1000);
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0019-libmultipath-fix-detect-alua-corner-case.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0019-libmultipath-fix-detect-alua-corner-case.patch
new file mode 100644
index 0000000..23908fa
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0019-libmultipath-fix-detect-alua-corner-case.patch
@@ -0,0 +1,35 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Fri, 8 Jun 2018 17:12:37 -0500
+Subject: [PATCH] libmultipath: fix detect alua corner case
+
+If retain_attach_hw_handler = no, then the paths tpgs state will never
+be checked, and the multipath device will always select the alua
+handler, if no other handler is selected. the paths tpgs state
+should be checked, regardless of the retain_hwhandler value.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/propsel.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
+index 62a6893..f626c74 100644
+--- a/libmultipath/propsel.c
++++ b/libmultipath/propsel.c
+@@ -403,9 +403,11 @@ int select_hwhandler(struct config *conf, struct multipath *mp)
+ 	bool all_tpgs = true;
+ 
+ 	dh_state = &handler[2];
++
++	vector_foreach_slot(mp->paths, pp, i)
++		all_tpgs = all_tpgs && (pp->tpgs > 0);
+ 	if (mp->retain_hwhandler != RETAIN_HWHANDLER_OFF) {
+ 		vector_foreach_slot(mp->paths, pp, i) {
+-			all_tpgs = all_tpgs && (pp->tpgs > 0);
+ 			if (get_dh_state(pp, dh_state, sizeof(handler) - 2) > 0
+ 			    && strcmp(dh_state, "detached")) {
+ 				memcpy(handler, "1 ", 2);
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0020-multipath-fix-setting-conf-version.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0020-multipath-fix-setting-conf-version.patch
new file mode 100644
index 0000000..624f45e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0020-multipath-fix-setting-conf-version.patch
@@ -0,0 +1,39 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Fri, 8 Jun 2018 17:23:07 -0500
+Subject: [PATCH] multipath: fix setting conf->version
+
+Commit d3b71498 stopped multipath from setting conf->version. Instead,
+it was always being set to 0.0.0. Multipathd was still setting this
+correctly.
+
+Fixes: d3b71498 "multipath: fix rcu thread cancellation hang"
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/devmapper.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
+index f2befad..8136d15 100644
+--- a/libmultipath/devmapper.c
++++ b/libmultipath/devmapper.c
+@@ -245,13 +245,13 @@ void libmp_dm_init(void)
+ 	int verbosity;
+ 	unsigned int version[3];
+ 
++	if (dm_prereq(version))
++		exit(1);
+ 	conf = get_multipath_config();
+ 	verbosity = conf->verbosity;
+-	memcpy(version, conf->version, sizeof(version));
++	memcpy(conf->version, version, sizeof(version));
+ 	put_multipath_config(conf);
+ 	dm_init(verbosity);
+-	if (dm_prereq(version))
+-		exit(1);
+ 	dm_udev_set_sync_support(libmp_dm_udev_sync);
+ }
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0021-RH-fixup-udev-rules-for-redhat.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0021-RH-fixup-udev-rules-for-redhat.patch
new file mode 100644
index 0000000..4ef3e70
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0021-RH-fixup-udev-rules-for-redhat.patch
@@ -0,0 +1,82 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Thu, 13 Apr 2017 07:22:23 -0500
+Subject: [PATCH] RH: fixup udev rules for redhat
+
+The multipath rules need to run after scsi_id is run. This means moving
+them after 60-persistent-storage.rules for redhat. Redhat also uses a
+different naming scheme for partitions than SuSE. Also, there are some
+false warnings that gcc throws because of the changed options. Fix these
+too.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ Makefile.inc        | 2 +-
+ kpartx/kpartx.rules | 2 +-
+ multipath/Makefile  | 4 ++--
+ multipath/main.c    | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile.inc b/Makefile.inc
+index af2f5ba..0b271ea 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -51,7 +51,7 @@ endif
+ prefix		=
+ exec_prefix	= $(prefix)
+ usr_prefix	= $(prefix)
+-bindir		= $(exec_prefix)/sbin
++bindir		= $(exec_prefix)/usr/sbin
+ libudevdir	= $(prefix)/$(SYSTEMDPATH)/udev
+ udevrulesdir	= $(libudevdir)/rules.d
+ multipathdir	= $(TOPDIR)/libmultipath
+diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules
+index 8f99049..8a3a171 100644
+--- a/kpartx/kpartx.rules
++++ b/kpartx/kpartx.rules
+@@ -32,6 +32,6 @@ LABEL="mpath_kpartx_end"
+ GOTO="kpartx_end"
+ 
+ LABEL="run_kpartx"
+-RUN+="/sbin/kpartx -un -p -part /dev/$name"
++RUN+="/sbin/kpartx -un /dev/$name"
+ 
+ LABEL="kpartx_end"
+diff --git a/multipath/Makefile b/multipath/Makefile
+index 0828a8f..b9bbb3c 100644
+--- a/multipath/Makefile
++++ b/multipath/Makefile
+@@ -24,7 +24,7 @@ install:
+ 	$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/
+ 	$(INSTALL_PROGRAM) -d $(DESTDIR)$(udevrulesdir)
+ 	$(INSTALL_PROGRAM) -m 644 11-dm-mpath.rules $(DESTDIR)$(udevrulesdir)
+-	$(INSTALL_PROGRAM) -m 644 $(EXEC).rules $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
++	$(INSTALL_PROGRAM) -m 644 $(EXEC).rules $(DESTDIR)$(libudevdir)/rules.d/62-multipath.rules
+ 	$(INSTALL_PROGRAM) -d $(DESTDIR)$(man8dir)
+ 	$(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(man8dir)
+ 	$(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir)
+@@ -33,7 +33,7 @@ install:
+ uninstall:
+ 	$(RM) $(DESTDIR)$(bindir)/$(EXEC)
+ 	$(RM) $(DESTDIR)$(udevrulesdir)/11-dm-mpath.rules
+-	$(RM) $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
++	$(RM) $(DESTDIR)$(libudevdir)/rules.d/62-multipath.rules
+ 	$(RM) $(DESTDIR)$(man8dir)/$(EXEC).8.gz
+ 	$(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
+ 
+diff --git a/multipath/main.c b/multipath/main.c
+index 3f0a6aa..6fdde03 100644
+--- a/multipath/main.c
++++ b/multipath/main.c
+@@ -389,7 +389,7 @@ static int find_multipaths_check_timeout(const struct path *pp, long tmo,
+ 	struct timespec now, ftimes[2], tdiff;
+ 	struct stat st;
+ 	long fd;
+-	int r, err, retries = 0;
++	int r, err = 0, retries = 0;
+ 
+ 	clock_gettime(CLOCK_REALTIME, &now);
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-RH-Remove-the-property-blacklist-exception-builtin.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0022-RH-Remove-the-property-blacklist-exception-builtin.patch
similarity index 60%
rename from meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-RH-Remove-the-property-blacklist-exception-builtin.patch
rename to meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0022-RH-Remove-the-property-blacklist-exception-builtin.patch
index 684e959..451c524 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-RH-Remove-the-property-blacklist-exception-builtin.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0022-RH-Remove-the-property-blacklist-exception-builtin.patch
@@ -1,7 +1,7 @@
-From 69a67c2ed09ae51b53de402966a9f7a4cc737715 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Benjamin Marzinski <bmarzins@redhat.com>
 Date: Wed, 2 Jul 2014 12:49:53 -0500
-Subject: [PATCH 03/14] RH: Remove the property blacklist exception builtin
+Subject: [PATCH] RH: Remove the property blacklist exception builtin
 
 Multipath set the default property blacklist exceptions to
 (ID_SCSI_VPD|ID_WWN).  This has the effect of blacklisting some internal
@@ -14,8 +14,8 @@
 Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
 ---
  libmultipath/blacklist.c   | 15 ++++++---------
- multipath/multipath.conf.5 |  4 ----
- 2 files changed, 6 insertions(+), 13 deletions(-)
+ multipath/multipath.conf.5 | 14 ++++++++------
+ 2 files changed, 14 insertions(+), 15 deletions(-)
 
 diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c
 index ee396e2..19d4697 100644
@@ -51,10 +51,10 @@
  
  void
 diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
-index f04ff19..fbbbb27 100644
+index 30d8598..c45da9f 100644
 --- a/multipath/multipath.conf.5
 +++ b/multipath/multipath.conf.5
-@@ -1014,10 +1014,6 @@ The \fIWorld Wide Identification\fR of a device.
+@@ -1179,10 +1179,6 @@ The \fIWorld Wide Identification\fR of a device.
  .TP
  .B property
  Regular expression of the udev property to be whitelisted.
@@ -65,6 +65,23 @@
  .TP
  .B device
  Subsection for the device description. This subsection recognizes the
+@@ -1193,8 +1189,14 @@ keywords. For a full description of these keywords please see the \fIdevices\fR
+ section description.
+ .LP
+ The \fIproperty\fR whitelist handling is different from the usual
+-handling in the sense that the device \fIhas\fR to have a udev property that
+-matches the whitelist, otherwise the device will be blacklisted. In these cases the message \fIblacklisted, udev property missing\fR will be displayed.
++handling in the sense that if the propery whitelist is set, the device
++\fIhas\fR to have a udev property that matches the whitelist, otherwise the
++device will be blacklisted. In these cases the message \fIblacklisted, udev
++property missing\fR will be displayed. For example settting the
++property blacklist_exception to \fB(SCSI_IDENT_|ID_WWN)\fR will blacklist
++all devices that have no udev property whose name regex matches either
++\fBSCSI_IDENT_\fR or \fBID_WWN\fR. This works to exclude most
++non-multipathable devices.
+ .
+ .
+ .\" ----------------------------------------------------------------------------
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-RH-don-t-start-without-a-config-file.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0023-RH-don-t-start-without-a-config-file.patch
similarity index 77%
rename from meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-RH-don-t-start-without-a-config-file.patch
rename to meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0023-RH-don-t-start-without-a-config-file.patch
index 87a6d3f..886f1c8 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-RH-don-t-start-without-a-config-file.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0023-RH-don-t-start-without-a-config-file.patch
@@ -1,7 +1,7 @@
-From b2b504fc1959c7a3f0a843c3c204e8e193b675b7 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Benjamin Marzinski <bmarzins@redhat.com>
 Date: Wed, 15 Oct 2014 10:39:30 -0500
-Subject: [PATCH 04/14] RH: don't start without a config file
+Subject: [PATCH] RH: don't start without a config file
 
 If /etc/multipath.conf doesn't exist, don't start multipathd and blacklist
 all devices when running multipath.  A completely blank configuration file
@@ -12,33 +12,31 @@
 
 Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
 ---
- libmultipath/config.c         | 17 +++++++++++++++++
+ libmultipath/config.c         | 15 +++++++++++++++
  libmultipath/config.h         |  1 +
  multipath/multipath.rules     |  1 +
  multipathd/multipathd.8       |  2 ++
  multipathd/multipathd.service |  1 +
- 5 files changed, 22 insertions(+)
+ 5 files changed, 20 insertions(+)
 
 diff --git a/libmultipath/config.c b/libmultipath/config.c
-index bb6619b..aae69b8 100644
+index 5872927..0607403 100644
 --- a/libmultipath/config.c
 +++ b/libmultipath/config.c
-@@ -25,6 +25,7 @@
- #include "prio.h"
+@@ -26,6 +26,7 @@
  #include "devmapper.h"
  #include "mpath_cmd.h"
+ #include "propsel.h"
 +#include "version.h"
  
  static int
  hwe_strmatch (struct hwentry *hwe1, struct hwentry *hwe2)
-@@ -667,6 +668,22 @@ load_config (char * file)
+@@ -658,6 +659,20 @@ load_config (char * file)
  			factorize_hwtable(conf->hwtable, builtin_hwtable_size);
  		}
  
 +	} else {
 +		condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
-+		condlog(0, "A default multipath.conf file is located at");
-+		condlog(0, "/usr/share/doc/device-mapper-multipath-%d.%d.%d/multipath.conf", MULTIPATH_VERSION(VERSION_CODE));
 +		if (conf->blist_devnode == NULL) {
 +			conf->blist_devnode = vector_alloc();
 +			if (!conf->blist_devnode) {
@@ -55,10 +53,10 @@
  
  	conf->processed_main_config = 1;
 diff --git a/libmultipath/config.h b/libmultipath/config.h
-index ffc69b5..614331c 100644
+index fcbe3fc..3a42435 100644
 --- a/libmultipath/config.h
 +++ b/libmultipath/config.h
-@@ -7,6 +7,7 @@
+@@ -9,6 +9,7 @@
  
  #define ORIGIN_DEFAULT 0
  #define ORIGIN_CONFIG  1
@@ -67,36 +65,36 @@
  /*
   * In kernel, fast_io_fail == 0 means immediate failure on rport delete.
 diff --git a/multipath/multipath.rules b/multipath/multipath.rules
-index 4d78b98..5753766 100644
+index d658073..b3f54d7 100644
 --- a/multipath/multipath.rules
 +++ b/multipath/multipath.rules
-@@ -6,6 +6,7 @@ IMPORT{cmdline}="nompath"
+@@ -9,6 +9,7 @@ IMPORT{cmdline}="nompath"
  ENV{nompath}=="?*", GOTO="end_mpath"
  IMPORT{cmdline}="multipath"
  ENV{multipath}=="off", GOTO="end_mpath"
 +TEST!="/etc/multipath.conf", GOTO="end_mpath"
  
- KERNEL=="dm-*", GOTO="check_kpartx"
  ENV{DEVTYPE}!="partition", GOTO="test_dev"
+ IMPORT{parent}="DM_MULTIPATH_DEVICE_PATH"
 diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8
-index 4c765af..c1499a5 100644
+index e78ac9e..09cdead 100644
 --- a/multipathd/multipathd.8
 +++ b/multipathd/multipathd.8
-@@ -39,6 +39,8 @@ map regains its maximum performance and redundancy.
+@@ -38,6 +38,8 @@ map regains its maximum performance and redundancy.
  This daemon executes the external \fBmultipath\fR tool when events occur.
  In turn, the multipath tool signals the multipathd daemon when it is done with
  devmap reconfiguration, so that it can refresh its failed path list.
 +
-+In this Linux distribution, multipathd does not run unless a /etc/multipath.conffile exists
++In this Linux distribution, multipathd does not run unless a /etc/multipath.conf file exists.
  .
  .
  .\" ----------------------------------------------------------------------------
 diff --git a/multipathd/multipathd.service b/multipathd/multipathd.service
-index fd66cf6..fafd088 100644
+index ba24983..17434ce 100644
 --- a/multipathd/multipathd.service
 +++ b/multipathd/multipathd.service
 @@ -4,6 +4,7 @@ Wants=systemd-udev-trigger.service systemd-udev-settle.service
- Before=iscsi.service iscsid.service lvm2-lvmetad.service lvm2-activation-early.service
+ Before=iscsi.service iscsid.service lvm2-activation-early.service
  Before=local-fs-pre.target blk-availability.service
  After=multipathd.socket systemd-udev-trigger.service systemd-udev-settle.service
 +ConditionPathExists=/etc/multipath.conf
@@ -104,5 +102,5 @@
  Conflicts=shutdown.target
  ConditionKernelCommandLine=!nompath
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0024-RH-use-rpm-optflags-if-present.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0024-RH-use-rpm-optflags-if-present.patch
new file mode 100644
index 0000000..9330bf0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0024-RH-use-rpm-optflags-if-present.patch
@@ -0,0 +1,52 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Wed, 19 Apr 2017 06:10:01 -0500
+Subject: [PATCH] RH: use rpm optflags if present
+
+Use the passed in optflags when compiling as an RPM, and keep the
+default flags as close as possible to the current fedora flags, while
+still being generic.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ Makefile.inc | 24 ++++++++++++++++--------
+ 1 file changed, 16 insertions(+), 8 deletions(-)
+
+diff --git a/Makefile.inc b/Makefile.inc
+index 0b271ea..5ff69a3 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -85,14 +85,22 @@ TEST_CC_OPTION = $(shell \
+ 		echo "$(2)"; \
+ 	fi)
+ 
+-STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)
+-
+-OPTFLAGS	= -O2 -g -pipe -Wall -Wextra -Wformat=2 -Werror=implicit-int \
+-		  -Werror=implicit-function-declaration -Werror=format-security \
+-		  -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered \
+-		  -Werror=cast-qual -Werror=discarded-qualifiers \
+-		  -Wp,-D_FORTIFY_SOURCE=2 $(STACKPROT) \
+-		  --param=ssp-buffer-size=4
++ifndef RPM_OPT_FLAGS
++	STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)
++	OPTFLAGS	= -O2 -g -pipe -Wall -Werror=format-security \
++			  -Wp,-D_FORTIFY_SOURCE=2 -fexceptions \
++			  $(STACKPROT) --param=ssp-buffer-size=4 \
++			  -grecord-gcc-switches
++	ifeq ($(shell test -f /usr/lib/rpm/redhat/redhat-hardened-cc1 && echo 1),1)
++		OPTFLAGS += -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
++	endif
++else
++	OPTFLAGS = $(RPM_OPT_FLAGS)
++endif
++OPTFLAGS	+= -Wextra -Wstrict-prototypes -Wformat=2 -Werror=implicit-int \
++		   -Werror=implicit-function-declaration -Wno-sign-compare \
++		   -Wno-unused-parameter -Werror=cast-qual \
++		   -Werror=discarded-qualifiers
+ 
+ CFLAGS		:= $(OPTFLAGS) -DBIN_DIR=\"$(bindir)\" -DLIB_STRING=\"${LIB}\" -DRUN_DIR=\"${RUN}\" \
+ 		   -MMD -MP $(CFLAGS)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0025-RH-add-mpathconf.patch
similarity index 97%
rename from meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch
rename to meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0025-RH-add-mpathconf.patch
index acef410..5cad22b 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0025-RH-add-mpathconf.patch
@@ -1,7 +1,7 @@
-From de44504fe7f7802cd474efd92ac15b5a8857db1f Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Benjamin Marzinski <bmarzins@redhat.com>
 Date: Thu, 16 Oct 2014 15:49:01 -0500
-Subject: [PATCH 05/14] RH: add mpathconf
+Subject: [PATCH] RH: add mpathconf
 
 mpathconf is a program (largely based on lvmcomf) to help users
 configure /etc/multipath.conf and enable or disable multipathing.  It
@@ -21,22 +21,22 @@
  create mode 100644 multipath/mpathconf.8
 
 diff --git a/libmultipath/config.c b/libmultipath/config.c
-index aae69b8..c485748 100644
+index 0607403..5c98e48 100644
 --- a/libmultipath/config.c
 +++ b/libmultipath/config.c
-@@ -672,6 +672,7 @@ load_config (char * file)
+@@ -661,6 +661,7 @@ load_config (char * file)
+ 
+ 	} else {
  		condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
- 		condlog(0, "A default multipath.conf file is located at");
- 		condlog(0, "/usr/share/doc/device-mapper-multipath-%d.%d.%d/multipath.conf", MULTIPATH_VERSION(VERSION_CODE));
 +		condlog(0, "You can run /sbin/mpathconf to create or modify /etc/multipath.conf");
  		if (conf->blist_devnode == NULL) {
  			conf->blist_devnode = vector_alloc();
  			if (!conf->blist_devnode) {
 diff --git a/multipath/Makefile b/multipath/Makefile
-index 1e9ee4b..3d4d459 100644
+index b9bbb3c..e720c7f 100644
 --- a/multipath/Makefile
 +++ b/multipath/Makefile
-@@ -18,10 +18,12 @@ $(EXEC): $(OBJS)
+@@ -18,10 +18,12 @@ $(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
  	$(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS) $(LIBDEPS)
  	$(GZIP) $(EXEC).8 > $(EXEC).8.gz
  	$(GZIP) $(EXEC).conf.5 > $(EXEC).conf.5.gz
@@ -64,7 +64,7 @@
  	$(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
 +	$(RM) $(DESTDIR)$(man8dir)/mpathconf.8.gz
  
- clean:
+ clean: dep_clean
  	$(RM) core *.o $(EXEC) *.gz
 diff --git a/multipath/mpathconf b/multipath/mpathconf
 new file mode 100644
@@ -644,5 +644,5 @@
 +.SH AUTHOR
 +Benjamin Marzinski <bmarzins@redhat.com>
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
similarity index 76%
rename from meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
rename to meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
index dc291b8..ddf022f 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
@@ -1,7 +1,7 @@
-From 15179c830521d8f37f9254ebc6bbf150a409f956 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Benjamin Marzinski <bmarzins@redhat.com>
 Date: Fri, 17 Oct 2014 11:20:34 -0500
-Subject: [PATCH 06/14] RH: add wwids from kernel cmdline mpath.wwids with -A
+Subject: [PATCH] RH: add wwids from kernel cmdline mpath.wwids with -A
 
 This patch adds another option to multipath, "-A", which reads
 /proc/cmdline for mpath.wwid=<WWID> options, and adds any wwids it finds
@@ -22,13 +22,13 @@
  5 files changed, 58 insertions(+), 3 deletions(-)
 
 diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c
-index bc70a27..88bb72b 100644
+index 53e7951..39e08cd 100644
 --- a/libmultipath/wwids.c
 +++ b/libmultipath/wwids.c
-@@ -321,3 +321,47 @@ remember_wwid(char *wwid)
- 		condlog(4, "wwid %s already in wwids file", wwid);
- 	return 0;
- }
+@@ -443,3 +443,47 @@ int op ## _wwid(const char *wwid) \
+ declare_failed_wwid_op(is_failed, false)
+ declare_failed_wwid_op(mark_failed, true)
+ declare_failed_wwid_op(unmark_failed, true)
 +
 +int remember_cmdline_wwid(void)
 +{
@@ -74,21 +74,22 @@
 +	return ret;
 +}
 diff --git a/libmultipath/wwids.h b/libmultipath/wwids.h
-index 9527012..b665232 100644
+index 0c6ee54..e32a0b0 100644
 --- a/libmultipath/wwids.h
 +++ b/libmultipath/wwids.h
-@@ -17,5 +17,6 @@ int remember_wwid(char *wwid);
+@@ -17,6 +17,7 @@ int remember_wwid(char *wwid);
  int check_wwids_file(char *wwid, int write_wwid);
  int remove_wwid(char *wwid);
  int replace_wwids(vector mp);
 +int remember_cmdline_wwid(void);
  
- #endif /* _WWIDS_H */
+ enum {
+ 	WWID_IS_NOT_FAILED = 0,
 diff --git a/multipath/main.c b/multipath/main.c
-index 4174d43..72585b0 100644
+index 6fdde03..7bac232 100644
 --- a/multipath/main.c
 +++ b/multipath/main.c
-@@ -102,7 +102,7 @@ usage (char * progname)
+@@ -109,7 +109,7 @@ usage (char * progname)
  {
  	fprintf (stderr, VERSION_STRING);
  	fprintf (stderr, "Usage:\n");
@@ -97,25 +98,25 @@
  	fprintf (stderr, "  %s -l|-ll|-f [-v lvl] [-b fil] [-R num] [dev]\n", progname);
  	fprintf (stderr, "  %s -F [-v lvl] [-R num]\n", progname);
  	fprintf (stderr, "  %s -t\n", progname);
-@@ -116,6 +116,8 @@ usage (char * progname)
+@@ -123,6 +123,8 @@ usage (char * progname)
  		"  -f      flush a multipath device map\n"
  		"  -F      flush all multipath device maps\n"
  		"  -a      add a device wwid to the wwids file\n"
 +		"  -A      add devices from kernel command line mpath.wwids\n"
 +		"          parameters to wwids file\n"
  		"  -c      check if a device should be a path in a multipath device\n"
+ 		"  -C      check if a multipath device has usable paths\n"
  		"  -q      allow queue_if_no_path when multipathd is not running\n"
- 		"  -d      dry run, do not create or update devmaps\n"
-@@ -522,7 +524,7 @@ main (int argc, char *argv[])
+@@ -907,7 +909,7 @@ main (int argc, char *argv[])
  		exit(1);
  	multipath_conf = conf;
  	conf->retrigger_tries = 0;
--	while ((arg = getopt(argc, argv, ":adchl::FfM:v:p:b:BrR:itquwW")) != EOF ) {
-+	while ((arg = getopt(argc, argv, ":aAdchl::FfM:v:p:b:BrR:itquwW")) != EOF ) {
+-	while ((arg = getopt(argc, argv, ":adcChl::FfM:v:p:b:BrR:itquUwW")) != EOF ) {
++	while ((arg = getopt(argc, argv, ":aAdcChl::FfM:v:p:b:BrR:itquUwW")) != EOF ) {
  		switch(arg) {
  		case 1: printf("optarg : %s\n",optarg);
  			break;
-@@ -586,6 +588,10 @@ main (int argc, char *argv[])
+@@ -974,6 +976,10 @@ main (int argc, char *argv[])
  		case 't':
  			r = dump_config(conf);
  			goto out_free_config;
@@ -127,19 +128,19 @@
  			usage(argv[0]);
  			exit(0);
 diff --git a/multipath/multipath.8 b/multipath/multipath.8
-index b9436e5..b9ad6b1 100644
+index 914a8cb..8c6a4c1 100644
 --- a/multipath/multipath.8
 +++ b/multipath/multipath.8
 @@ -25,7 +25,7 @@ multipath \- Device mapper target autoconfig.
  .RB [\| \-b\ \c
  .IR bindings_file \|]
  .RB [\| \-d \|]
--.RB [\| \-h | \-l | \-ll | \-f | \-t | \-F | \-B | \-c | \-q | \|-r | \|-i | \-a | \|-u | \-w | \-W \|]
-+.RB [\| \-h | \-l | \-ll | \-f | \-t | \-F | \-B | \-c | \-q | \|-r | \|-i | \-a | \-A | \-u | \-w | \-W \|]
+-.RB [\| \-h | \-l | \-ll | \-f | \-t | \-F | \-B | \-c | \-C | \-q | \-r | \-i | \-a | \-u | \-U | \-w | \-W \|]
++.RB [\| \-h | \-l | \-ll | \-f | \-t | \-F | \-B | \-c | \-C | \-q | \-r | \-i | \-a | \-A | \-u | \-U | \-w | \-W \|]
  .RB [\| \-p\ \c
  .IR failover | multibus | group_by_serial | group_by_prio | group_by_node_name \|]
  .RB [\| \-R\ \c
-@@ -122,6 +122,9 @@ Add the WWID for the specified device to the WWIDs file.
+@@ -135,6 +135,9 @@ Add the WWID for the specified device to the WWIDs file.
  Check if the device specified in the program environment should be
  a path in a multipath device.
  .
@@ -147,10 +148,10 @@
 +add wwids from any kernel command line mpath.wwid parameters to the wwids file
 +.
  .TP
- .B \-w
- Remove the WWID for the specified device from the WWIDs file.
+ .B \-U
+ Check if the device specified in the program environment is a multipath device
 diff --git a/multipathd/multipathd.service b/multipathd/multipathd.service
-index fafd088..a623a3f 100644
+index 17434ce..0fbcc46 100644
 --- a/multipathd/multipathd.service
 +++ b/multipathd/multipathd.service
 @@ -15,6 +15,7 @@ Type=notify
@@ -160,7 +161,7 @@
 +ExecStartPre=-/sbin/multipath -A
  ExecStart=/sbin/multipathd -d -s
  ExecReload=/sbin/multipathd reconfigure
- 
+ TasksMax=infinity
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0027-RH-warn-on-invalid-regex-instead-of-failing.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0027-RH-warn-on-invalid-regex-instead-of-failing.patch
new file mode 100644
index 0000000..a23e167
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0027-RH-warn-on-invalid-regex-instead-of-failing.patch
@@ -0,0 +1,121 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Mon, 6 Nov 2017 21:39:28 -0600
+Subject: [PATCH] RH: warn on invalid regex instead of failing
+
+multipath.conf used to allow "*" as a match everything regular expression,
+instead of requiring ".*". Instead of erroring when the old style
+regular expressions are used, it should print a warning and convert
+them.
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/dict.c   | 27 +++++++++++++++++++++------
+ libmultipath/parser.c | 13 +++++++++++++
+ libmultipath/parser.h |  1 +
+ 3 files changed, 35 insertions(+), 6 deletions(-)
+
+diff --git a/libmultipath/dict.c b/libmultipath/dict.c
+index 7ad0f5a..ab808d6 100644
+--- a/libmultipath/dict.c
++++ b/libmultipath/dict.c
+@@ -55,6 +55,21 @@ set_str(vector strvec, void *ptr)
+ }
+ 
+ static int
++set_regex(vector strvec, void *ptr)
++{
++	char **str_ptr = (char **)ptr;
++
++	if (*str_ptr)
++		FREE(*str_ptr);
++	*str_ptr = set_regex_value(strvec);
++
++	if (!*str_ptr)
++		return 1;
++
++	return 0;
++}
++
++static int
+ set_yes_no(vector strvec, void *ptr)
+ {
+ 	char * buff;
+@@ -1271,7 +1286,7 @@ ble_ ## option ## _handler (struct config *conf, vector strvec)		\
+ 	if (!conf->option)						\
+ 		return 1;						\
+ 									\
+-	buff = set_value(strvec);					\
++	buff = set_regex_value(strvec);					\
+ 	if (!buff)							\
+ 		return 1;						\
+ 									\
+@@ -1287,7 +1302,7 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
+ 	if (!conf->option)						\
+ 		return 1;						\
+ 									\
+-	buff = set_value(strvec);					\
++	buff = set_regex_value(strvec);					\
+ 	if (!buff)							\
+ 		return 1;						\
+ 									\
+@@ -1388,16 +1403,16 @@ device_handler(struct config *conf, vector strvec)
+ 	return 0;
+ }
+ 
+-declare_hw_handler(vendor, set_str)
++declare_hw_handler(vendor, set_regex)
+ declare_hw_snprint(vendor, print_str)
+ 
+-declare_hw_handler(product, set_str)
++declare_hw_handler(product, set_regex)
+ declare_hw_snprint(product, print_str)
+ 
+-declare_hw_handler(revision, set_str)
++declare_hw_handler(revision, set_regex)
+ declare_hw_snprint(revision, print_str)
+ 
+-declare_hw_handler(bl_product, set_str)
++declare_hw_handler(bl_product, set_regex)
+ declare_hw_snprint(bl_product, print_str)
+ 
+ declare_hw_handler(hwhandler, set_str)
+diff --git a/libmultipath/parser.c b/libmultipath/parser.c
+index b8b7e0d..34b4ad2 100644
+--- a/libmultipath/parser.c
++++ b/libmultipath/parser.c
+@@ -380,6 +380,19 @@ set_value(vector strvec)
+ 	return alloc;
+ }
+ 
++void *
++set_regex_value(vector strvec)
++{
++	char *buff = set_value(strvec);
++
++	if (buff && strcmp("*", buff) == 0) {
++		condlog(0, "Invalid regular expression \"*\" in multipath.conf. Using \".*\"");
++		FREE(buff);
++		return strdup(".*");
++	}
++	return buff;
++}
++
+ /* non-recursive configuration stream handler */
+ static int kw_level = 0;
+ 
+diff --git a/libmultipath/parser.h b/libmultipath/parser.h
+index 62906e9..b791705 100644
+--- a/libmultipath/parser.h
++++ b/libmultipath/parser.h
+@@ -77,6 +77,7 @@ extern void dump_keywords(vector keydump, int level);
+ extern void free_keywords(vector keywords);
+ extern vector alloc_strvec(char *string);
+ extern void *set_value(vector strvec);
++extern void *set_regex_value(vector strvec);
+ extern int process_file(struct config *conf, char *conf_file);
+ extern struct keyword * find_keyword(vector keywords, vector v, char * name);
+ int snprint_keyword(char *buff, int len, char *fmt, struct keyword *kw,
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0028-RH-reset-default-find_mutipaths-value-to-off.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0028-RH-reset-default-find_mutipaths-value-to-off.patch
new file mode 100644
index 0000000..05e6864
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0028-RH-reset-default-find_mutipaths-value-to-off.patch
@@ -0,0 +1,29 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Benjamin Marzinski <bmarzins@redhat.com>
+Date: Thu, 7 Jun 2018 17:43:52 -0500
+Subject: [PATCH] RH: reset default find_mutipaths value to off
+
+Upstream has changed to default find_multipaths to "strict". For now
+Redhat will retain the previous default of "off".
+
+Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+---
+ libmultipath/defaults.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
+index f076b4b..70ba98a 100644
+--- a/libmultipath/defaults.h
++++ b/libmultipath/defaults.h
+@@ -17,7 +17,7 @@
+ #define DEFAULT_NO_PATH_RETRY	NO_PATH_RETRY_UNDEF
+ #define DEFAULT_VERBOSITY	2
+ #define DEFAULT_REASSIGN_MAPS	0
+-#define DEFAULT_FIND_MULTIPATHS	FIND_MULTIPATHS_STRICT
++#define DEFAULT_FIND_MULTIPATHS	FIND_MULTIPATHS_OFF
+ #define DEFAULT_FAST_IO_FAIL	5
+ #define DEFAULT_DEV_LOSS_TMO	600
+ #define DEFAULT_RETAIN_HWHANDLER RETAIN_HWHANDLER_ON
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch
new file mode 100644
index 0000000..45cd32a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch
@@ -0,0 +1,49 @@
+From 8bdd4481d822b6625d8bf719431ca74ed1b5e021 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 16 Jul 2018 15:56:37 +0800
+Subject: [PATCH] multipath-tools: modify Makefile.inc for cross-compilation
+
+Do not look for systemd info on the host, and allow us to pass in CFLAGS
+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>
+
+Update for version 0.7.1
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+update for version 0.7.7
+
+remove change about CFLAGS part, since patch 0024 already have similar function.
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ Makefile.inc | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/Makefile.inc b/Makefile.inc
+index 57a1835..0c403c7 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -38,12 +38,6 @@ ifndef RUN
+ 	endif
+ endif
+ 
+-ifndef SYSTEMD
+-	ifeq ($(shell systemctl --version > /dev/null 2>&1 && echo 1), 1)
+-		SYSTEMD = $(shell systemctl --version 2> /dev/null |  sed -n 's/systemd \([0-9]*\)/\1/p')
+-	endif
+-endif
+-
+ ifndef SYSTEMDPATH
+ 	SYSTEMDPATH=usr/lib
+ endif
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-Always-use-devmapper.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0030-Always-use-devmapper.patch
similarity index 82%
rename from meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-Always-use-devmapper.patch
rename to meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0030-Always-use-devmapper.patch
index 52240f6..1281180 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-Always-use-devmapper.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0030-Always-use-devmapper.patch
@@ -1,7 +1,7 @@
-From 1498338970a093fccbda3e33f5588a289ef2c66a Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 5 Jul 2017 02:59:46 -0400
-Subject: [PATCH 13/14] Always use devmapper
+From d929a1ea5e42ecbe30c990644ed4ada2817c6439 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 16 Jul 2018 16:00:14 +0800
+Subject: [PATCH]  Always use devmapper
 
 Do not try to compute several _API_ make variables
 from host information when cross-compiling.
@@ -14,12 +14,16 @@
 Rebase to 0.7.1
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+Rebase to 0.7.7
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
 ---
  libmultipath/Makefile | 19 ++++---------------
  1 file changed, 4 insertions(+), 15 deletions(-)
 
 diff --git a/libmultipath/Makefile b/libmultipath/Makefile
-index b3244fc..9006b3f 100644
+index f51786d..3ad9c48 100644
 --- a/libmultipath/Makefile
 +++ b/libmultipath/Makefile
 @@ -20,21 +20,10 @@ ifdef SYSTEMD
@@ -49,5 +53,5 @@
  OBJS = memory.o parser.o vector.o devmapper.o callout.o \
  	hwtable.o blacklist.o util.o dmparser.o config.o \
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-Always-use-devmapper-for-kpartx.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0031-Always-use-devmapper-for-kpartx.patch
similarity index 73%
rename from meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-Always-use-devmapper-for-kpartx.patch
rename to meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0031-Always-use-devmapper-for-kpartx.patch
index f951213..88a758d 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-Always-use-devmapper-for-kpartx.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0031-Always-use-devmapper-for-kpartx.patch
@@ -1,7 +1,7 @@
-From 7f5869cd32a7b3f717d9544b35562d9d01ca6510 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 5 Jul 2017 03:03:16 -0400
-Subject: [PATCH 14/14] Always use devmapper for kpartx
+From 145f2b829e5362cda975bebafd7fe4d00ff56d1c Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 16 Jul 2018 16:02:07 +0800
+Subject: [PATCH] Always use devmapper for kpartx
 
 Do not try to compute the LIBDM_API_COOKIE make variable
 from host information when cross-compiling.
@@ -13,12 +13,15 @@
 
 Rebase to 0.7.1
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+Rebase to 0.7.7
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
 ---
  kpartx/Makefile | 4 +---
  1 file changed, 1 insertion(+), 3 deletions(-)
 
 diff --git a/kpartx/Makefile b/kpartx/Makefile
-index bfa6fe8..be87124 100644
+index 7eb467e..c143321 100644
 --- a/kpartx/Makefile
 +++ b/kpartx/Makefile
 @@ -8,9 +8,7 @@ LDFLAGS += $(BIN_LDFLAGS)
@@ -33,5 +36,5 @@
  OBJS = bsd.o dos.o kpartx.o solaris.o unixware.o dasd.o sun.o \
  	gpt.o mac.o ps3.o crc32.o lopart.o xstrncpy.o devmapper.o
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.1.bb b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.1.bb
deleted file mode 100644
index 6ec5dff..0000000
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.1.bb
+++ /dev/null
@@ -1,113 +0,0 @@
-SUMMARY = "The upstream project used to drive the Device Mapper multipathing driver"
-
-DESCRIPTION = "It provides tools to manage multipath devices \
-by instructing the device-mapper kernel module what to do. These \
-tools include: \
-1. multipath - Scan the system for multipath devices and assemble them.\
-2. multipathd - Detects when paths fail and execs multipath to update \
-things.\
-3. mpathpersist - Persistent reservation management feature allows \
-cluster management software to manage persistent reservation through \
-mpath device. It processes management requests from callers and hides \
-the management task details. It also handles persistent reservation \
-management of data path life cycle and state changes.\
-4. kpartx - This tool, derived from util-linux's partx, reads partition \
-tables on specified device and create device maps over partitions \
-segments detected. It is called from hotplug upon device maps creation \
-and deletion"
-
-HOMEPAGE = "http://christophe.varoqui.free.fr/"
-
-DEPENDS = "libdevmapper \
-           libaio \
-           liburcu \
-           readline \
-           udev \
-           json-c \
-          "
-
-LICENSE = "GPLv2"
-
-SRC_URI = "git://git.opensvc.com/multipath-tools/.git;protocol=http \
-           file://multipathd.oe \
-           file://multipath.conf.example \
-           file://0001-multipath-attempt-at-common-multipath.rules.patch \
-           file://0002-RH-fixup-udev-rules-for-redhat.patch \
-           file://0003-RH-Remove-the-property-blacklist-exception-builtin.patch \
-           file://0004-RH-don-t-start-without-a-config-file.patch \
-           file://0005-RH-add-mpathconf.patch \
-           file://0006-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch \
-           file://0007-RH-trigger-change-uevent-on-new-device-creation.patch \
-           file://0008-libmultipath-change-how-RADOS-checker-is-enabled.patch \
-           file://0009-multipath-set-verbosity-to-default-during-config.patch \
-           file://0010-mpath-skip-device-configs-without-vendor-product.patch \
-           file://0011-multipathd-fix-show-maps-json-crash.patch \
-           file://0012-multipath-tools-modify-Makefile.inc-for-cross-compil.patch \
-           file://0013-Always-use-devmapper.patch \
-           file://0014-Always-use-devmapper-for-kpartx.patch \
-           file://0001-kpartx-include-limits.h-for-PATH_MAX.patch \
-           "
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-SRCREV = "f21166a812a2cfb50ecf9550d32947c83103f83a"
-
-S = "${WORKDIR}/git"
-
-inherit systemd pkgconfig
-
-SYSTEMD_SERVICE_${PN} = "multipathd.service"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-# multipath-tools includes a copy of the valgrind.h header
-# file and uses the macros to suppress some false positives. However,
-# that only works on ARM when thumb is disabled. Otherwise one gets:
-#   Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r12,r12,ror#3'
-#   ../Makefile.inc:66: recipe for target 'debug.o' failed
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-# 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}" \
-                bindir=${base_sbindir} \
-                LIB=${base_libdir} libdir=${base_libdir}/multipath \
-                unitdir=${systemd_system_unitdir} \
-                ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "SYSTEMD=216", "", d)} \
-               '
-
-do_install() {
-    oe_runmake install
-
-    # We copy an initscript, but do not start multipathd at init time.
-    #
-    if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)};then
-        install -d ${D}${sysconfdir}/init.d
-        cp ${WORKDIR}/multipathd.oe ${D}${sysconfdir}/init.d/multipathd
-    fi
-
-    install -d ${D}${sysconfdir}
-    install -m 0644 ${WORKDIR}/multipath.conf.example \
-    ${D}${sysconfdir}/multipath.conf.example
-}
-
-FILES_${PN}-dbg += "${base_libdir}/multipath/.debug"
-
-PACKAGES =+ "${PN}-libs"
-FILES_${PN}-libs = "${base_libdir}/lib*.so.* \
-                    ${base_libdir}/multipath/lib*.so*"
-RDEPENDS_${PN} += "${PN}-libs bash"
-
-PROVIDES += "device-mapper-multipath"
-RPROVIDES_${PN} += "device-mapper-multipath"
-RPROVIDES_${PN}-libs += "device-mapper-multipath-libs"
-
-FILES_${PN}-dev += "${base_libdir}/pkgconfig"
-
-PACKAGES =+ "kpartx"
-FILES_kpartx = "${base_sbindir}/kpartx \
-                ${nonarch_libdir}/udev/kpartx_id \
-               "
-
-RDEPENDS_${PN} += "bash kpartx"
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.7.bb b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.7.bb
new file mode 100644
index 0000000..5cc1546
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.7.bb
@@ -0,0 +1,131 @@
+SUMMARY = "The upstream project used to drive the Device Mapper multipathing driver"
+
+DESCRIPTION = "It provides tools to manage multipath devices \
+by instructing the device-mapper kernel module what to do. These \
+tools include: \
+1. multipath - Scan the system for multipath devices and assemble them.\
+2. multipathd - Detects when paths fail and execs multipath to update \
+things.\
+3. mpathpersist - Persistent reservation management feature allows \
+cluster management software to manage persistent reservation through \
+mpath device. It processes management requests from callers and hides \
+the management task details. It also handles persistent reservation \
+management of data path life cycle and state changes.\
+4. kpartx - This tool, derived from util-linux's partx, reads partition \
+tables on specified device and create device maps over partitions \
+segments detected. It is called from hotplug upon device maps creation \
+and deletion"
+
+HOMEPAGE = "http://christophe.varoqui.free.fr/"
+
+DEPENDS = "libdevmapper \
+           libaio \
+           liburcu \
+           readline \
+           udev \
+           json-c \
+          "
+
+LICENSE = "GPLv2"
+
+SRC_URI = "git://git.opensvc.com/multipath-tools/.git;protocol=http \
+           file://multipathd.oe \
+           file://multipath.conf.example \
+           file://0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch \
+           file://0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch \
+           file://0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch \
+           file://0004-multipath-tools-replace-FSF-address-with-a-www-point.patch \
+           file://0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch \
+           file://0006-multipath-tools-fix-compilation-with-musl-libc.patch \
+           file://0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch \
+           file://0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch \
+           file://0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch \
+           file://0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch \
+           file://0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch \
+           file://0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch \
+           file://0013-libmultipath-print-correct-default-for-delay_-_check.patch \
+           file://0014-multipath.conf.5-clarify-property-whitelist-handling.patch \
+           file://0015-mpathpersist-add-all_tg_pt-option.patch \
+           file://0016-libmultipath-remove-rbd-code.patch \
+           file://0017-mpathpersist-fix-aptpl-support.patch \
+           file://0018-multipath-don-t-check-timestamps-without-a-path.patch \
+           file://0019-libmultipath-fix-detect-alua-corner-case.patch \
+           file://0020-multipath-fix-setting-conf-version.patch \
+           file://0021-RH-fixup-udev-rules-for-redhat.patch \
+           file://0022-RH-Remove-the-property-blacklist-exception-builtin.patch \
+           file://0023-RH-don-t-start-without-a-config-file.patch \
+           file://0024-RH-use-rpm-optflags-if-present.patch \
+           file://0025-RH-add-mpathconf.patch \
+           file://0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch \
+           file://0027-RH-warn-on-invalid-regex-instead-of-failing.patch \
+           file://0028-RH-reset-default-find_mutipaths-value-to-off.patch \
+           file://0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch \
+           file://0030-Always-use-devmapper.patch \
+           file://0031-Always-use-devmapper-for-kpartx.patch \
+           "
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+SRCREV = "386d288b5595fc2c01dffe698b6eb306c6674908"
+
+S = "${WORKDIR}/git"
+
+inherit systemd pkgconfig
+
+SYSTEMD_SERVICE_${PN} = "multipathd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+# multipath-tools includes a copy of the valgrind.h header
+# file and uses the macros to suppress some false positives. However,
+# that only works on ARM when thumb is disabled. Otherwise one gets:
+#   Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r12,r12,ror#3'
+#   ../Makefile.inc:66: recipe for target 'debug.o' failed
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+# 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}" \
+                bindir=${base_sbindir} \
+                LIB=${base_libdir} libdir=${base_libdir}/multipath \
+                unitdir=${systemd_system_unitdir} \
+                ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "SYSTEMD=216", "", d)} \
+               '
+
+do_install() {
+    oe_runmake install
+
+    # We copy an initscript, but do not start multipathd at init time.
+    #
+    if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)};then
+        install -d ${D}${sysconfdir}/init.d
+        cp ${WORKDIR}/multipathd.oe ${D}${sysconfdir}/init.d/multipathd
+    fi
+
+    install -d ${D}${sysconfdir}
+    install -m 0644 ${WORKDIR}/multipath.conf.example \
+    ${D}${sysconfdir}/multipath.conf.example
+}
+
+FILES_${PN}-dbg += "${base_libdir}/multipath/.debug"
+
+PACKAGES =+ "${PN}-libs"
+FILES_${PN}-libs = "${base_libdir}/lib*.so.* \
+                    ${base_libdir}/multipath/lib*.so*"
+RDEPENDS_${PN} += "${PN}-libs bash"
+
+PROVIDES += "device-mapper-multipath"
+RPROVIDES_${PN} += "device-mapper-multipath"
+RPROVIDES_${PN}-libs += "device-mapper-multipath-libs"
+
+FILES_${PN}-dev += "${base_libdir}/pkgconfig"
+
+PACKAGES =+ "kpartx"
+FILES_kpartx = "${base_sbindir}/kpartx \
+                ${nonarch_libdir}/udev/kpartx_id \
+               "
+
+RDEPENDS_${PN} += "bash kpartx"
diff --git a/meta-openembedded/meta-oe/recipes-support/nano/nano_2.9.3.bb b/meta-openembedded/meta-oe/recipes-support/nano/nano_2.9.3.bb
deleted file mode 100644
index afb0cf2..0000000
--- a/meta-openembedded/meta-oe/recipes-support/nano/nano_2.9.3.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-include nano.inc
-
-SRC_URI[md5sum] = "6dd37f010d6a985bf0e5f8ed091ff919"
-SRC_URI[sha256sum] = "7783bcfd4b2d5dc0bf64d4bd07b1a19e7ba3c91da881a4249772a36b972d4012"
diff --git a/meta-openembedded/meta-oe/recipes-support/nano/nano.inc b/meta-openembedded/meta-oe/recipes-support/nano/nano_3.0.bb
similarity index 66%
rename from meta-openembedded/meta-oe/recipes-support/nano/nano.inc
rename to meta-openembedded/meta-oe/recipes-support/nano/nano_3.0.bb
index 22f0fb2..2c7fbd5 100644
--- a/meta-openembedded/meta-oe/recipes-support/nano/nano.inc
+++ b/meta-openembedded/meta-oe/recipes-support/nano/nano_3.0.bb
@@ -6,12 +6,15 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
 SECTION = "console/utils"
 DEPENDS = "ncurses file"
-RDEPENDS_${PN} = "ncurses-terminfo"
+RDEPENDS_${PN} = "ncurses-terminfo-base"
 
-PV_MAJOR = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
+PV_MAJOR = "${@d.getVar('PV').split('.')[0]}"
 
 SRC_URI = "https://nano-editor.org/dist/v${PV_MAJOR}/nano-${PV}.tar.xz"
 
+SRC_URI[md5sum] = "74196427a09ec2f82a88facd220d2787"
+SRC_URI[sha256sum] = "e0a5bca354514e64762c987c200a8758b05e7bcced3b00b3e48ea0a2d383c8a0"
+
 inherit autotools gettext pkgconfig
 
 PACKAGECONFIG[tiny] = "--enable-tiny,"
diff --git a/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb b/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb
index 76e0741..3afdff7 100644
--- a/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb
@@ -38,7 +38,7 @@
     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}/
+    cp -d ${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]
diff --git a/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-fix-NULL-pointer-problem.patch b/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-fix-NULL-pointer-problem.patch
new file mode 100644
index 0000000..0497613
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-fix-NULL-pointer-problem.patch
@@ -0,0 +1,35 @@
+From 5c16beff9909b28f55f25f48ed7ddbf98d8b1d5c Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com>
+Date: Wed, 18 Jul 2018 09:43:55 +0800
+Subject: [PATCH] fix NULL pointer problem
+
+return 0 if distance_table is NULL
+
+Upstream-Status: Pending
+
+read_distance_table() maybe return 0, but distance_table is not set,
+if distance_table is used, and will lead to SEGFAULT
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ distance.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/distance.c b/distance.c
+index 8d472af..6a6e886 100644
+--- a/distance.c
++++ b/distance.c
+@@ -113,6 +113,8 @@ int numa_distance(int a, int b)
+ 		int err = read_distance_table();
+ 		if (err < 0)
+ 			return 0;
++		if(!distance_table)
++			return 0;
+ 	}
+ 	if ((unsigned)a >= distance_numnodes || (unsigned)b >= distance_numnodes)
+ 		return 0;
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch b/meta-openembedded/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch
deleted file mode 100644
index 53952ae..0000000
--- a/meta-openembedded/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-[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/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb b/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb
index b9cbcf0..279ac04 100644
--- a/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb
@@ -5,17 +5,16 @@
 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"
+LIC_FILES_CHKSUM = "file://README.md;beginline=19;endline=32;md5=f8ff2391624f28e481299f3f677b21bb"
 
-SRCREV = "ea3a70681c2f523fe58e1d44527f478ca76db74e"
-PV = "2.0.11+git${SRCPV}"
+SRCREV = "841253d1313b01a968c380cae4f498f20c46e5aa"
+PV = "2.0.12+git${SRCPV}"
 
 SRC_URI = "git://github.com/numactl/numactl \
-    file://fix-null-pointer.patch \
+    file://0001-fix-NULL-pointer-problem.patch \
     file://Fix-the-test-output-format.patch \
     file://Makefile \
     file://run-ptest \
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Remove-assumptions-about-glibc-being-only-libc-imple.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Remove-assumptions-about-glibc-being-only-libc-imple.patch
deleted file mode 100644
index 9773b4a..0000000
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Remove-assumptions-about-glibc-being-only-libc-imple.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From a0983d84185f04c4e40778fe951fde4439894882 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 16 Jul 2017 07:37:03 -0700
-Subject: [PATCH 01/11] Remove assumptions about glibc being only libc
- implementation on linux
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- open-vm-tools/lib/file/fileIOPosix.c      | 2 +-
- open-vm-tools/lib/include/vm_basic_defs.h | 2 ++
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-Index: open-vm-tools/lib/file/fileIOPosix.c
-===================================================================
---- open-vm-tools.orig/lib/file/fileIOPosix.c
-+++ open-vm-tools/lib/file/fileIOPosix.c
-@@ -205,7 +205,7 @@ static AlignedPool alignedPool;
-  * are not available in any header file.
-  */
- 
--#if defined(__linux__) && !defined(__ANDROID__)
-+#if defined(__linux__) && defined(__GLIBC__)
-    #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
-       /*
-        * We want preadv/pwritev. But due to FOB=64, the symbols are -64.
-Index: open-vm-tools/lib/include/vm_basic_defs.h
-===================================================================
---- open-vm-tools.orig/lib/include/vm_basic_defs.h
-+++ open-vm-tools/lib/include/vm_basic_defs.h
-@@ -571,6 +571,7 @@ typedef int pid_t;
- #if defined __linux__ && !defined __KERNEL__ && !defined MODULE && \
-                          !defined VMM && !defined FROBOS && !defined __ANDROID__
- #include <features.h>
-+#if __GLIBC__
- #if __GLIBC_PREREQ(2, 1) && !defined GLIBC_VERSION_21
- #define GLIBC_VERSION_21
- #endif
-@@ -590,6 +591,7 @@ typedef int pid_t;
- #define GLIBC_VERSION_212
- #endif
- #endif
-+#endif
- 
- /*
-  * Convenience definitions of unicode characters.
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Use-off64_t-instead-of-__off64_t.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Use-off64_t-instead-of-__off64_t.patch
new file mode 100644
index 0000000..432496f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Use-off64_t-instead-of-__off64_t.patch
@@ -0,0 +1,31 @@
+From 43d859f9d5eecdc0fdc1a6bf539bcde4a152e6f5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 27 Aug 2018 23:22:21 -0700
+Subject: [PATCH] Use off64_t instead of __off64_t
+
+Fixes
+unknown type name '__off64_t'
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/file/fileIOPosix.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/file/fileIOPosix.c b/lib/file/fileIOPosix.c
+index 23108279..bcd2ddc5 100644
+--- a/lib/file/fileIOPosix.c
++++ b/lib/file/fileIOPosix.c
+@@ -206,10 +206,10 @@ static AlignedPool alignedPool;
+        * the symbols (and anyone building XOPEN<700 gets nothing).
+        */
+       extern ssize_t preadv64(int fd, const struct iovec *iov, int iovcnt,
+-                          __off64_t offset) __attribute__ ((weak));
++                          off64_t offset) __attribute__ ((weak));
+ 
+       extern ssize_t pwritev64(int fd, const struct iovec *iov, int iovcnt,
+-                          __off64_t offset) __attribute__ ((weak));
++                          off64_t offset) __attribute__ ((weak));
+    #else
+       #error "Large file support unavailable. Aborting."
+    #endif
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch
index e9cb873..b7a4058 100644
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch
@@ -14,11 +14,11 @@
  configure.ac | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/configure.ac b/configure.ac
-index 3400b86..7d6119e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -942,7 +942,7 @@ if test "$with_dnet" = "yes"; then
+Index: open-vm-tools/configure.ac
+===================================================================
+--- open-vm-tools.orig/configure.ac
++++ open-vm-tools/configure.ac
+@@ -944,7 +944,7 @@ if test "$with_dnet" = "yes"; then
        AC_VMW_CHECK_LIB([dnet],
                         [DNET],
                         [],
@@ -27,15 +27,12 @@
                         [],
                         [dnet.h],
                         [intf_open],
-@@ -952,7 +952,7 @@ if test "$with_dnet" = "yes"; then
+@@ -954,7 +954,7 @@ if test "$with_dnet" = "yes"; then
  
     if test $have_dnet = "no"; then
  		AC_MSG_ERROR(
 -		   [dnet-config was not found on your PATH. Please configure without dnet (using --without-dnet) or install dnet - http://libdnet.sourceforge.net])
 +		   [dnet was not found. Please configure without dnet (using --without-dnet) or install dnet - http://libdnet.sourceforge.net])
- 	fi
+    fi
  fi
  
--- 
-2.1.4
-
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-include-poll.h-instead-of-sys-poll.h.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-include-poll.h-instead-of-sys-poll.h.patch
new file mode 100644
index 0000000..8820581
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-include-poll.h-instead-of-sys-poll.h.patch
@@ -0,0 +1,26 @@
+From 4981bb3013d7f1e40e44618076d99af3484eedea Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Jun 2018 23:02:50 -0700
+Subject: [PATCH] include poll.h instead of sys/poll.h
+
+including sys/poll.h is deprecated
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/asyncsocket/asyncsocket.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/asyncsocket/asyncsocket.c b/lib/asyncsocket/asyncsocket.c
+index 13908679..e0a68e7e 100644
+--- a/lib/asyncsocket/asyncsocket.c
++++ b/lib/asyncsocket/asyncsocket.c
+@@ -69,8 +69,8 @@
+ #else
+ #include <stddef.h>
+ #include <ctype.h>
++#include <poll.h>
+ #include <sys/types.h>
+-#include <sys/poll.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+ #include <netdb.h>
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-Rename-poll.h-to-vm_poll.h.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-Rename-poll.h-to-vm_poll.h.patch
new file mode 100644
index 0000000..4d6a0fd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-Rename-poll.h-to-vm_poll.h.patch
@@ -0,0 +1,115 @@
+From 92955b3a6180b4285d11ef79766df01b9ab60dbd Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Jun 2018 23:11:58 -0700
+Subject: [PATCH] Rename poll.h to vm_poll.h
+
+musl libc's system headers pulls in open-vm-tools' poll.h. To avoid this
+we rename poll.h to vm_poll.h.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/asyncsocket/asyncsocket.c                     | 2 +-
+ open-vm-tools/lib/hgfsServer/hgfsServer.c                       | 2 +-
+ open-vm-tools/lib/include/asyncsocket.h                         | 2 +-
+ open-vm-tools/lib/include/pollImpl.h                            | 2 +-
+ open-vm-tools/lib/include/{poll.h => vm_poll.h}                 | 2 +-
+ open-vm-tools/lib/rpcIn/rpcin.c                                 | 2 +-
+ .../services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c      | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+ rename open-vm-tools/lib/include/{poll.h => vm_poll.h} (99%)
+
+diff --git a/lib/asyncsocket/asyncsocket.c b/lib/asyncsocket/asyncsocket.c
+index e0a68e7e..b9675674 100644
+--- a/lib/asyncsocket/asyncsocket.c
++++ b/lib/asyncsocket/asyncsocket.c
+@@ -86,7 +86,7 @@
+ #include "random.h"
+ #include "asyncsocket.h"
+ #include "asyncSocketBase.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "log.h"
+ #include "err.h"
+ #include "hostinfo.h"
+diff --git a/lib/hgfsServer/hgfsServer.c b/lib/hgfsServer/hgfsServer.c
+index 991a7941..ed0c09f9 100644
+--- a/lib/hgfsServer/hgfsServer.c
++++ b/lib/hgfsServer/hgfsServer.c
+@@ -48,7 +48,7 @@
+ #include "hgfsServerOplock.h"
+ #include "hgfsDirNotify.h"
+ #include "userlock.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "mutexRankLib.h"
+ #include "vm_basic_asm.h"
+ #include "unicodeOperations.h"
+diff --git a/lib/include/asyncsocket.h b/lib/include/asyncsocket.h
+index 524147ea..103f944f 100644
+--- a/lib/include/asyncsocket.h
++++ b/lib/include/asyncsocket.h
+@@ -164,7 +164,7 @@ typedef struct AsyncSocket AsyncSocket;
+  * Or the client can specify its favorite poll class and locking behavior.
+  * Use of IVmdbPoll is only supported for regular sockets and for Attach.
+  */
+-#include "poll.h"
++#include "vm_poll.h"
+ struct IVmdbPoll;
+ typedef struct AsyncSocketPollParams {
+    int flags;               /* Default 0, only POLL_FLAG_NO_BULL is valid */
+diff --git a/lib/include/pollImpl.h b/lib/include/pollImpl.h
+index 46442e55..8bc66997 100644
+--- a/lib/include/pollImpl.h
++++ b/lib/include/pollImpl.h
+@@ -44,7 +44,7 @@
+ #define INCLUDE_ALLOW_USERLEVEL
+ #include "includeCheck.h"
+ 
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "vm_basic_asm.h"
+ 
+ #if defined(__cplusplus)
+diff --git a/lib/include/poll.h b/lib/include/vm_poll.h
+similarity index 99%
+rename from open-vm-tools/lib/include/poll.h
+rename to open-vm-tools/lib/include/vm_poll.h
+index 988fe6d0..e9e74fb5 100644
+--- a/lib/include/poll.h
++++ b/lib/include/vm_poll.h
+@@ -60,7 +60,7 @@ extern "C" {
+ #if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
+ #include <sys/kernel.h>
+ #endif
+-#include <sys/poll.h>
++#include <poll.h>
+ #define HZ 100
+ #endif
+ #ifdef __ANDROID__
+diff --git a/lib/rpcIn/rpcin.c b/lib/rpcIn/rpcin.c
+index c2c51583..d6c62f10 100644
+--- a/lib/rpcIn/rpcin.c
++++ b/lib/rpcIn/rpcin.c
+@@ -57,7 +57,7 @@
+ 
+ #if defined(VMTOOLS_USE_VSOCKET)
+ #  include <glib.h>
+-#  include "poll.h"
++#  include "vm_poll.h"
+ #  include "asyncsocket.h"
+ #  include "vmci_defs.h"
+ #include "dataMap.h"
+diff --git a/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c b/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
+index 03700937..f0b49ad7 100644
+--- a/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
++++ b/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
+@@ -48,7 +48,7 @@
+ #include "rpcout.h"
+ #include "rabbitmqProxyConst.h"
+ #include "vm_basic_types.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #ifdef OPEN_VM_TOOLS
+ #include "vmci_sockets.h"
+ #include "sslDirect.h"
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-include-poll.h-instead-of-obsolete-sys-poll.h.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-include-poll.h-instead-of-obsolete-sys-poll.h.patch
deleted file mode 100644
index d26bf2d..0000000
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-include-poll.h-instead-of-obsolete-sys-poll.h.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From d44c7c9de7380ad7b284231bd5b5c99b5c19758d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 16 Jul 2017 07:37:59 -0700
-Subject: [PATCH 02/11] include poll.h instead of obsolete sys/poll.h
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- open-vm-tools/lib/asyncsocket/asyncSocketInt.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: open-vm-tools/lib/asyncsocket/asyncSocketInt.h
-===================================================================
---- open-vm-tools.orig/lib/asyncsocket/asyncSocketInt.h
-+++ open-vm-tools/lib/asyncsocket/asyncSocketInt.h
-@@ -71,8 +71,8 @@
- #else
- #include <stddef.h>
- #include <ctype.h>
-+#include <poll.h>
- #include <sys/types.h>
--#include <sys/poll.h>
- #include <sys/socket.h>
- #include <sys/un.h>
- #include <netdb.h>
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-Rename-poll.h-to-vm_poll.h.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-Rename-poll.h-to-vm_poll.h.patch
deleted file mode 100644
index 8641778..0000000
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-Rename-poll.h-to-vm_poll.h.patch
+++ /dev/null
@@ -1,756 +0,0 @@
-From 687fca20b3417ac885b6961e6fe1126d4a3fe7a4 Mon Sep 17 00:00:00 2001
-From: Natanael Copa <ncopa@alpinelinux.org>
-Date: Tue, 17 Nov 2015 10:57:31 +0000
-Subject: [PATCH 03/11] Rename poll.h to vm_poll.h
-
-musl libc's system headers pulls in open-vm-tools' poll.h. To avoid this
-we rename poll.h to vm_poll.h.
-
-Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
----
- open-vm-tools/lib/asyncsocket/asyncsocket.c                          | 2 +-
- open-vm-tools/lib/hgfsServer/hgfsServer.c                            | 2 +-
- open-vm-tools/lib/include/asyncsocket.h                              | 2 +-
- open-vm-tools/lib/include/pollImpl.h                                 | 2 +-
- open-vm-tools/lib/include/{poll.h => vm_poll.h}                      | 0
- open-vm-tools/lib/rpcIn/rpcin.c                                      | 2 +-
- open-vm-tools/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c | 2 +-
- 7 files changed, 6 insertions(+), 6 deletions(-)
- rename open-vm-tools/lib/include/{poll.h => vm_poll.h} (100%)
-
-Index: open-vm-tools/lib/asyncsocket/asyncsocket.c
-===================================================================
---- open-vm-tools.orig/lib/asyncsocket/asyncsocket.c
-+++ open-vm-tools/lib/asyncsocket/asyncsocket.c
-@@ -52,7 +52,7 @@
- #include "vmware.h"
- #include "asyncsocket.h"
- #include "asyncSocketInt.h"
--#include "poll.h"
-+#include "vm_poll.h"
- #include "log.h"
- #include "err.h"
- #include "hostinfo.h"
-Index: open-vm-tools/lib/hgfsServer/hgfsServer.c
-===================================================================
---- open-vm-tools.orig/lib/hgfsServer/hgfsServer.c
-+++ open-vm-tools/lib/hgfsServer/hgfsServer.c
-@@ -48,7 +48,7 @@
- #include "hgfsServerOplock.h"
- #include "hgfsDirNotify.h"
- #include "userlock.h"
--#include "poll.h"
-+#include "vm_poll.h"
- #include "mutexRankLib.h"
- #include "vm_basic_asm.h"
- #include "unicodeOperations.h"
-Index: open-vm-tools/lib/include/asyncsocket.h
-===================================================================
---- open-vm-tools.orig/lib/include/asyncsocket.h
-+++ open-vm-tools/lib/include/asyncsocket.h
-@@ -129,7 +129,7 @@ typedef struct AsyncSocket AsyncSocket;
-  * Or the client can specify its favorite poll class and locking behavior.
-  * Use of IVmdbPoll is only supported for regular sockets and for Attach.
-  */
--#include "poll.h"
-+#include "vm_poll.h"
- struct IVmdbPoll;
- typedef struct AsyncSocketPollParams {
-    int flags;               /* Default 0, only POLL_FLAG_NO_BULL is valid */
-Index: open-vm-tools/lib/include/poll.h
-===================================================================
---- open-vm-tools.orig/lib/include/poll.h
-+++ /dev/null
-@@ -1,324 +0,0 @@
--/*********************************************************
-- * Copyright (C) 1998-2016 VMware, Inc. All rights reserved.
-- *
-- * This program is free software; you can redistribute it and/or modify it
-- * under the terms of the GNU Lesser General Public License as published
-- * by the Free Software Foundation version 2.1 and no later version.
-- *
-- * This program is distributed in the hope that it will be useful, but
-- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-- * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
-- * License for more details.
-- *
-- * You should have received a copy of the GNU Lesser General Public License
-- * along with this program; if not, write to the Free Software Foundation, Inc.,
-- * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
-- *
-- *********************************************************/
--
--/*********************************************************
-- * The contents of this file are subject to the terms of the Common
-- * Development and Distribution License (the "License") version 1.0
-- * and no later version.  You may not use this file except in
-- * compliance with the License.
-- *
-- * You can obtain a copy of the License at
-- *         http://www.opensource.org/licenses/cddl1.php
-- *
-- * See the License for the specific language governing permissions
-- * and limitations under the License.
-- *
-- *********************************************************/
--
--
--#ifndef _POLL_H_
--#define _POLL_H_
--
--#define INCLUDE_ALLOW_USERLEVEL
--#define INCLUDE_ALLOW_VMCORE
--#include "includeCheck.h"
--
--#include "vm_basic_types.h"
--#include "vm_basic_defs.h"
--#include "vmware.h"
--#include "userlock.h"
--
--#ifdef _WIN32
--#define HZ 100
--#elif defined linux
--#include <asm/param.h>
--#elif __APPLE__
--#include <TargetConditionals.h>
--/*
-- * Old SDKs don't define TARGET_OS_IPHONE at all.
-- * New ones define it to 0 on Mac OS X, 1 on iOS.
-- */
--#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
--#include <sys/kernel.h>
--#endif
--#include <sys/poll.h>
--#define HZ 100
--#endif
--#ifdef __ANDROID__
--/*
-- * <poll.h> of android should be included, but its name is same
-- * with this file. So its content is put here to avoid conflict.
-- */
--#include <asm/poll.h>
--#define HZ 100
--typedef unsigned int  nfds_t;
--int poll(struct pollfd *, nfds_t, long);
--#endif
--
--
--/*
-- * Poll event types: each type has a different reason for firing,
-- * or condition that must be met before firing.
-- */
--
--typedef enum {
--   /*
--    * Actual Poll queue types against which you can register callbacks.
--    */
--   POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */
--   POLL_VTIME = 0,
--   POLL_REALTIME,
--   POLL_DEVICE,
--   POLL_MAIN_LOOP,
--   POLL_NUM_QUEUES
--} PollEventType;
--
--
--/*
-- * Classes of events
-- *
-- * These are the predefined classes.  More can be declared
-- * with Poll_AllocClass().
-- */
--
--typedef enum PollClass {
--   POLL_CLASS_MAIN,
--   POLL_CLASS_PAUSE,
--   POLL_CLASS_IPC,
--   POLL_CLASS_CPT,
--   POLL_CLASS_MKS,
--   POLL_FIXED_CLASSES,
--   POLL_MAX_CLASSES = 320 /* Size enum to maximum */
--} PollClass;
--
--
--/*
-- * Each callback is registered in a set of classes
-- */
--
--typedef struct PollClassSet {
--   /* Type is uintptr_t to give best 32/64-bit code. */
--#define _POLL_ELEMSIZE (sizeof (uintptr_t) * 8)
--   uintptr_t bits[CEILING(POLL_MAX_CLASSES, _POLL_ELEMSIZE)];
--} PollClassSet;
--
--/* An empty PollClassSet. */
--static INLINE PollClassSet
--PollClassSet_Empty(void)
--{
--   PollClassSet set = { { 0 } };
--   return set;
--}
--
--/* A PollClassSet with the single member. */
--static INLINE PollClassSet
--PollClassSet_Singleton(PollClass c)
--{
--   PollClassSet s = PollClassSet_Empty();
--
--   ASSERT_ON_COMPILE(sizeof s.bits[0] * 8 == _POLL_ELEMSIZE); /* Size correct */
--   ASSERT_ON_COMPILE((_POLL_ELEMSIZE & (_POLL_ELEMSIZE - 1)) == 0); /* power of 2 */
--   ASSERT_ON_COMPILE(POLL_MAX_CLASSES <= ARRAYSIZE(s.bits) * _POLL_ELEMSIZE);
--   ASSERT(c < POLL_MAX_CLASSES);
--
--   s.bits[c / _POLL_ELEMSIZE] = CONST3264U(1) << (c % _POLL_ELEMSIZE);
--   return s;
--}
--
--/* Combine two PollClassSets. */
--static INLINE PollClassSet
--PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)
--{
--   PollClassSet u;
--   unsigned i;
--
--   for (i = 0; i < ARRAYSIZE(u.bits); i++) {
--      u.bits[i] = lhs.bits[i] | rhs.bits[i];
--   }
--   return u;
--}
--
--/* Add single class to PollClassSet. */
--static INLINE PollClassSet
--PollClassSet_Include(PollClassSet set, PollClass c)
--{
--   return PollClassSet_Union(set, PollClassSet_Singleton(c));
--}
--
--
--#define POLL_CS_MAIN    PollClassSet_Singleton(POLL_CLASS_MAIN)
--#define POLL_CS_PAUSE   PollClassSet_Union(POLL_CS_MAIN,            \
--                           PollClassSet_Singleton(POLL_CLASS_PAUSE))
--#define POLL_CS_CPT     PollClassSet_Union(POLL_CS_PAUSE,           \
--                           PollClassSet_Singleton(POLL_CLASS_CPT))
--#define POLL_CS_IPC     PollClassSet_Union(POLL_CS_CPT,             \
--                           PollClassSet_Singleton(POLL_CLASS_IPC))
--#define POLL_CS_VMDB    POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */
--#define POLL_CS_MKS	PollClassSet_Singleton(POLL_CLASS_MKS)
--/* 
-- * DANGER.  You don't need POLL_CS_ALWAYS.  Really.  So don't use it.
-- */
--#define POLL_CS_ALWAYS  PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)
--
--/*
-- * Poll class-set taxonomy:
-- * POLL_CS_MAIN
-- *    - Unless you NEED another class, use POLL_CS_MAIN.
-- * POLL_CS_PAUSE
-- *    - For callbacks that must occur even if the guest is paused.
-- *      Most VMDB or Foundry commands are in this category.
-- * POLL_CS_CPT
-- *    - Only for callbacks which can trigger intermediate Checkpoint 
-- *      transitions.
-- *      The ONLY such callback is Migrate.
-- * POLL_CS_IPC
-- *    - Only for callbacks which can contain Msg_(Post|Hint|Question) 
-- *      responses, and for signal handlers (why)?
-- *      Vigor, VMDB, and Foundry can contain Msg_* responses.
-- * POLL_CS_MKS
-- *    - Callback runs in MKS thread.
-- * POLL_CS_ALWAYS
-- *    - Only for events that must be processed immediately.
-- *      The ONLY such callback is OvhdMemVmxSizeCheck.
-- */
--
--
--/*
-- * Poll_Callback flags
-- */
--
--#define POLL_FLAG_PERIODIC		0x01    // keep after firing
--#define POLL_FLAG_REMOVE_AT_POWEROFF	0x02  	// self-explanatory
--#define POLL_FLAG_READ			0x04	// device is ready for reading
--#define POLL_FLAG_WRITE			0x08	// device is ready for writing
--#define POLL_FLAG_SOCKET                0x10    // device is a Windows socket
--#define POLL_FLAG_NO_BULL               0x20    // callback does its own locking
--#define POLL_FLAG_WINSOCK               0x40    // Winsock style write events
--#define POLL_FLAG_FD                    0x80    // device is a Windows file descriptor.
--#define POLL_FLAG_ACCEPT_INVALID_FDS    0x100   // For broken 3rd party libs, e.g. curl
--#define POLL_FLAG_THUNK_TO_WND          0x200   // thunk callback to window message loop
--
--
--/*
-- * Advisory minimum time period.
-- * Users that want the fastest running real-time poll
-- * should use TICKS_TO_USECS(1).
-- */
--
--#define TICKS_TO_USECS(_x) ((_x) * (1000000 / HZ))
--#define USECS_TO_TICKS(_x) ((_x) / (1000000 / HZ))
--
--
--typedef void (*PollerFunction)(void *clientData);
--typedef void (*PollerFireWrapper)(PollerFunction func,
--                                  void *funcData,
--                                  void *wrapperData);
--typedef Bool (*PollerErrorFn)(const char *errorStr);
--
--/*
-- * Initialisers:
-- *
-- *      For the sake of convenience, we declare the initialisers
-- *      for custom implmentations here, even though the actual
-- *      implementations are distinct from the core poll code.
-- */
--
--typedef struct PollOptions {
--   Bool locked;           // Use internal MXUser for locking
--   Bool allowFullQueue;   // Don't assert when device event queue is full.
--   VThreadID windowsMsgThread;       // thread that processes Windows messages
--   PollerFireWrapper fireWrapperFn;  // optional; may be useful for stats
--   void *fireWrapperData; // optional
--   PollerErrorFn errorFn; // optional; called upon unrecoverable error
--} PollOptions;
--
--
--void Poll_InitDefault(void);
--void Poll_InitDefaultEx(const PollOptions *opts);
--void Poll_InitGtk(void); // On top of glib for Linux
--void Poll_InitCF(void);  // On top of CoreFoundation for OSX
--
--
--/*
-- * Functions
-- */
--int Poll_SocketPair(Bool vmci, Bool stream, int fds[2]);
--void Poll_Loop(Bool loop, Bool *exit, PollClass c);
--void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);
--Bool Poll_LockingEnabled(void);
--void Poll_Exit(void);
--
--
--/*
-- * Poll_Callback adds a callback regardless of whether an identical one exists.
-- *
-- * Likewise, Poll_CallbackRemove removes exactly one callback.
-- */
--
--VMwareStatus Poll_Callback(PollClassSet classSet,
--                           int flags,
--                           PollerFunction f,
--                           void *clientData,
--                           PollEventType type,
--                           PollDevHandle info, // fd/microsec delay
--                           MXUserRecLock *lck);
--Bool Poll_CallbackRemove(PollClassSet classSet,
--                         int flags,
--                         PollerFunction f,
--                         void *clientData,
--                         PollEventType type);
--Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,
--                                int flags,
--                                PollerFunction f,
--                                PollEventType type,
--                                void **clientData);
--
--void Poll_NotifyChange(PollClassSet classSet);
--
--/*
-- * Wrappers for Poll_Callback and Poll_CallbackRemove that present
-- * simpler subsets of those interfaces.
-- */
--
--VMwareStatus Poll_CB_Device(PollerFunction f,
--                            void *clientData,
--                            PollDevHandle device,
--                            Bool periodic);
--
--Bool Poll_CB_DeviceRemove(PollerFunction f,
--                          void *clientData,
--                          Bool periodic);
--
--
--VMwareStatus Poll_CB_RTime(PollerFunction f,
--                           void *clientData,
--                           int delay,	// microseconds
--                           Bool periodic,
--                           MXUserRecLock *lock);
--
--Bool Poll_CB_RTimeRemove(PollerFunction f,
--                         void *clientData,
--                         Bool periodic);
--
--
--#ifdef _WIN32
--void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);
--Bool Poll_FireWndCallback(void *lparam);
--#endif
--
--#endif // _POLL_H_
-Index: open-vm-tools/lib/include/pollImpl.h
-===================================================================
---- open-vm-tools.orig/lib/include/pollImpl.h
-+++ open-vm-tools/lib/include/pollImpl.h
-@@ -44,7 +44,7 @@
- #define INCLUDE_ALLOW_USERLEVEL
- #include "includeCheck.h"
- 
--#include "poll.h"
-+#include "vm_poll.h"
- 
- /*
-  * PollImpl:
-Index: open-vm-tools/lib/include/vm_poll.h
-===================================================================
---- /dev/null
-+++ open-vm-tools/lib/include/vm_poll.h
-@@ -0,0 +1,324 @@
-+/*********************************************************
-+ * Copyright (C) 1998-2016 VMware, Inc. All rights reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU Lesser General Public License as published
-+ * by the Free Software Foundation version 2.1 and no later version.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
-+ * License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * along with this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
-+ *
-+ *********************************************************/
-+
-+/*********************************************************
-+ * The contents of this file are subject to the terms of the Common
-+ * Development and Distribution License (the "License") version 1.0
-+ * and no later version.  You may not use this file except in
-+ * compliance with the License.
-+ *
-+ * You can obtain a copy of the License at
-+ *         http://www.opensource.org/licenses/cddl1.php
-+ *
-+ * See the License for the specific language governing permissions
-+ * and limitations under the License.
-+ *
-+ *********************************************************/
-+
-+
-+#ifndef _POLL_H_
-+#define _POLL_H_
-+
-+#define INCLUDE_ALLOW_USERLEVEL
-+#define INCLUDE_ALLOW_VMCORE
-+#include "includeCheck.h"
-+
-+#include "vm_basic_types.h"
-+#include "vm_basic_defs.h"
-+#include "vmware.h"
-+#include "userlock.h"
-+
-+#ifdef _WIN32
-+#define HZ 100
-+#elif defined linux
-+#include <asm/param.h>
-+#elif __APPLE__
-+#include <TargetConditionals.h>
-+/*
-+ * Old SDKs don't define TARGET_OS_IPHONE at all.
-+ * New ones define it to 0 on Mac OS X, 1 on iOS.
-+ */
-+#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
-+#include <sys/kernel.h>
-+#endif
-+#include <sys/poll.h>
-+#define HZ 100
-+#endif
-+#ifdef __ANDROID__
-+/*
-+ * <poll.h> of android should be included, but its name is same
-+ * with this file. So its content is put here to avoid conflict.
-+ */
-+#include <asm/poll.h>
-+#define HZ 100
-+typedef unsigned int  nfds_t;
-+int poll(struct pollfd *, nfds_t, long);
-+#endif
-+
-+
-+/*
-+ * Poll event types: each type has a different reason for firing,
-+ * or condition that must be met before firing.
-+ */
-+
-+typedef enum {
-+   /*
-+    * Actual Poll queue types against which you can register callbacks.
-+    */
-+   POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */
-+   POLL_VTIME = 0,
-+   POLL_REALTIME,
-+   POLL_DEVICE,
-+   POLL_MAIN_LOOP,
-+   POLL_NUM_QUEUES
-+} PollEventType;
-+
-+
-+/*
-+ * Classes of events
-+ *
-+ * These are the predefined classes.  More can be declared
-+ * with Poll_AllocClass().
-+ */
-+
-+typedef enum PollClass {
-+   POLL_CLASS_MAIN,
-+   POLL_CLASS_PAUSE,
-+   POLL_CLASS_IPC,
-+   POLL_CLASS_CPT,
-+   POLL_CLASS_MKS,
-+   POLL_FIXED_CLASSES,
-+   POLL_MAX_CLASSES = 320 /* Size enum to maximum */
-+} PollClass;
-+
-+
-+/*
-+ * Each callback is registered in a set of classes
-+ */
-+
-+typedef struct PollClassSet {
-+   /* Type is uintptr_t to give best 32/64-bit code. */
-+#define _POLL_ELEMSIZE (sizeof (uintptr_t) * 8)
-+   uintptr_t bits[CEILING(POLL_MAX_CLASSES, _POLL_ELEMSIZE)];
-+} PollClassSet;
-+
-+/* An empty PollClassSet. */
-+static INLINE PollClassSet
-+PollClassSet_Empty(void)
-+{
-+   PollClassSet set = { { 0 } };
-+   return set;
-+}
-+
-+/* A PollClassSet with the single member. */
-+static INLINE PollClassSet
-+PollClassSet_Singleton(PollClass c)
-+{
-+   PollClassSet s = PollClassSet_Empty();
-+
-+   ASSERT_ON_COMPILE(sizeof s.bits[0] * 8 == _POLL_ELEMSIZE); /* Size correct */
-+   ASSERT_ON_COMPILE((_POLL_ELEMSIZE & (_POLL_ELEMSIZE - 1)) == 0); /* power of 2 */
-+   ASSERT_ON_COMPILE(POLL_MAX_CLASSES <= ARRAYSIZE(s.bits) * _POLL_ELEMSIZE);
-+   ASSERT(c < POLL_MAX_CLASSES);
-+
-+   s.bits[c / _POLL_ELEMSIZE] = CONST3264U(1) << (c % _POLL_ELEMSIZE);
-+   return s;
-+}
-+
-+/* Combine two PollClassSets. */
-+static INLINE PollClassSet
-+PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)
-+{
-+   PollClassSet u;
-+   unsigned i;
-+
-+   for (i = 0; i < ARRAYSIZE(u.bits); i++) {
-+      u.bits[i] = lhs.bits[i] | rhs.bits[i];
-+   }
-+   return u;
-+}
-+
-+/* Add single class to PollClassSet. */
-+static INLINE PollClassSet
-+PollClassSet_Include(PollClassSet set, PollClass c)
-+{
-+   return PollClassSet_Union(set, PollClassSet_Singleton(c));
-+}
-+
-+
-+#define POLL_CS_MAIN    PollClassSet_Singleton(POLL_CLASS_MAIN)
-+#define POLL_CS_PAUSE   PollClassSet_Union(POLL_CS_MAIN,            \
-+                           PollClassSet_Singleton(POLL_CLASS_PAUSE))
-+#define POLL_CS_CPT     PollClassSet_Union(POLL_CS_PAUSE,           \
-+                           PollClassSet_Singleton(POLL_CLASS_CPT))
-+#define POLL_CS_IPC     PollClassSet_Union(POLL_CS_CPT,             \
-+                           PollClassSet_Singleton(POLL_CLASS_IPC))
-+#define POLL_CS_VMDB    POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */
-+#define POLL_CS_MKS	PollClassSet_Singleton(POLL_CLASS_MKS)
-+/* 
-+ * DANGER.  You don't need POLL_CS_ALWAYS.  Really.  So don't use it.
-+ */
-+#define POLL_CS_ALWAYS  PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)
-+
-+/*
-+ * Poll class-set taxonomy:
-+ * POLL_CS_MAIN
-+ *    - Unless you NEED another class, use POLL_CS_MAIN.
-+ * POLL_CS_PAUSE
-+ *    - For callbacks that must occur even if the guest is paused.
-+ *      Most VMDB or Foundry commands are in this category.
-+ * POLL_CS_CPT
-+ *    - Only for callbacks which can trigger intermediate Checkpoint 
-+ *      transitions.
-+ *      The ONLY such callback is Migrate.
-+ * POLL_CS_IPC
-+ *    - Only for callbacks which can contain Msg_(Post|Hint|Question) 
-+ *      responses, and for signal handlers (why)?
-+ *      Vigor, VMDB, and Foundry can contain Msg_* responses.
-+ * POLL_CS_MKS
-+ *    - Callback runs in MKS thread.
-+ * POLL_CS_ALWAYS
-+ *    - Only for events that must be processed immediately.
-+ *      The ONLY such callback is OvhdMemVmxSizeCheck.
-+ */
-+
-+
-+/*
-+ * Poll_Callback flags
-+ */
-+
-+#define POLL_FLAG_PERIODIC		0x01    // keep after firing
-+#define POLL_FLAG_REMOVE_AT_POWEROFF	0x02  	// self-explanatory
-+#define POLL_FLAG_READ			0x04	// device is ready for reading
-+#define POLL_FLAG_WRITE			0x08	// device is ready for writing
-+#define POLL_FLAG_SOCKET                0x10    // device is a Windows socket
-+#define POLL_FLAG_NO_BULL               0x20    // callback does its own locking
-+#define POLL_FLAG_WINSOCK               0x40    // Winsock style write events
-+#define POLL_FLAG_FD                    0x80    // device is a Windows file descriptor.
-+#define POLL_FLAG_ACCEPT_INVALID_FDS    0x100   // For broken 3rd party libs, e.g. curl
-+#define POLL_FLAG_THUNK_TO_WND          0x200   // thunk callback to window message loop
-+
-+
-+/*
-+ * Advisory minimum time period.
-+ * Users that want the fastest running real-time poll
-+ * should use TICKS_TO_USECS(1).
-+ */
-+
-+#define TICKS_TO_USECS(_x) ((_x) * (1000000 / HZ))
-+#define USECS_TO_TICKS(_x) ((_x) / (1000000 / HZ))
-+
-+
-+typedef void (*PollerFunction)(void *clientData);
-+typedef void (*PollerFireWrapper)(PollerFunction func,
-+                                  void *funcData,
-+                                  void *wrapperData);
-+typedef Bool (*PollerErrorFn)(const char *errorStr);
-+
-+/*
-+ * Initialisers:
-+ *
-+ *      For the sake of convenience, we declare the initialisers
-+ *      for custom implmentations here, even though the actual
-+ *      implementations are distinct from the core poll code.
-+ */
-+
-+typedef struct PollOptions {
-+   Bool locked;           // Use internal MXUser for locking
-+   Bool allowFullQueue;   // Don't assert when device event queue is full.
-+   VThreadID windowsMsgThread;       // thread that processes Windows messages
-+   PollerFireWrapper fireWrapperFn;  // optional; may be useful for stats
-+   void *fireWrapperData; // optional
-+   PollerErrorFn errorFn; // optional; called upon unrecoverable error
-+} PollOptions;
-+
-+
-+void Poll_InitDefault(void);
-+void Poll_InitDefaultEx(const PollOptions *opts);
-+void Poll_InitGtk(void); // On top of glib for Linux
-+void Poll_InitCF(void);  // On top of CoreFoundation for OSX
-+
-+
-+/*
-+ * Functions
-+ */
-+int Poll_SocketPair(Bool vmci, Bool stream, int fds[2]);
-+void Poll_Loop(Bool loop, Bool *exit, PollClass c);
-+void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);
-+Bool Poll_LockingEnabled(void);
-+void Poll_Exit(void);
-+
-+
-+/*
-+ * Poll_Callback adds a callback regardless of whether an identical one exists.
-+ *
-+ * Likewise, Poll_CallbackRemove removes exactly one callback.
-+ */
-+
-+VMwareStatus Poll_Callback(PollClassSet classSet,
-+                           int flags,
-+                           PollerFunction f,
-+                           void *clientData,
-+                           PollEventType type,
-+                           PollDevHandle info, // fd/microsec delay
-+                           MXUserRecLock *lck);
-+Bool Poll_CallbackRemove(PollClassSet classSet,
-+                         int flags,
-+                         PollerFunction f,
-+                         void *clientData,
-+                         PollEventType type);
-+Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,
-+                                int flags,
-+                                PollerFunction f,
-+                                PollEventType type,
-+                                void **clientData);
-+
-+void Poll_NotifyChange(PollClassSet classSet);
-+
-+/*
-+ * Wrappers for Poll_Callback and Poll_CallbackRemove that present
-+ * simpler subsets of those interfaces.
-+ */
-+
-+VMwareStatus Poll_CB_Device(PollerFunction f,
-+                            void *clientData,
-+                            PollDevHandle device,
-+                            Bool periodic);
-+
-+Bool Poll_CB_DeviceRemove(PollerFunction f,
-+                          void *clientData,
-+                          Bool periodic);
-+
-+
-+VMwareStatus Poll_CB_RTime(PollerFunction f,
-+                           void *clientData,
-+                           int delay,	// microseconds
-+                           Bool periodic,
-+                           MXUserRecLock *lock);
-+
-+Bool Poll_CB_RTimeRemove(PollerFunction f,
-+                         void *clientData,
-+                         Bool periodic);
-+
-+
-+#ifdef _WIN32
-+void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);
-+Bool Poll_FireWndCallback(void *lparam);
-+#endif
-+
-+#endif // _POLL_H_
-Index: open-vm-tools/lib/rpcIn/rpcin.c
-===================================================================
---- open-vm-tools.orig/lib/rpcIn/rpcin.c
-+++ open-vm-tools/lib/rpcIn/rpcin.c
-@@ -57,7 +57,7 @@
- 
- #if defined(VMTOOLS_USE_VSOCKET)
- #  include <glib.h>
--#  include "poll.h"
-+#  include "vm_poll.h"
- #  include "asyncsocket.h"
- #  include "vmci_defs.h"
- #include "dataMap.h"
-Index: open-vm-tools/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
-===================================================================
---- open-vm-tools.orig/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
-+++ open-vm-tools/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
-@@ -48,7 +48,7 @@
- #include "rpcout.h"
- #include "rabbitmqProxyConst.h"
- #include "vm_basic_types.h"
--#include "poll.h"
-+#include "vm_poll.h"
- #ifdef OPEN_VM_TOOLS
- #include "vmci_sockets.h"
- #include "sslDirect.h"
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-use-posix-strerror_r-unless-on-gnu-libc-system.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-use-posix-strerror_r-unless-on-gnu-libc-system.patch
new file mode 100644
index 0000000..c7d34c5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-use-posix-strerror_r-unless-on-gnu-libc-system.patch
@@ -0,0 +1,39 @@
+From a2e7d9273261c5c5cbc33796900f415097f5455e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Jun 2018 23:16:53 -0700
+Subject: [PATCH] use posix strerror_r unless on gnu libc system
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/err/errPosix.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/lib/err/errPosix.c b/lib/err/errPosix.c
+index c81b4c13..7a403640 100644
+--- a/lib/err/errPosix.c
++++ b/lib/err/errPosix.c
+@@ -31,6 +31,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <locale.h>
++#include <stdio.h>
+ 
+ #include "vmware.h"
+ #include "errInt.h"
+@@ -63,11 +64,13 @@ ErrErrno2String(Err_Number errorNumber, // IN
+ {
+    char *p;
+ 
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if defined(__GLIBC__) && !defined(__ANDROID__)
+    p = strerror_r(errorNumber, buf, bufSize);
+ #else
+-   p = strerror(errorNumber);
+-#endif
++   if (strerror_r(errorNumber, buf, bufSize) != 0)
++      snprintf(buf, bufSize, "unknown error %i", errorNumber);
++   p = buf;
++#endif /* defined __GLIBC__ */
+    ASSERT(p != NULL);
+    return p;
+ }
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Add-Wno-incompatible-pointer-types-and-Wno-error-add.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Add-Wno-incompatible-pointer-types-and-Wno-error-add.patch
deleted file mode 100644
index 0105167..0000000
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Add-Wno-incompatible-pointer-types-and-Wno-error-add.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From cdb0b3c898c6b6b6c8259d9ddb8b00163ac5e419 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 16 Jul 2017 09:43:18 -0700
-Subject: [PATCH 04/11] Add -Wno-incompatible-pointer-types and
- -Wno-error=address
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- open-vm-tools/lib/dynxdr/Makefile.am | 2 +-
- open-vm-tools/lib/file/Makefile.am   | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-Index: open-vm-tools/lib/dynxdr/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/dynxdr/Makefile.am
-+++ open-vm-tools/lib/dynxdr/Makefile.am
-@@ -20,4 +20,4 @@ noinst_LTLIBRARIES = libDynxdr.la
- libDynxdr_la_SOURCES = 
- libDynxdr_la_SOURCES += dynxdr.c
- libDynxdr_la_SOURCES += xdrutil.c
--
-+libDynxdr_la_CPPFLAGS = -Wno-incompatible-pointer-types
-Index: open-vm-tools/lib/file/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/file/Makefile.am
-+++ open-vm-tools/lib/file/Makefile.am
-@@ -27,3 +27,4 @@ libFile_la_SOURCES += fileLockPrimitive.
- libFile_la_SOURCES += fileLockPosix.c
- libFile_la_SOURCES += fileTempPosix.c
- libFile_la_SOURCES += fileTemp.c
-+libFile_la_CPPFLAGS = -Wno-error=address
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Use-uintmax_t-for-handling-rlim_t.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Use-uintmax_t-for-handling-rlim_t.patch
new file mode 100644
index 0000000..e802dca
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Use-uintmax_t-for-handling-rlim_t.patch
@@ -0,0 +1,29 @@
+From e694a122c1ff32d8b951ae55756796f9576d23ed Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Jun 2018 23:37:09 -0700
+Subject: [PATCH] Use uintmax_t for handling rlim_t
+
+rlimit types are not representable with long or long long
+formats, therefore use uintmax_t to typecast rlim_t types
+and use %j to print it
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/hgfsServer/hgfsServerLinux.c b/lib/hgfsServer/hgfsServerLinux.c
+index 2e73707d..a2fdb850 100644
+--- a/lib/hgfsServer/hgfsServerLinux.c
++++ b/lib/hgfsServer/hgfsServerLinux.c
+@@ -5294,8 +5294,8 @@ HgfsWriteCheckIORange(off_t offset,         // IN:
+       goto exit;
+    }
+ 
+-   LOG(6, ("%s: File Size limits: 0x%"FMT64"x 0x%"FMT64"x\n",
+-           __FUNCTION__, fileSize.rlim_cur, fileSize.rlim_max));
++   LOG(6, ("%s: File Size limits: 0x%jx 0x%jx\n",
++           __FUNCTION__, (uintmax_t)fileSize.rlim_cur, (uintmax_t)fileSize.rlim_max));
+ 
+    /*
+     * Check the offset is within the file size range.
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
index 5adf9b0..ad19fb2 100644
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
@@ -29,7 +29,7 @@
 ===================================================================
 --- open-vm-tools.orig/configure.ac
 +++ open-vm-tools/configure.ac
-@@ -798,6 +798,7 @@ AC_CHECK_FUNCS(
+@@ -892,6 +892,7 @@ AC_CHECK_FUNCS(
  
  AC_CHECK_FUNCS([ecvt])
  AC_CHECK_FUNCS([fcvt])
@@ -37,7 +37,7 @@
  
  AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes])
  
-@@ -1063,10 +1064,13 @@ AC_PATH_PROG(
+@@ -1076,10 +1077,13 @@ AC_PATH_PROG(
  ###
  
  AC_CHECK_HEADERS([crypt.h])
@@ -133,12 +133,3 @@
  # include <net/if.h>
  #endif
  #ifndef NO_DNET
-@@ -348,7 +352,7 @@ GuestInfoGetNicInfo(NicInfoV3 *nicInfo)
-  *
-  ******************************************************************************
-  */
--#if defined(__FreeBSD__) || defined(__APPLE__) || defined(USERWORLD)
-+#if defined(NO_DNET) && defined(HAVE_GETIFADDRS)
- 
- char *
- GuestInfoGetPrimaryIP(void)
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0008-use-posix-strerror_r-unless-gnu.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0008-use-posix-strerror_r-unless-gnu.patch
deleted file mode 100644
index 3d1291c..0000000
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0008-use-posix-strerror_r-unless-gnu.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From d4d1e7146ca2698089f6bd532f2fb8b9c1134ca7 Mon Sep 17 00:00:00 2001
-From: Natanael Copa <ncopa@alpinelinux.org>
-Date: Mon, 2 Jan 2017 14:39:27 +0000
-Subject: [PATCH 08/11] use posix strerror_r unless gnu
-
----
- open-vm-tools/lib/err/errPosix.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-Index: open-vm-tools/lib/err/errPosix.c
-===================================================================
---- open-vm-tools.orig/lib/err/errPosix.c
-+++ open-vm-tools/lib/err/errPosix.c
-@@ -63,11 +63,13 @@ ErrErrno2String(Err_Number errorNumber,
- {
-    char *p;
- 
--#if defined(linux) && !defined(N_PLAT_NLM) && !defined(__ANDROID__)
-+#if defined(__GLIBC__)
-    p = strerror_r(errorNumber, buf, bufSize);
- #else
--   p = strerror(errorNumber);
--#endif
-+   if (strerror_r(errorNumber, buf, bufSize) != 0)
-+      snprintf(buf, bufSize, "unknown error %i", errorNumber);
-+   p = buf;
-+#endif /* defined __GLIBC__ */
-    ASSERT(p != NULL);
-    return p;
- }
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0009-Add-support-for-building-with-system-libtirpc.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0009-Add-support-for-building-with-system-libtirpc.patch
deleted file mode 100644
index 2bee5ac..0000000
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0009-Add-support-for-building-with-system-libtirpc.patch
+++ /dev/null
@@ -1,342 +0,0 @@
-From 5ae6c662fefa621f4600559e299a7d97c2254e69 Mon Sep 17 00:00:00 2001
-From: Natanael Copa <ncopa@alpinelinux.org>
-Date: Sun, 16 Jul 2017 10:20:10 -0700
-Subject: [PATCH 1/3] Add support for building with system libtirpc
-
-Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- open-vm-tools/configure.ac                               | 14 ++++++++++++++
- open-vm-tools/lib/dynxdr/Makefile.am                     |  8 ++++++--
- open-vm-tools/lib/err/errPosix.c                         |  1 +
- open-vm-tools/lib/guestRpc/Makefile.am                   |  6 ++++++
- open-vm-tools/lib/misc/Makefile.am                       |  1 +
- open-vm-tools/lib/netUtil/Makefile.am                    |  4 ++++
- open-vm-tools/lib/nicInfo/Makefile.am                    |  2 ++
- open-vm-tools/lib/rpcChannel/Makefile.am                 |  4 ++++
- open-vm-tools/lib/slashProc/Makefile.am                  |  4 ++++
- open-vm-tools/lib/string/bsd_output_shared.c             |  2 +-
- open-vm-tools/libguestlib/Makefile.am                    |  2 ++
- open-vm-tools/rpctool/Makefile.am                        |  3 +++
- open-vm-tools/rpctool/rpctool.c                          |  2 ++
- open-vm-tools/services/plugins/dndcp/Makefile.am         |  2 ++
- open-vm-tools/services/plugins/guestInfo/Makefile.am     |  1 +
- open-vm-tools/services/plugins/resolutionSet/Makefile.am |  2 ++
- open-vm-tools/services/plugins/vix/Makefile.am           |  2 ++
- open-vm-tools/services/plugins/vmbackup/Makefile.am      |  2 ++
- open-vm-tools/toolbox/Makefile.am                        |  2 ++
- 19 files changed, 61 insertions(+), 3 deletions(-)
-
-Index: open-vm-tools/configure.ac
-===================================================================
---- open-vm-tools.orig/configure.ac
-+++ open-vm-tools/configure.ac
-@@ -405,6 +405,20 @@ AC_VMW_CHECK_LIB([fuse],
-                   AC_MSG_WARN([Fuse is missing, vmblock-fuse/vmhgfs-fuse will be disabled.])])
- 
- #
-+# Check for libtirpc
-+#
-+AC_VMW_CHECK_LIB([libtirpc],
-+                 [LIBTIRPC],
-+                 [libtirpc],
-+                 [],
-+                 [],
-+                 [rpc/xdr.h],
-+                 [xdr_void],
-+                 [have_libtirpc=yes],
-+                 [have_libtitirpc=no;
-+                  AC_MSG_WARN([libtirpc is missing.])])
-+
-+#
- # Check for PAM.
- #
- AC_ARG_WITH([pam],
-Index: open-vm-tools/lib/dynxdr/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/dynxdr/Makefile.am
-+++ open-vm-tools/lib/dynxdr/Makefile.am
-@@ -17,7 +17,11 @@
- 
- noinst_LTLIBRARIES = libDynxdr.la
- 
--libDynxdr_la_SOURCES = 
-+libDynxdr_la_SOURCES =
- libDynxdr_la_SOURCES += dynxdr.c
- libDynxdr_la_SOURCES += xdrutil.c
--libDynxdr_la_CPPFLAGS = -Wno-incompatible-pointer-types
-+libDynxdr_la_CPPFLAGS = @LIBTIRPC_CPPFLAGS@ -Wno-incompatible-pointer-types
-+
-+libDynxdr_la_LIBADD =
-+libDynxdr_la_LIBADD += @LIBTIRPC_LIBS@
-+
-Index: open-vm-tools/lib/err/errPosix.c
-===================================================================
---- open-vm-tools.orig/lib/err/errPosix.c
-+++ open-vm-tools/lib/err/errPosix.c
-@@ -31,6 +31,7 @@
- #include <errno.h>
- #include <string.h>
- #include <locale.h>
-+#include <stdio.h>
- 
- #include "vmware.h"
- #include "errInt.h"
-Index: open-vm-tools/lib/guestRpc/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/guestRpc/Makefile.am
-+++ open-vm-tools/lib/guestRpc/Makefile.am
-@@ -20,6 +20,12 @@ noinst_LTLIBRARIES = libGuestRpc.la
- libGuestRpc_la_SOURCES =
- libGuestRpc_la_SOURCES += nicinfo_xdr.c
- 
-+libGuestRpc_la_CPPFLAGS =
-+libGuestRpc_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
-+
-+libGuestRpc_la_LIBADD =
-+libGuestRpc_la_LIBADD += @LIBTIRPC_LIBS@
-+
- # XXX: Autoreconf complains about this and recommends using AM_CFLAGS instead.
- # Problem is, $(CFLAGS) is appended to the compiler command line after AM_CFLAGS
- # and after libGuestRpc_la_CFLAGS, so "-Wall -Werror" will override this flag.
-Index: open-vm-tools/lib/misc/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/misc/Makefile.am
-+++ open-vm-tools/lib/misc/Makefile.am
-@@ -52,4 +52,5 @@ libMisc_la_SOURCES += utilMem.c
- libMisc_la_SOURCES += vmstdio.c
- libMisc_la_SOURCES += strutil.c
- libMisc_la_SOURCES += vthreadBase.c
-+libMisc_la_CPPFLAGS = -Wno-error=int-conversion
- 
-Index: open-vm-tools/lib/netUtil/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/netUtil/Makefile.am
-+++ open-vm-tools/lib/netUtil/Makefile.am
-@@ -20,3 +20,7 @@ noinst_LTLIBRARIES = libNetUtil.la
- libNetUtil_la_SOURCES =
- libNetUtil_la_SOURCES += netUtilLinux.c
- 
-+libNetUtil_la_CPPFLAGS =
-+libNetUtil_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
-+
-+libNetUtil_la_LIBADD = @LIBTIRPC_LIBS@
-Index: open-vm-tools/lib/nicInfo/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/nicInfo/Makefile.am
-+++ open-vm-tools/lib/nicInfo/Makefile.am
-@@ -25,12 +25,14 @@ libNicInfo_la_SOURCES += nicInfoPosix.c
- 
- libNicInfo_la_CPPFLAGS =
- libNicInfo_la_CPPFLAGS += @GLIB2_CPPFLAGS@
-+libNicInfo_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
- 
- AM_CFLAGS = $(DNET_CPPFLAGS)
- if USE_SLASH_PROC
- AM_CFLAGS += -DUSE_SLASH_PROC
- endif
- libNicInfo_la_LIBADD =
-+libNicInfo_la_LIBADD += @LIBTIRPC_LIBS@
- if HAVE_DNET
-    libNicInfo_la_LIBADD += @DNET_LIBS@
- endif
-Index: open-vm-tools/lib/rpcChannel/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/rpcChannel/Makefile.am
-+++ open-vm-tools/lib/rpcChannel/Makefile.am
-@@ -27,3 +27,7 @@ endif
- 
- libRpcChannel_la_CPPFLAGS =
- libRpcChannel_la_CPPFLAGS += @VMTOOLS_CPPFLAGS@
-+libRpcChannel_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
-+
-+libRpcChannel_la_LIBADD =
-+libRpcChannel_la_LIBADD += @LIBTIRPC_LIBS@
-Index: open-vm-tools/lib/slashProc/Makefile.am
-===================================================================
---- open-vm-tools.orig/lib/slashProc/Makefile.am
-+++ open-vm-tools/lib/slashProc/Makefile.am
-@@ -22,6 +22,10 @@ libSlashProc_la_SOURCES += net.c
- 
- libSlashProc_la_CPPFLAGS =
- libSlashProc_la_CPPFLAGS += @GLIB2_CPPFLAGS@
-+libSlashProc_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
-+
-+libSlashProc_la_LIBADD =
-+libSlashProc_la_LIBADD += @LIBTIRPC_LIBS@
- 
- AM_CFLAGS = $(DNET_CPPFLAGS)
- 
-Index: open-vm-tools/lib/string/bsd_output_shared.c
-===================================================================
---- open-vm-tools.orig/lib/string/bsd_output_shared.c
-+++ open-vm-tools/lib/string/bsd_output_shared.c
-@@ -38,7 +38,7 @@
- //#include <sys/cdefs.h>
- 
- #if !defined(STR_NO_WIN32_LIBS) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__ANDROID__)
--
-+#define _GNU_SOURCE
- #include <stdio.h>
- #include <stdlib.h>
- #ifndef _WIN32
-Index: open-vm-tools/libguestlib/Makefile.am
-===================================================================
---- open-vm-tools.orig/libguestlib/Makefile.am
-+++ open-vm-tools/libguestlib/Makefile.am
-@@ -22,6 +22,7 @@ AM_CFLAGS += -I$(top_srcdir)/include
- 
- libguestlib_la_LIBADD =
- libguestlib_la_LIBADD += @VMTOOLS_LIBS@
-+libguestlib_la_LIBADD += @LIBTIRPC_LIBS@
- 
- libguestlib_la_SOURCES =
- libguestlib_la_SOURCES += guestlibV3_xdr.c
-@@ -56,6 +57,7 @@ CFLAGS += -Wno-unused
- libguestlib_la_CPPFLAGS =
- libguestlib_la_CPPFLAGS += -DVMTOOLS_USE_GLIB
- libguestlib_la_CPPFLAGS += @GLIB2_CPPFLAGS@
-+libguestlib_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
- 
- EXTRA_DIST = vmguestlib.pc.in
- 
-Index: open-vm-tools/rpctool/Makefile.am
-===================================================================
---- open-vm-tools.orig/rpctool/Makefile.am
-+++ open-vm-tools/rpctool/Makefile.am
-@@ -17,10 +17,13 @@
- 
- bin_PROGRAMS = vmware-rpctool
- 
-+vmware_rpctool_CFLAGS= @LIBTIRPC_LIBS@
-+
- vmware_rpctool_SOURCES =
- vmware_rpctool_SOURCES += rpctool.c
- 
- vmware_rpctool_LDADD =
-+vmware_rpctool_LDADD += @LIBTIRPC_LIBS@
- vmware_rpctool_LDADD += ../lib/rpcOut/libRpcOut.la
- vmware_rpctool_LDADD += ../lib/message/libMessage.la
- vmware_rpctool_LDADD += ../lib/backdoor/libBackdoor.la
-Index: open-vm-tools/rpctool/rpctool.c
-===================================================================
---- open-vm-tools.orig/rpctool/rpctool.c
-+++ open-vm-tools/rpctool/rpctool.c
-@@ -23,6 +23,8 @@
-  */
- 
- #ifndef _WIN32
-+#define _GNU_SOURCE
-+#include <signal.h>
- #include "sigPosixRegs.h"
- #include <errno.h>
- #include <stdint.h>
-Index: open-vm-tools/services/plugins/dndcp/Makefile.am
-===================================================================
---- open-vm-tools.orig/services/plugins/dndcp/Makefile.am
-+++ open-vm-tools/services/plugins/dndcp/Makefile.am
-@@ -23,6 +23,7 @@ plugin_LTLIBRARIES = libdndcp.la
- libdndcp_la_CPPFLAGS =
- libdndcp_la_CPPFLAGS += @GTK_CPPFLAGS@
- libdndcp_la_CPPFLAGS += @PLUGIN_CPPFLAGS@
-+libdndcp_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
- libdndcp_la_CPPFLAGS += -I$(top_srcdir)/services/plugins/dndcp/dnd
- libdndcp_la_CPPFLAGS += -I$(top_srcdir)/services/plugins/dndcp/dndGuest
- libdndcp_la_CPPFLAGS += -I$(top_srcdir)/services/plugins/dndcp/stringxx
-@@ -44,6 +45,7 @@ libdndcp_la_LIBADD += @GTK_LIBS@
- libdndcp_la_LIBADD += @GTKMM_LIBS@
- libdndcp_la_LIBADD += @VMTOOLS_LIBS@
- libdndcp_la_LIBADD += @HGFS_LIBS@
-+libdndcp_la_LIBADD += @LIBTIRPC_LIBS@
- libdndcp_la_LIBADD += $(top_builddir)/lib/hgfsUri/hgfsUriPosix.lo
- 
- libdndcp_la_SOURCES =
-Index: open-vm-tools/services/plugins/guestInfo/Makefile.am
-===================================================================
---- open-vm-tools.orig/services/plugins/guestInfo/Makefile.am
-+++ open-vm-tools/services/plugins/guestInfo/Makefile.am
-@@ -22,6 +22,7 @@ plugin_LTLIBRARIES = libguestInfo.la
- 
- libguestInfo_la_CPPFLAGS =
- libguestInfo_la_CPPFLAGS += @PLUGIN_CPPFLAGS@
-+libguestInfo_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
- 
- libguestInfo_la_LDFLAGS =
- libguestInfo_la_LDFLAGS += @PLUGIN_LDFLAGS@
-Index: open-vm-tools/services/plugins/resolutionSet/Makefile.am
-===================================================================
---- open-vm-tools.orig/services/plugins/resolutionSet/Makefile.am
-+++ open-vm-tools/services/plugins/resolutionSet/Makefile.am
-@@ -21,6 +21,7 @@ plugin_LTLIBRARIES = libresolutionSet.la
- libresolutionSet_la_CPPFLAGS =
- libresolutionSet_la_CPPFLAGS += @GTK_CPPFLAGS@
- libresolutionSet_la_CPPFLAGS += @PLUGIN_CPPFLAGS@
-+libresolutionSet_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
- libresolutionSet_la_CPPFLAGS += -DRESOLUTION_X11
- 
- libresolutionSet_la_LDFLAGS =
-@@ -30,6 +31,7 @@ libresolutionSet_la_LIBADD =
- libresolutionSet_la_LIBADD += @COMMON_XLIBS@
- libresolutionSet_la_LIBADD += @GTK_LIBS@
- libresolutionSet_la_LIBADD += @VMTOOLS_LIBS@
-+libresolutionSet_la_LIBADD += @LIBTIRPC_LIBS@
- 
- libresolutionSet_la_SOURCES =
- libresolutionSet_la_SOURCES += libvmwarectrl.c
-Index: open-vm-tools/services/plugins/vix/Makefile.am
-===================================================================
---- open-vm-tools.orig/services/plugins/vix/Makefile.am
-+++ open-vm-tools/services/plugins/vix/Makefile.am
-@@ -20,6 +20,7 @@ plugin_LTLIBRARIES = libvix.la
- 
- libvix_la_CPPFLAGS =
- libvix_la_CPPFLAGS += @PLUGIN_CPPFLAGS@
-+libvix_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
- libvix_la_CPPFLAGS += -I$(top_srcdir)/vgauth/public
- 
- libvix_la_LDFLAGS =
-@@ -29,6 +30,7 @@ libvix_la_LIBADD =
- libvix_la_LIBADD += @VIX_LIBADD@
- libvix_la_LIBADD += @VMTOOLS_LIBS@
- libvix_la_LIBADD += @HGFS_LIBS@
-+libvix_la_LIBADD += @LIBTIRPC_LIBS@
- libvix_la_LIBADD += $(top_builddir)/lib/auth/libAuth.la
- libvix_la_LIBADD += $(top_builddir)/lib/foundryMsg/libFoundryMsg.la
- libvix_la_LIBADD += $(top_builddir)/lib/impersonate/libImpersonate.la
-Index: open-vm-tools/services/plugins/vmbackup/Makefile.am
-===================================================================
---- open-vm-tools.orig/services/plugins/vmbackup/Makefile.am
-+++ open-vm-tools/services/plugins/vmbackup/Makefile.am
-@@ -20,6 +20,7 @@ plugin_LTLIBRARIES = libvmbackup.la
- 
- libvmbackup_la_CPPFLAGS =
- libvmbackup_la_CPPFLAGS += @PLUGIN_CPPFLAGS@
-+libvmbackup_la_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
- 
- libvmbackup_la_LDFLAGS =
- libvmbackup_la_LDFLAGS += @PLUGIN_LDFLAGS@
-@@ -27,6 +28,7 @@ libvmbackup_la_LDFLAGS += @PLUGIN_LDFLAG
- libvmbackup_la_LIBADD =
- libvmbackup_la_LIBADD += @GOBJECT_LIBS@
- libvmbackup_la_LIBADD += @VMTOOLS_LIBS@
-+libvmbackup_la_LIBADD += @LIBTIRPC_LIBS@
- 
- libvmbackup_la_SOURCES =
- libvmbackup_la_SOURCES += nullProvider.c
-Index: open-vm-tools/toolbox/Makefile.am
-===================================================================
---- open-vm-tools.orig/toolbox/Makefile.am
-+++ open-vm-tools/toolbox/Makefile.am
-@@ -20,9 +20,11 @@ bin_PROGRAMS = vmware-toolbox-cmd
- vmware_toolbox_cmd_LDADD =
- vmware_toolbox_cmd_LDADD += ../libguestlib/libguestlib.la
- vmware_toolbox_cmd_LDADD += @VMTOOLS_LIBS@
-+vmware_toolbox_cmd_LDADD += @LIBTIRPC_LIBS@
- 
- vmware_toolbox_cmd_CPPFLAGS =
- vmware_toolbox_cmd_CPPFLAGS += @VMTOOLS_CPPFLAGS@
-+vmware_toolbox_cmd_CPPFLAGS += @LIBTIRPC_CPPFLAGS@
- 
- vmware_toolbox_cmd_SOURCES =
- vmware_toolbox_cmd_SOURCES += toolbox-cmd.c
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0010-gnu-ucontext.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0010-gnu-ucontext.patch
deleted file mode 100644
index c9beac1..0000000
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0010-gnu-ucontext.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 27442e2dd287d393d7b3f8bf164a887affef84df Mon Sep 17 00:00:00 2001
-From: Natanael Copa <ncopa@alpinelinux.org>
-Date: Wed, 18 Nov 2015 10:27:51 +0000
-Subject: [PATCH 10/11] gnu-ucontext
-
----
- open-vm-tools/lib/include/sigPosixRegs.h | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
-
-Index: open-vm-tools/lib/include/sigPosixRegs.h
-===================================================================
---- open-vm-tools.orig/lib/include/sigPosixRegs.h
-+++ open-vm-tools/lib/include/sigPosixRegs.h
-@@ -33,7 +33,7 @@
- #include "includeCheck.h"
- 
- 
--#if __linux__         // We need the REG_foo offsets in the gregset_t;
-+#if defined(__GLIBC__) // We need the REG_foo offsets in the gregset_t;
- #  define _GNU_SOURCE // _GNU_SOURCE maps to __USE_GNU
- 
- /* And, the REG_foo definitions conflict with our own in x86.h */
-@@ -73,7 +73,7 @@
- #include <sys/ucontext.h>
- #endif
- 
--#if __linux__
-+#if defined(__GLIBC__)
- #  if defined(__x86_64__)
- #    undef REG_RAX
- #    undef REG_RBX
-@@ -199,7 +199,7 @@
- #define SC_ESP(uc) ((unsigned long) (uc)->uc_mcontext.mc_esp)
- #define SC_EIP(uc) ((unsigned long) (uc)->uc_mcontext.mc_eip)
- #endif
--#elif defined (sun)
-+#elif !defined (__GLIBC__)
- #ifdef __x86_64__
- #define SC_EAX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_RAX])
- #define SC_EBX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_RBX])
-@@ -219,15 +219,15 @@
- #define SC_R14(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_R14])
- #define SC_R15(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_R15])
- #else
--#define SC_EAX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EAX])
--#define SC_EBX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EBX])
--#define SC_ECX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[ECX])
--#define SC_EDX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EDX])
--#define SC_EDI(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EDI])
--#define SC_ESI(uc) ((unsigned long) (uc)->uc_mcontext.gregs[ESI])
--#define SC_EBP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EBP])
--#define SC_ESP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[ESP])
--#define SC_EIP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[EIP])
-+#define SC_EAX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EAX])
-+#define SC_EBX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EBX])
-+#define SC_ECX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_ECX])
-+#define SC_EDX(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EDX])
-+#define SC_EDI(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EDI])
-+#define SC_ESI(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_ESI])
-+#define SC_EBP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EBP])
-+#define SC_ESP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_ESP])
-+#define SC_EIP(uc) ((unsigned long) (uc)->uc_mcontext.gregs[REG_EIP])
- #endif
- #elif defined(ANDROID_X86)
- #define SC_EAX(uc) ((unsigned long) (uc)->uc_mcontext.eax)
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/fix-subdir-objects-configure-error.patch b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/fix-subdir-objects-configure-error.patch
new file mode 100644
index 0000000..1a6bfdb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/fix-subdir-objects-configure-error.patch
@@ -0,0 +1,12 @@
+Index: open-vm-tools/configure.ac
+===================================================================
+--- open-vm-tools.orig/configure.ac
++++ open-vm-tools/configure.ac
+@@ -303,6 +303,7 @@ AC_ARG_ENABLE(
+    [],
+    [enable_resolutionkms="auto"])
+ 
++AM_INIT_AUTOMAKE([subdir-objects])
+ AM_INIT_AUTOMAKE
+ 
+ ###
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/files/tools.conf b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/tools.conf
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/open-vm-tools/files/tools.conf
rename to meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/tools.conf
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/files/vmtoolsd.init b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/vmtoolsd.init
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/open-vm-tools/files/vmtoolsd.init
rename to meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/vmtoolsd.init
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/files/vmtoolsd.service b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/vmtoolsd.service
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/open-vm-tools/files/vmtoolsd.service
rename to meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/vmtoolsd.service
diff --git a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.1.5.bb b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.3.0.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.1.5.bb
rename to meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.3.0.bb
index c32d2c5..478d762 100644
--- a/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.3.0.bb
@@ -14,7 +14,7 @@
 SECTION = "vmware-tools"
 
 LICENSE = "LGPL-2.0 & GPL-2.0 & BSD & CDDL-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b66ba4cb4fc017682c95efc300410e79"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=559317809c5444fb39ceaf6ac45c43ac"
 LICENSE_modules/freebsd/vmblock = "BSD"
 LICENSE_modules/freebsd/vmmemctl = "GPL-2.0"
 LICENSE_modules/freebsd/vmxnet = "GPL-2.0"
@@ -27,26 +27,22 @@
            file://vmtoolsd.init \
            file://0001-configure.ac-don-t-use-dnet-config.patch \
            file://0002-add-include-sys-sysmacros.h.patch \
-           file://0001-Remove-assumptions-about-glibc-being-only-libc-imple.patch \
-           file://0002-include-poll.h-instead-of-obsolete-sys-poll.h.patch \
-           file://0003-Rename-poll.h-to-vm_poll.h.patch \
-           file://0004-Add-Wno-incompatible-pointer-types-and-Wno-error-add.patch \
            file://0005-Use-configure-test-for-struct-timespec.patch \
            file://0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch \
            file://0007-Use-configure-to-test-for-feature-instead-of-platfor.patch \
-           file://0008-use-posix-strerror_r-unless-gnu.patch \
            file://0011-Use-configure-test-for-sys-stat.h-include.patch \
+           file://fix-subdir-objects-configure-error.patch \
+           file://0001-include-poll.h-instead-of-sys-poll.h.patch \
+           file://0002-Rename-poll.h-to-vm_poll.h.patch \
+           file://0003-use-posix-strerror_r-unless-on-gnu-libc-system.patch \
+           file://0004-Use-uintmax_t-for-handling-rlim_t.patch \
+           file://0001-Use-off64_t-instead-of-__off64_t.patch \
            "
-SRC_URI_append_libc-musl = "\
-           file://0009-Add-support-for-building-with-system-libtirpc.patch \
-           file://0010-gnu-ucontext.patch \
-           "
-SRCREV = "854c0bb374612f7e633b448ca273f970f154458b"
+SRCREV = "2147df6aabe639fc5ff423ed791a8e7f02bf8d0a"
 
 S = "${WORKDIR}/git/open-vm-tools"
 
-DEPENDS = "glib-2.0 glib-2.0-native util-linux libdnet procps"
-DEPENDS_append_libc-musl = " libtirpc"
+DEPENDS = "glib-2.0 glib-2.0-native util-linux libdnet procps libtirpc"
 
 # open-vm-tools is supported only on x86.
 COMPATIBLE_HOST = '(x86_64.*|i.86.*)-linux'
diff --git a/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb b/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
index 913290c..67b7c29 100644
--- a/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
+++ b/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
@@ -88,7 +88,3 @@
     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/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Add-missing-multi-line-separator.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Add-missing-multi-line-separator.patch
new file mode 100644
index 0000000..513597b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Add-missing-multi-line-separator.patch
@@ -0,0 +1,36 @@
+From 60857229aab13ccc426572a43ab891409bb76ea4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 9 Sep 2018 22:52:55 -0700
+Subject: [PATCH] Add missing multi-line separator
+
+Otherwise this fails to build ( found on mips )
+
+Fixes
+contrib/modules/surface_matching/src/hash_murmur86.hpp:97:15: error:
+expected constructor, destructor, or type conversion before '(' token
+     && defined(__GNUC__) && (__GNUC__>4 || (__GNUC__==4 &&
+__GNUC_MINOR__>=3))
+               ^
+
+Upstream-Status: Submitted [https://github.com/opencv/opencv_contrib/pull/1764]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ modules/surface_matching/src/hash_murmur86.hpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/surface_matching/src/hash_murmur86.hpp b/modules/surface_matching/src/hash_murmur86.hpp
+index 1edf6bf4..0477d37e 100644
+--- a/modules/surface_matching/src/hash_murmur86.hpp
++++ b/modules/surface_matching/src/hash_murmur86.hpp
+@@ -93,7 +93,7 @@ void hashMurmurx86 ( const void * key, const int len, const uint seed, void * ou
+ /* Now find best way we can to READ_UINT32 */
+ #ifndef WORDS_BIGENDIAN
+ # define READ_UINT32(ptr)   (*((uint32_t*)(ptr)))
+-#elif defined(WORDS_BIGENDIAN)
++#elif defined(WORDS_BIGENDIAN) \
+     && defined(__GNUC__) && (__GNUC__>4 || (__GNUC__==4 && __GNUC_MINOR__>=3))
+ # define READ_UINT32(ptr)   (__builtin_bswap32(*((uint32_t*)(ptr))))
+ #endif
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch
new file mode 100644
index 0000000..319071a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch
@@ -0,0 +1,32 @@
+From fa76d8646bb2b9b514728eeef41afed7c43a36f2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 11 Sep 2018 18:18:33 -0700
+Subject: [PATCH] Check for clang before using -isystem
+
+When cross compiling with clang, the internal C++ headers are not found
+when adding sysroot to -isystem, that is redundant anyway because it
+will look for headers insider --sysroot path with same quality as it
+would do with -isystem otherwise
+
+Upstream-Status: Submitted [https://github.com/opencv/opencv/pull/12504]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ cmake/OpenCVUtils.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake
+index fae91c165f..60c20192dc 100644
+--- a/cmake/OpenCVUtils.cmake
++++ b/cmake/OpenCVUtils.cmake
+@@ -259,7 +259,7 @@ function(ocv_include_directories)
+     ocv_is_opencv_directory(__is_opencv_dir "${dir}")
+     if(__is_opencv_dir)
+       list(APPEND __add_before "${dir}")
+-    elseif(CV_GCC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0" AND
++    elseif(((CV_GCC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0") OR CV_CLANG) AND
+            dir MATCHES "/usr/include$")
+       # workaround for GCC 6.x bug
+     else()
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch
index 6dd48fc..bf0b80a 100644
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch
@@ -1,26 +1,30 @@
-From 2bc6bb9831d07f035fea74ea745cea43dd5f9ef9 Mon Sep 17 00:00:00 2001
+From 7144c44ec70dee73a628463b99ffeed74b1a8ef6 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 9 Sep 2017 23:48:31 -0700
+Date: Tue, 11 Sep 2018 00:21:18 -0700
 Subject: [PATCH] Dont use isystem
 
+clang really does not like it
+
+Upstream-Status: Pending
+
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
-Upstream-Status: Pending
+ cmake/OpenCVPCHSupport.cmake | 2 ++
+ 1 file changed, 2 insertions(+)
 
- cmake/OpenCVPCHSupport.cmake | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-Index: git/cmake/OpenCVPCHSupport.cmake
-===================================================================
---- git.orig/cmake/OpenCVPCHSupport.cmake
-+++ git/cmake/OpenCVPCHSupport.cmake
-@@ -17,7 +17,8 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
-     IF(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.2.0")
+diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake
+index f9b1b48b65..fe27a136f5 100644
+--- a/cmake/OpenCVPCHSupport.cmake
++++ b/cmake/OpenCVPCHSupport.cmake
+@@ -18,6 +18,8 @@ IF(CV_GCC)
          SET(PCHSupport_FOUND TRUE)
      ENDIF()
--
+ 
 +    SET(CMAKE_INCLUDE_SYSTEM_FLAG_C "-I")
 +    SET(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-I")
      SET(_PCH_include_prefix "-I")
      SET(_PCH_isystem_prefix "-isystem")
      SET(_PCH_define_prefix "-D")
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch
new file mode 100644
index 0000000..63cb7f9
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch
@@ -0,0 +1,33 @@
+From 7d31f41d2a6759e244983504ce855fc32916b97a Mon Sep 17 00:00:00 2001
+From: Jason Wessel <jason.wessel@windriver.com>
+Date: Wed, 9 May 2018 13:33:59 -0700
+Subject: [PATCH] Temporarliy work around deprecated ffmpeg RAW function
+ compile failure until next uprev
+
+Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+---
+ modules/videoio/src/cap_ffmpeg_impl.hpp | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp
+index 5a9b10f075..97c6b74b07 100644
+--- a/modules/videoio/src/cap_ffmpeg_impl.hpp
++++ b/modules/videoio/src/cap_ffmpeg_impl.hpp
+@@ -667,6 +667,14 @@ struct ImplMutex::Impl
+ 
+ #endif
+ 
++/* NOTE This is deprecated in ffmpeg and the code should be removed */
++#ifndef AVFMT_RAWPICTURE
++#define AVFMT_RAWPICTURE	0x0020
++#endif /* AVFMT_RAWPICTURE */
++#ifndef CODEC_FLAG_GLOBAL_HEADER
++#define CODEC_FLAG_GLOBAL_HEADER	AV_CODEC_FLAG_GLOBAL_HEADER
++#endif
++
+ void ImplMutex::init()
+ {
+     impl = new Impl();
+-- 
+2.11.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-build-workaround-GCC-7.1.1-compilation-issue-with-sa.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-build-workaround-GCC-7.1.1-compilation-issue-with-sa.patch
deleted file mode 100644
index 0140633..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-build-workaround-GCC-7.1.1-compilation-issue-with-sa.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-Upstream-Status: Backport [https://github.com/opencv/opencv/pull/9376/commits/0d854db361106dfcb055231fd0112c5b85ef2287]
-
-Fix CVEs for opencv 3.3.
-
-* CVE-2017-12597
-* CVE-2017-12598
-* CVE-2017-12599
-* CVE-2017-12600
-* CVE-2017-12601
-* CVE-2017-12602
-* CVE-2017-12603
-* CVE-2017-12604
-* CVE-2017-12605
-* CVE-2017-12606
-* CVE-2017-12862
-* CVE-2017-12863
-* CVE-2017-12864
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-From 0d854db361106dfcb055231fd0112c5b85ef2287 Mon Sep 17 00:00:00 2001
-From: Alexander Alekhin <alexander.a.alekhin@gmail.com>
-Date: Tue, 15 Aug 2017 21:45:05 +0000
-Subject: [PATCH 1/3] build: workaround GCC 7.1.1 compilation issue with
- sanitize flags
-
-Version: gcc (GCC) 7.1.1 20170622 (Red Hat 7.1.1-3)
-Flags: -fsanitize=address,undefined
----
- modules/ts/src/cuda_test.cpp | 56 ++++++++++++++++++++++++++------------------
- 1 file changed, 33 insertions(+), 23 deletions(-)
-
-diff --git a/modules/ts/src/cuda_test.cpp b/modules/ts/src/cuda_test.cpp
-index a48e0a087..eb4cee136 100644
---- a/modules/ts/src/cuda_test.cpp
-+++ b/modules/ts/src/cuda_test.cpp
-@@ -322,16 +322,20 @@ namespace cvtest
- 
-         if (m1.size() != m2.size())
-         {
--            return AssertionFailure() << "Matrices \"" << expr1 << "\" and \"" << expr2 << "\" have different sizes : \""
--                                      << expr1 << "\" [" << PrintToString(m1.size()) << "] vs \""
--                                      << expr2 << "\" [" << PrintToString(m2.size()) << "]";
-+            std::stringstream msg;
-+            msg << "Matrices \"" << expr1 << "\" and \"" << expr2 << "\" have different sizes : \""
-+                << expr1 << "\" [" << PrintToString(m1.size()) << "] vs \""
-+                << expr2 << "\" [" << PrintToString(m2.size()) << "]";
-+            return AssertionFailure() << msg.str();
-         }
- 
-         if (m1.type() != m2.type())
-         {
--            return AssertionFailure() << "Matrices \"" << expr1 << "\" and \"" << expr2 << "\" have different types : \""
--                                      << expr1 << "\" [" << PrintToString(MatType(m1.type())) << "] vs \""
--                                      << expr2 << "\" [" << PrintToString(MatType(m2.type())) << "]";
-+            std::stringstream msg;
-+            msg << "Matrices \"" << expr1 << "\" and \"" << expr2 << "\" have different types : \""
-+                << expr1 << "\" [" << PrintToString(MatType(m1.type())) << "] vs \""
-+                << expr2 << "\" [" << PrintToString(MatType(m2.type())) << "]";
-+             return AssertionFailure() << msg.str();
-         }
- 
-         Mat diff;
-@@ -343,12 +347,14 @@ namespace cvtest
- 
-         if (maxVal > eps)
-         {
--            return AssertionFailure() << "The max difference between matrices \"" << expr1 << "\" and \"" << expr2
--                                      << "\" is " << maxVal << " at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ")"
--                                      << ", which exceeds \"" << eps_expr << "\", where \""
--                                      << expr1 << "\" at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ") evaluates to " << printMatVal(m1, maxLoc) << ", \""
--                                      << expr2 << "\" at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ") evaluates to " << printMatVal(m2, maxLoc) << ", \""
--                                      << eps_expr << "\" evaluates to " << eps;
-+            std::stringstream msg;
-+            msg << "The max difference between matrices \"" << expr1 << "\" and \"" << expr2
-+                << "\" is " << maxVal << " at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ")"
-+                << ", which exceeds \"" << eps_expr << "\", where \""
-+                << expr1 << "\" at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ") evaluates to " << printMatVal(m1, maxLoc) << ", \""
-+                << expr2 << "\" at (" << maxLoc.y << ", " << maxLoc.x / m1.channels() << ") evaluates to " << printMatVal(m2, maxLoc) << ", \""
-+                << eps_expr << "\" evaluates to " << eps;
-+            return AssertionFailure() << msg.str();
-         }
- 
-         return AssertionSuccess();
-@@ -469,9 +475,11 @@ namespace cvtest
-     {
-         if (gold.size() != actual.size())
-         {
--            return testing::AssertionFailure() << "KeyPoints size mistmach\n"
--                                               << "\"" << gold_expr << "\" : " << gold.size() << "\n"
--                                               << "\"" << actual_expr << "\" : " << actual.size();
-+            std::stringstream msg;
-+            msg << "KeyPoints size mistmach\n"
-+                << "\"" << gold_expr << "\" : " << gold.size() << "\n"
-+                << "\"" << actual_expr << "\" : " << actual.size();
-+            return AssertionFailure() << msg.str();
-         }
- 
-         std::sort(actual.begin(), actual.end(), KeyPointLess());
-@@ -484,14 +492,16 @@ namespace cvtest
- 
-             if (!keyPointsEquals(p1, p2))
-             {
--                return testing::AssertionFailure() << "KeyPoints differ at " << i << "\n"
--                                                   << "\"" << gold_expr << "\" vs \"" << actual_expr << "\" : \n"
--                                                   << "pt : " << testing::PrintToString(p1.pt) << " vs " << testing::PrintToString(p2.pt) << "\n"
--                                                   << "size : " << p1.size << " vs " << p2.size << "\n"
--                                                   << "angle : " << p1.angle << " vs " << p2.angle << "\n"
--                                                   << "response : " << p1.response << " vs " << p2.response << "\n"
--                                                   << "octave : " << p1.octave << " vs " << p2.octave << "\n"
--                                                   << "class_id : " << p1.class_id << " vs " << p2.class_id;
-+                std::stringstream msg;
-+                msg << "KeyPoints differ at " << i << "\n"
-+                    << "\"" << gold_expr << "\" vs \"" << actual_expr << "\" : \n"
-+                    << "pt : " << testing::PrintToString(p1.pt) << " vs " << testing::PrintToString(p2.pt) << "\n"
-+                    << "size : " << p1.size << " vs " << p2.size << "\n"
-+                    << "angle : " << p1.angle << " vs " << p2.angle << "\n"
-+                    << "response : " << p1.response << " vs " << p2.response << "\n"
-+                    << "octave : " << p1.octave << " vs " << p2.octave << "\n"
-+                    << "class_id : " << p1.class_id << " vs " << p2.class_id;
-+                return AssertionFailure() << msg.str();
-             }
-         }
- 
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-carotene-don-t-use-__asm__-with-aarch64.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-carotene-don-t-use-__asm__-with-aarch64.patch
deleted file mode 100644
index a1a56e0..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-carotene-don-t-use-__asm__-with-aarch64.patch
+++ /dev/null
@@ -1,1250 +0,0 @@
-From 353fc92618ce0dc6bab4a3e8bff1c13c3b613110 Mon Sep 17 00:00:00 2001
-From: Alexander Alekhin <alexander.alekhin@intel.com>
-Date: Wed, 23 Aug 2017 17:41:23 +0300
-Subject: [PATCH 1/2] carotene: don't use __asm__ with aarch64
-
----
-Upstream-Status: Backport
-
- 3rdparty/carotene/src/channel_extract.cpp  |   4 +-
- 3rdparty/carotene/src/channels_combine.cpp |   2 +-
- 3rdparty/carotene/src/colorconvert.cpp     | 104 ++++++++++++++---------------
- 3rdparty/carotene/src/convert.cpp          |  54 +++++++--------
- 3rdparty/carotene/src/convert_scale.cpp    |  72 ++++++++++----------
- 3rdparty/carotene/src/gaussian_blur.cpp    |   6 +-
- 3rdparty/carotene/src/pyramid.cpp          |  20 +++---
- 3rdparty/carotene/src/scharr.cpp           |   4 +-
- 8 files changed, 133 insertions(+), 133 deletions(-)
-
-diff --git a/3rdparty/carotene/src/channel_extract.cpp b/3rdparty/carotene/src/channel_extract.cpp
-index f663bc6005..8238a3ece8 100644
---- a/3rdparty/carotene/src/channel_extract.cpp
-+++ b/3rdparty/carotene/src/channel_extract.cpp
-@@ -231,7 +231,7 @@ void extract4(const Size2D &size,
-                  srcStride == dst2Stride && \
-                  srcStride == dst3Stride &&
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- 
- #define SPLIT_ASM2(sgn, bits) __asm__ ( \
-                                           "vld2." #bits " {d0, d2}, [%[in0]]            \n\t" \
-@@ -351,7 +351,7 @@ void extract4(const Size2D &size,
-     }                                                                                                   \
- }
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- 
- #define ALPHA_QUAD(sgn, bits) { \
-                                   internal::prefetch(src + sj); \
-diff --git a/3rdparty/carotene/src/channels_combine.cpp b/3rdparty/carotene/src/channels_combine.cpp
-index 157c8b8121..fc98fb9181 100644
---- a/3rdparty/carotene/src/channels_combine.cpp
-+++ b/3rdparty/carotene/src/channels_combine.cpp
-@@ -77,7 +77,7 @@ namespace CAROTENE_NS {
-                  dstStride == src2Stride && \
-                  dstStride == src3Stride &&
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- 
- #define MERGE_ASM2(sgn, bits) __asm__ ( \
-                                           "vld1." #bits " {d0-d1}, [%[in0]]             \n\t" \
-diff --git a/3rdparty/carotene/src/colorconvert.cpp b/3rdparty/carotene/src/colorconvert.cpp
-index 3037fe672a..26ae54b15c 100644
---- a/3rdparty/carotene/src/colorconvert.cpp
-+++ b/3rdparty/carotene/src/colorconvert.cpp
-@@ -97,7 +97,7 @@ void rgb2gray(const Size2D &size, COLOR_SPACE color_space,
-     const u32 G2Y = color_space == COLOR_SPACE_BT601 ? G2Y_BT601 : G2Y_BT709;
-     const u32 B2Y = color_space == COLOR_SPACE_BT601 ? B2Y_BT601 : B2Y_BT709;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register int16x4_t v_r2y asm ("d31") = vmov_n_s16(R2Y);
-     register int16x4_t v_g2y asm ("d30") = vmov_n_s16(G2Y);
-     register int16x4_t v_b2y asm ("d29") = vmov_n_s16(B2Y);
-@@ -116,7 +116,7 @@ void rgb2gray(const Size2D &size, COLOR_SPACE color_space,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-         for (; dj < roiw8; sj += 24, dj += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -198,7 +198,7 @@ void rgbx2gray(const Size2D &size, COLOR_SPACE color_space,
-     const u32 G2Y = color_space == COLOR_SPACE_BT601 ? G2Y_BT601 : G2Y_BT709;
-     const u32 B2Y = color_space == COLOR_SPACE_BT601 ? B2Y_BT601 : B2Y_BT709;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register int16x4_t v_r2y asm ("d31") = vmov_n_s16(R2Y);
-     register int16x4_t v_g2y asm ("d30") = vmov_n_s16(G2Y);
-     register int16x4_t v_b2y asm ("d29") = vmov_n_s16(B2Y);
-@@ -217,7 +217,7 @@ void rgbx2gray(const Size2D &size, COLOR_SPACE color_space,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-         for (; dj < roiw8; sj += 32, dj += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -300,7 +300,7 @@ void bgr2gray(const Size2D &size, COLOR_SPACE color_space,
-     const u32 G2Y = color_space == COLOR_SPACE_BT601 ? G2Y_BT601 : G2Y_BT709;
-     const u32 B2Y = color_space == COLOR_SPACE_BT601 ? B2Y_BT601 : B2Y_BT709;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register int16x4_t v_r2y asm ("d31") = vmov_n_s16(R2Y);
-     register int16x4_t v_g2y asm ("d30") = vmov_n_s16(G2Y);
-     register int16x4_t v_b2y asm ("d29") = vmov_n_s16(B2Y);
-@@ -319,7 +319,7 @@ void bgr2gray(const Size2D &size, COLOR_SPACE color_space,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-         for (; dj < roiw8; sj += 24, dj += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -402,7 +402,7 @@ void bgrx2gray(const Size2D &size, COLOR_SPACE color_space,
-     const u32 G2Y = color_space == COLOR_SPACE_BT601 ? G2Y_BT601 : G2Y_BT709;
-     const u32 B2Y = color_space == COLOR_SPACE_BT601 ? B2Y_BT601 : B2Y_BT709;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register int16x4_t v_r2y asm ("d31") = vmov_n_s16(R2Y);
-     register int16x4_t v_g2y asm ("d30") = vmov_n_s16(G2Y);
-     register int16x4_t v_b2y asm ("d29") = vmov_n_s16(B2Y);
-@@ -421,7 +421,7 @@ void bgrx2gray(const Size2D &size, COLOR_SPACE color_space,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-         for (; dj < roiw8; sj += 32, dj += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -512,7 +512,7 @@ void gray2rgb(const Size2D &size,
-         for (; sj < roiw16; sj += 16, dj += 48)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-             "vld1.8 {d0-d1}, [%[in0]]            \n\t"
-             "vmov.8 q1, q0                       \n\t"
-@@ -538,7 +538,7 @@ void gray2rgb(const Size2D &size,
- 
-         if (sj < roiw8)
-         {
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-             "vld1.8 {d0}, [%[in]]                \n\t"
-             "vmov.8 d1, d0                       \n\t"
-@@ -584,7 +584,7 @@ void gray2rgbx(const Size2D &size,
-     size_t roiw16 = size.width >= 15 ? size.width - 15 : 0;
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register uint8x16_t vc255   asm ("q4") = vmovq_n_u8(255);
- #else
-     uint8x16x4_t vRgba;
-@@ -602,7 +602,7 @@ void gray2rgbx(const Size2D &size,
-         for (; sj < roiw16; sj += 16, dj += 64)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-             "vld1.8 {d0-d1}, [%[in0]]            \n\t"
-             "vmov.8 q1, q0                       \n\t"
-@@ -628,7 +628,7 @@ void gray2rgbx(const Size2D &size,
- 
-         if (sj < roiw8)
-         {
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-             "vld1.8 {d5}, [%[in]]                \n\t"
-             "vmov.8 d6, d5                       \n\t"
-@@ -672,7 +672,7 @@ void rgb2rgbx(const Size2D &size,
-     internal::assertSupportedConfiguration();
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-     register uint8x8_t vc255_0  asm ("d3") = vmov_n_u8(255);
- #else
-     size_t roiw16 = size.width >= 15 ? size.width - 15 : 0;
-@@ -688,7 +688,7 @@ void rgb2rgbx(const Size2D &size,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u, j = 0u;
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-         for (; j < roiw8; sj += 24, dj += 32, j += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -742,7 +742,7 @@ void rgbx2rgb(const Size2D &size,
-     internal::assertSupportedConfiguration();
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
--#if !defined(__GNUC__) || !defined(__arm__)
-+#if !(!defined(__aarch64__) && defined(__GNUC__) && defined(__arm__))
-     size_t roiw16 = size.width >= 15 ? size.width - 15 : 0;
-     union { uint8x16x4_t v4; uint8x16x3_t v3; } v_dst0;
-     union { uint8x8x4_t v4; uint8x8x3_t v3; } v_dst;
-@@ -754,7 +754,7 @@ void rgbx2rgb(const Size2D &size,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u, j = 0u;
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -805,7 +805,7 @@ void rgb2bgr(const Size2D &size,
- {
-     internal::assertSupportedConfiguration();
- #ifdef CAROTENE_NEON
--#if !defined(__GNUC__) || !defined(__arm__)
-+#if !(!defined(__aarch64__) && defined(__GNUC__) && defined(__arm__))
-     size_t roiw16 = size.width >= 15 ? size.width - 15 : 0;
- #endif
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-@@ -817,7 +817,7 @@ void rgb2bgr(const Size2D &size,
-         size_t sj = 0u, dj = 0u, j = 0u;
- 
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -874,7 +874,7 @@ void rgbx2bgrx(const Size2D &size,
- {
-     internal::assertSupportedConfiguration();
- #ifdef CAROTENE_NEON
--#if !defined(__GNUC__) || !defined(__arm__)
-+#if !(!defined(__aarch64__) && defined(__GNUC__) && defined(__arm__))
-     size_t roiw16 = size.width >= 15 ? size.width - 15 : 0;
- #endif
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-@@ -885,7 +885,7 @@ void rgbx2bgrx(const Size2D &size,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u, j = 0u;
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-         for (; j < roiw8; sj += 32, dj += 32, j += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -943,7 +943,7 @@ void rgbx2bgr(const Size2D &size,
- {
-     internal::assertSupportedConfiguration();
- #ifdef CAROTENE_NEON
--#if !defined(__GNUC__) || !defined(__arm__)
-+#if !(!defined(__aarch64__) && defined(__GNUC__) && defined(__arm__))
-     size_t roiw16 = size.width >= 15 ? size.width - 15 : 0;
- #endif
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-@@ -954,7 +954,7 @@ void rgbx2bgr(const Size2D &size,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u, j = 0u;
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -1010,7 +1010,7 @@ void rgb2bgrx(const Size2D &size,
- {
-     internal::assertSupportedConfiguration();
- #ifdef CAROTENE_NEON
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-     register uint8x8_t vc255  asm ("d3") = vmov_n_u8(255);
- #else
-     union { uint8x16x4_t v4; uint8x16x3_t v3; } vals0;
-@@ -1019,7 +1019,7 @@ void rgb2bgrx(const Size2D &size,
-     vals8.v4.val[3] = vmov_n_u8(255);
- #endif
- 
--#if !defined(__GNUC__) || !defined(__arm__)
-+#if !(!defined(__aarch64__) && defined(__GNUC__) && defined(__arm__))
-     size_t roiw16 = size.width >= 15 ? size.width - 15 : 0;
- #endif
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-@@ -1030,7 +1030,7 @@ void rgb2bgrx(const Size2D &size,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u, j = 0u;
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-         for (; j < roiw8; sj += 24, dj += 32, j += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -1409,7 +1409,7 @@ inline void convertToHSV(const s32 r, const s32 g, const s32 b,
-               "d24","d25","d26","d27","d28","d29","d30","d31"         \
-             );
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- 
- #define YCRCB_CONSTS                                                        \
-     register int16x4_t vcYR  asm ("d31") = vmov_n_s16(4899);                \
-@@ -1555,7 +1555,7 @@ inline uint8x8x3_t convertToYCrCb( const int16x8_t& vR, const int16x8_t& vG, con
- #define COEFF_G   (  8663)
- #define COEFF_B   (-17705)
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- #define YUV420ALPHA3_CONST
- #define YUV420ALPHA4_CONST register uint8x16_t c255  asm ("q13") = vmovq_n_u8(255);
- #define YUV420ALPHA3_CONVERT
-@@ -1852,7 +1852,7 @@ void rgb2hsv(const Size2D &size,
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-     const s32 hsv_shift = 12;
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register const f32 vsdiv_table = f32(255 << hsv_shift);
-     register f32 vhdiv_table = f32(hrange << hsv_shift);
-     register const s32 vhrange = hrange;
-@@ -1871,7 +1871,7 @@ void rgb2hsv(const Size2D &size,
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERT_TO_HSV_ASM(vld3.8 {d0-d2}, d0, d2)
- #else
-             uint8x8x3_t vRgb = vld3_u8(src + sj);
-@@ -1904,7 +1904,7 @@ void rgbx2hsv(const Size2D &size,
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-     const s32 hsv_shift = 12;
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register const f32 vsdiv_table = f32(255 << hsv_shift);
-     register f32 vhdiv_table = f32(hrange << hsv_shift);
-     register const s32 vhrange = hrange;
-@@ -1923,7 +1923,7 @@ void rgbx2hsv(const Size2D &size,
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERT_TO_HSV_ASM(vld4.8 {d0-d3}, d0, d2)
- #else
-             uint8x8x4_t vRgb = vld4_u8(src + sj);
-@@ -1956,7 +1956,7 @@ void bgr2hsv(const Size2D &size,
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-     const s32 hsv_shift = 12;
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register const f32 vsdiv_table = f32(255 << hsv_shift);
-     register f32 vhdiv_table = f32(hrange << hsv_shift);
-     register const s32 vhrange = hrange;
-@@ -1975,7 +1975,7 @@ void bgr2hsv(const Size2D &size,
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERT_TO_HSV_ASM(vld3.8 {d0-d2}, d2, d0)
- #else
-             uint8x8x3_t vRgb = vld3_u8(src + sj);
-@@ -2008,7 +2008,7 @@ void bgrx2hsv(const Size2D &size,
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-     const s32 hsv_shift = 12;
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register const f32 vsdiv_table = f32(255 << hsv_shift);
-     register f32 vhdiv_table = f32(hrange << hsv_shift);
-     register const s32 vhrange = hrange;
-@@ -2027,7 +2027,7 @@ void bgrx2hsv(const Size2D &size,
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERT_TO_HSV_ASM(vld4.8 {d0-d3}, d2, d0)
- #else
-             uint8x8x4_t vRgb = vld4_u8(src + sj);
-@@ -2068,7 +2068,7 @@ void rgbx2bgr565(const Size2D &size,
-         for (; j < roiw16; sj += 64, dj += 32, j += 16)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-                 "vld4.8 {d2, d4, d6, d8}, [%[in0]]        @  q0       q1       q2       q3       q4       \n\t"
-                 "vld4.8 {d3, d5, d7, d9}, [%[in1]]        @  xxxxxxxx rrrrRRRR ggggGGGG bbbbBBBB xxxxxxxx \n\t"
-@@ -2122,7 +2122,7 @@ void rgb2bgr565(const Size2D &size,
-         for (; j < roiw16; sj += 48, dj += 32, j += 16)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-                 "vld3.8 {d2, d4, d6}, [%[in0]]       @  q0       q1       q2       q3       q4       \n\t"
-                 "vld3.8 {d3, d5, d7}, [%[in1]]       @  xxxxxxxx rrrrRRRR ggggGGGG bbbbBBBB xxxxxxxx \n\t"
-@@ -2176,7 +2176,7 @@ void rgbx2rgb565(const Size2D &size,
-         for (; j < roiw16; sj += 64, dj += 32, j += 16)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-                 "vld4.8 {d0, d2, d4, d6}, [%[in0]]    @  q0       q1       q2       q3         \n\t"
-                 "vld4.8 {d1, d3, d5, d7}, [%[in1]]    @  rrrrRRRR ggggGGGG bbbbBBBB aaaaAAAA   \n\t"
-@@ -2230,7 +2230,7 @@ void rgb2rgb565(const Size2D &size,
-         for (; j < roiw16; sj += 48, dj += 32, j += 16)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-                 "vld3.8 {d0, d2, d4}, [%[in0]]        @  q0       q1       q2       q3         \n\t"
-                 "vld3.8 {d1, d3, d5}, [%[in1]]        @  rrrrRRRR ggggGGGG bbbbBBBB xxxxxxxx   \n\t"
-@@ -2285,7 +2285,7 @@ void rgb2ycrcb(const Size2D &size,
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTTOYCRCB(vld3.8 {d0-d2}, d0, d1, d2)
- #else
-             uint8x8x3_t vRgb = vld3_u8(src + sj);
-@@ -2329,7 +2329,7 @@ void rgbx2ycrcb(const Size2D &size,
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTTOYCRCB(vld4.8 {d0-d3}, d0, d1, d2)
- #else
-             uint8x8x4_t vRgba = vld4_u8(src + sj);
-@@ -2373,7 +2373,7 @@ void bgr2ycrcb(const Size2D &size,
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTTOYCRCB(vld3.8 {d0-d2}, d2, d1, d0)
- #else
-             uint8x8x3_t vBgr = vld3_u8(src + sj);
-@@ -2417,7 +2417,7 @@ void bgrx2ycrcb(const Size2D &size,
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTTOYCRCB(vld4.8 {d0-d3}, d2, d1, d0)
- #else
-             uint8x8x4_t vBgra = vld4_u8(src + sj);
-@@ -2499,7 +2499,7 @@ void yuv420sp2rgb(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTYUV420TORGB(3, d1, d0, q5, q6)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2545,7 +2545,7 @@ void yuv420sp2rgbx(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTYUV420TORGB(4, d1, d0, q5, q6)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2591,7 +2591,7 @@ void yuv420i2rgb(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTYUV420TORGB(3, d0, d1, q5, q6)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2637,7 +2637,7 @@ void yuv420i2rgbx(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTYUV420TORGB(4, d0, d1, q5, q6)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2683,7 +2683,7 @@ void yuv420sp2bgr(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTYUV420TORGB(3, d1, d0, q6, q5)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2729,7 +2729,7 @@ void yuv420sp2bgrx(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTYUV420TORGB(4, d1, d0, q6, q5)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2775,7 +2775,7 @@ void yuv420i2bgr(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTYUV420TORGB(3, d0, d1, q6, q5)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2821,7 +2821,7 @@ void yuv420i2bgrx(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             CONVERTYUV420TORGB(4, d0, d1, q6, q5)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-diff --git a/3rdparty/carotene/src/convert.cpp b/3rdparty/carotene/src/convert.cpp
-index 403f16d86a..64b6db78ab 100644
---- a/3rdparty/carotene/src/convert.cpp
-+++ b/3rdparty/carotene/src/convert.cpp
-@@ -101,7 +101,7 @@ CVT_FUNC(u8, s8, 16,
-      }
- })
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVT_FUNC(u8, u16, 16,
-      register uint8x16_t zero0 asm ("q1") = vmovq_n_u8(0);,
- {
-@@ -135,7 +135,7 @@ CVT_FUNC(u8, u16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVT_FUNC(u8, s32, 16,
-      register uint8x16_t zero0 asm ("q1") = vmovq_n_u8(0);
-      register uint8x16_t zero1 asm ("q2") = vmovq_n_u8(0);
-@@ -173,7 +173,7 @@ CVT_FUNC(u8, s32, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(u8, f32, 16,
- ,
- {
-@@ -248,7 +248,7 @@ CVT_FUNC(s8, u8, 16,
-      }
- })
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVT_FUNC(s8, u16, 16,
-      register uint8x16_t zero0 asm ("q1") = vmovq_n_u8(0);,
- {
-@@ -284,7 +284,7 @@ CVT_FUNC(s8, u16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s8, s16, 16,
- ,
- {
-@@ -323,7 +323,7 @@ CVT_FUNC(s8, s16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVT_FUNC(s8, s32, 16,
- ,
- {
-@@ -377,7 +377,7 @@ CVT_FUNC(s8, s32, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s8, f32, 16,
- ,
- {
-@@ -440,7 +440,7 @@ CVT_FUNC(s8, f32, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(u16, u8, 16,
- ,
- {
-@@ -479,7 +479,7 @@ CVT_FUNC(u16, u8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(u16, s8, 16,
-     register uint8x16_t v127 asm ("q4") = vmovq_n_u8(127);,
- {
-@@ -522,7 +522,7 @@ CVT_FUNC(u16, s8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVT_FUNC(u16, s16, 8,
-      register uint16x8_t v32767 asm ("q4") = vmovq_n_u16(0x7FFF);,
- {
-@@ -555,7 +555,7 @@ CVT_FUNC(u16, s16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVT_FUNC(u16, s32, 8,
-      register uint16x8_t zero0 asm ("q1") = vmovq_n_u16(0);,
- {
-@@ -589,7 +589,7 @@ CVT_FUNC(u16, s32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(u16, f32, 8,
- ,
- {
-@@ -633,7 +633,7 @@ CVT_FUNC(u16, f32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s16, u8, 16,
- ,
- {
-@@ -672,7 +672,7 @@ CVT_FUNC(s16, u8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s16, s8, 16,
- ,
- {
-@@ -711,7 +711,7 @@ CVT_FUNC(s16, s8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVT_FUNC(s16, u16, 8,
-      register int16x8_t vZero asm ("q4") = vmovq_n_s16(0);,
- {
-@@ -747,7 +747,7 @@ CVT_FUNC(s16, u16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s16, s32, 8,
- ,
- {
-@@ -786,7 +786,7 @@ CVT_FUNC(s16, s32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s16, f32, 8,
- ,
- {
-@@ -829,7 +829,7 @@ CVT_FUNC(s16, f32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s32, u8, 8,
- ,
- {
-@@ -870,7 +870,7 @@ CVT_FUNC(s32, u8, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s32, s8, 8,
- ,
- {
-@@ -911,7 +911,7 @@ CVT_FUNC(s32, s8, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s32, u16, 8,
- ,
- {
-@@ -950,7 +950,7 @@ CVT_FUNC(s32, u16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s32, s16, 8,
- ,
- {
-@@ -989,7 +989,7 @@ CVT_FUNC(s32, s16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(s32, f32, 8,
- ,
- {
-@@ -1034,7 +1034,7 @@ CVT_FUNC(s32, f32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(f32, u8, 8,
-     register float32x4_t vmult asm ("q0") = vdupq_n_f32((float)(1 << 16));
-     register uint32x4_t  vmask asm ("q1") = vdupq_n_u32(1<<16);,
-@@ -1101,7 +1101,7 @@ CVT_FUNC(f32, u8, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(f32, s8, 8,
-      register float32x4_t vhalf asm ("q0") = vdupq_n_f32(0.5f);,
- {
-@@ -1153,7 +1153,7 @@ CVT_FUNC(f32, s8, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(f32, u16, 8,
-      register float32x4_t vhalf asm ("q0") = vdupq_n_f32(0.5f);,
- {
-@@ -1212,7 +1212,7 @@ CVT_FUNC(f32, u16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(f32, s16, 8,
-      register float32x4_t vhalf asm ("q0") = vdupq_n_f32(0.5f);,
- {
-@@ -1271,7 +1271,7 @@ CVT_FUNC(f32, s16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
- CVT_FUNC(f32, s32, 8,
-      register float32x4_t vhalf asm ("q0") = vdupq_n_f32(0.5f);,
- {
-diff --git a/3rdparty/carotene/src/convert_scale.cpp b/3rdparty/carotene/src/convert_scale.cpp
-index 0a14a8035c..ae41a985c8 100644
---- a/3rdparty/carotene/src/convert_scale.cpp
-+++ b/3rdparty/carotene/src/convert_scale.cpp
-@@ -135,7 +135,7 @@ namespace CAROTENE_NS {
- 
- #endif
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
- CVTS_FUNC1(u8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -220,7 +220,7 @@ CVTS_FUNC1(u8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
- CVTS_FUNC(u8, s8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -305,7 +305,7 @@ CVTS_FUNC(u8, s8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
- CVTS_FUNC(u8, u16, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -389,7 +389,7 @@ CVTS_FUNC(u8, u16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
- CVTS_FUNC(u8, s16, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -473,7 +473,7 @@ CVTS_FUNC(u8, s16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(u8, s32, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -562,7 +562,7 @@ CVTS_FUNC(u8, s32, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(u8, f32, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -643,7 +643,7 @@ CVTS_FUNC(u8, f32, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
- CVTS_FUNC(s8, u8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -728,7 +728,7 @@ CVTS_FUNC(s8, u8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
- CVTS_FUNC1(s8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -813,7 +813,7 @@ CVTS_FUNC1(s8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
- CVTS_FUNC(s8, u16, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -899,7 +899,7 @@ CVTS_FUNC(s8, u16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
- CVTS_FUNC(s8, s16, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -985,7 +985,7 @@ CVTS_FUNC(s8, s16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s8, s32, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1074,7 +1074,7 @@ CVTS_FUNC(s8, s32, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s8, f32, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -1155,7 +1155,7 @@ CVTS_FUNC(s8, f32, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(u16, u8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1214,7 +1214,7 @@ CVTS_FUNC(u16, u8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(u16, s8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1273,7 +1273,7 @@ CVTS_FUNC(u16, s8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC1(u16, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1330,7 +1330,7 @@ CVTS_FUNC1(u16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(u16, s16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1387,7 +1387,7 @@ CVTS_FUNC(u16, s16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(u16, s32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1443,7 +1443,7 @@ CVTS_FUNC(u16, s32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(u16, f32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -1495,7 +1495,7 @@ CVTS_FUNC(u16, f32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s16, u8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1554,7 +1554,7 @@ CVTS_FUNC(s16, u8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s16, s8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1613,7 +1613,7 @@ CVTS_FUNC(s16, s8, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s16, u16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1670,7 +1670,7 @@ CVTS_FUNC(s16, u16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC1(s16, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1727,7 +1727,7 @@ CVTS_FUNC1(s16, 16,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s16, s32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1783,7 +1783,7 @@ CVTS_FUNC(s16, s32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s16, f32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -1835,7 +1835,7 @@ CVTS_FUNC(s16, f32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s32, u8, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1893,7 +1893,7 @@ CVTS_FUNC(s32, u8, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s32, s8, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1951,7 +1951,7 @@ CVTS_FUNC(s32, s8, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s32, u16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2007,7 +2007,7 @@ CVTS_FUNC(s32, u16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s32, s16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2063,7 +2063,7 @@ CVTS_FUNC(s32, s16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC1(s32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2118,7 +2118,7 @@ CVTS_FUNC1(s32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(s32, f32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -2169,7 +2169,7 @@ CVTS_FUNC(s32, f32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(f32, u8, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)((1 << 16)*alpha));
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)((1 << 16)*beta));
-@@ -2239,7 +2239,7 @@ CVTS_FUNC(f32, u8, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(f32, s8, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2293,7 +2293,7 @@ CVTS_FUNC(f32, s8, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(f32, u16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2345,7 +2345,7 @@ CVTS_FUNC(f32, u16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(f32, s16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2397,7 +2397,7 @@ CVTS_FUNC(f32, s16, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC(f32, s32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2448,7 +2448,7 @@ CVTS_FUNC(f32, s32, 8,
- })
- #endif
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
- CVTS_FUNC1(f32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-diff --git a/3rdparty/carotene/src/gaussian_blur.cpp b/3rdparty/carotene/src/gaussian_blur.cpp
-index 1b5399436f..f7b5f18d79 100644
---- a/3rdparty/carotene/src/gaussian_blur.cpp
-+++ b/3rdparty/carotene/src/gaussian_blur.cpp
-@@ -327,7 +327,7 @@ void gaussianBlur5x5(const Size2D &size, s32 cn,
-                 u16* lidx1 = lane + x - 1*2;
-                 u16* lidx3 = lane + x + 1*2;
-                 u16* lidx4 = lane + x + 2*2;
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-                 __asm__ __volatile__ (
-                     "vld2.16 {d0, d2}, [%[in0]]!                              \n\t"
-                     "vld2.16 {d1, d3}, [%[in0]]                               \n\t"
-@@ -398,7 +398,7 @@ void gaussianBlur5x5(const Size2D &size, s32 cn,
-                 u16* lidx1 = lane + x - 1*3;
-                 u16* lidx3 = lane + x + 1*3;
-                 u16* lidx4 = lane + x + 2*3;
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-                 __asm__ __volatile__ (
-                     "vld3.16 {d0, d2, d4}, [%[in0]]!                          \n\t"
-                     "vld3.16 {d1, d3, d5}, [%[in0]]                           \n\t"
-@@ -482,7 +482,7 @@ void gaussianBlur5x5(const Size2D &size, s32 cn,
-                 u16* lidx1 = lane + x - 1*4;
-                 u16* lidx3 = lane + x + 1*4;
-                 u16* lidx4 = lane + x + 2*4;
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-                 __asm__ __volatile__ (
-                     "vld4.16 {d0, d2, d4, d6}, [%[in0]]!                      \n\t"
-                     "vld4.16 {d1, d3, d5, d7}, [%[in0]]                       \n\t"
-diff --git a/3rdparty/carotene/src/pyramid.cpp b/3rdparty/carotene/src/pyramid.cpp
-index 8ef1268933..232ccf3efd 100644
---- a/3rdparty/carotene/src/pyramid.cpp
-+++ b/3rdparty/carotene/src/pyramid.cpp
-@@ -331,7 +331,7 @@ void gaussianPyramidDown(const Size2D &srcSize,
-             for (; x < roiw8; x += 8)
-             {
-                 internal::prefetch(lane + 2 * x);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-                 __asm__ (
-                     "vld2.16 {d0-d3}, [%[in0]]                               \n\t"
-                     "vld2.16 {d4-d7}, [%[in4]]                               \n\t"
-@@ -538,7 +538,7 @@ void gaussianPyramidDown(const Size2D &srcSize,
-             for (; x < roiw4; x += 4)
-             {
-                 internal::prefetch(lane + 2 * x);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-                 __asm__ (
-                     "vld2.32 {d0-d3}, [%[in0]]                              \n\t"
-                     "vld2.32 {d4-d7}, [%[in4]]                              \n\t"
-@@ -672,7 +672,7 @@ void gaussianPyramidDown(const Size2D &srcSize,
-     std::vector<f32> _buf(cn*(srcSize.width + 4) + 32/sizeof(f32));
-     f32* lane = internal::alignPtr(&_buf[2*cn], 32);
- 
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-     register float32x4_t vc6d4f32  asm ("q11") = vmovq_n_f32(1.5f);  // 6/4
-     register float32x4_t vc1d4f32  asm ("q12") = vmovq_n_f32(0.25f); // 1/4
- 
-@@ -739,7 +739,7 @@ void gaussianPyramidDown(const Size2D &srcSize,
-             for (; x < roiw4; x += 4)
-             {
-                 internal::prefetch(lane + 2 * x);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-                 __asm__ __volatile__ (
-                     "vld2.32 {d0-d3}, [%[in0]]                              \n\t"
-                     "vld2.32 {d8-d11}, [%[in4]]                             \n\t"
-@@ -932,7 +932,7 @@ pyrUp8uHorizontalConvolution:
-             for (; x < lim; x += 8)
-             {
-                 internal::prefetch(lane + x);
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-                 __asm__ (
-                     "vld1.16 {d0-d1}, [%[in0]]       /*q0 = v0*/            \n\t"
-                     "vld1.16 {d2-d3}, [%[in2]]       /*q1 = v2*/            \n\t"
-@@ -973,7 +973,7 @@ pyrUp8uHorizontalConvolution:
-             for (; x < lim; x += 24)
-             {
-                 internal::prefetch(lane + x);
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-                 __asm__ (
-                     "vmov.u16 q9, #6                                           \n\t"
-                     "vld3.16 {d0, d2, d4}, [%[in0]]        /*v0*/              \n\t"
-@@ -1064,7 +1064,7 @@ pyrUp8uHorizontalConvolution:
-             for (; x < lim; x += 8)
-             {
-                 internal::prefetch(lane + x);
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-                 __asm__ (
-                     "vld1.16 {d0-d1}, [%[in0]]       /*q0 = v0*/            \n\t"
-                     "vld1.16 {d2-d3}, [%[in2]]       /*q1 = v2*/            \n\t"
-@@ -1210,7 +1210,7 @@ pyrUp16sHorizontalConvolution:
-             for (; x < lim; x += 4)
-             {
-                 internal::prefetch(lane + x);
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-                 __asm__ (
-                     "vld1.32 {d0-d1}, [%[in0]]       /*q0 = v0*/            \n\t"
-                     "vld1.32 {d2-d3}, [%[in2]]       /*q1 = v2*/            \n\t"
-@@ -1251,7 +1251,7 @@ pyrUp16sHorizontalConvolution:
-             for (; x < lim; x += 12)
-             {
-                 internal::prefetch(lane + x + 3);
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-                 __asm__ (
-                     "vmov.s32 q9, #6                                           \n\t"
-                     "vld3.32 {d0, d2, d4}, [%[in0]]        /*v0*/              \n\t"
-@@ -1343,7 +1343,7 @@ pyrUp16sHorizontalConvolution:
-             for (; x < lim; x += 4)
-             {
-                 internal::prefetch(lane + x);
--#if defined(__GNUC__) && defined(__arm__)
-+#if !defined(__aarch64__) && defined(__GNUC__) && defined(__arm__)
-                 __asm__ (
-                     "vld1.32 {d0-d1}, [%[in0]]       /*q0 = v0*/            \n\t"
-                     "vld1.32 {d2-d3}, [%[in2]]       /*q1 = v2*/            \n\t"
-diff --git a/3rdparty/carotene/src/scharr.cpp b/3rdparty/carotene/src/scharr.cpp
-index 5695804fe4..8d3b6328b1 100644
---- a/3rdparty/carotene/src/scharr.cpp
-+++ b/3rdparty/carotene/src/scharr.cpp
-@@ -109,7 +109,7 @@ void ScharrDeriv(const Size2D &size, s32 cn,
-             internal::prefetch(srow0 + x);
-             internal::prefetch(srow1 + x);
-             internal::prefetch(srow2 + x);
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-             __asm__ (
-                 "vld1.8 {d0}, [%[src0]]                                \n\t"
-                 "vld1.8 {d2}, [%[src2]]                                \n\t"
-@@ -161,7 +161,7 @@ void ScharrDeriv(const Size2D &size, s32 cn,
-         x = 0;
-         for( ; x < roiw8; x += 8 )
-         {
--#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-             __asm__ (
-                 "vld1.16 {d4-d5}, [%[s2ptr]]                           \n\t"
-                 "vld1.16 {d8-d9}, [%[s4ptr]]                           \n\t"
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-Do-not-enable-asm-with-clang.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-Do-not-enable-asm-with-clang.patch
deleted file mode 100644
index 22e868a..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-Do-not-enable-asm-with-clang.patch
+++ /dev/null
@@ -1,993 +0,0 @@
-From 333f60165b6737588eb975a5e4393d847011a1cd Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 19 Sep 2017 18:07:35 -0700
-Subject: [PATCH 2/2] Do not enable asm with clang
-
-clang pretends to be gcc 4.2.0 which means we will
-use inline asm for no reason, instead of builtins
-on clang when possible.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
- 3rdparty/carotene/src/channel_extract.cpp  |  4 +-
- 3rdparty/carotene/src/channels_combine.cpp |  2 +-
- 3rdparty/carotene/src/colorconvert.cpp     | 78 +++++++++++++++---------------
- 3rdparty/carotene/src/convert.cpp          | 54 ++++++++++-----------
- 3rdparty/carotene/src/convert_scale.cpp    | 56 ++++++++++-----------
- 3rdparty/carotene/src/gaussian_blur.cpp    |  2 +-
- 3rdparty/carotene/src/pyramid.cpp          |  8 +--
- 3rdparty/carotene/src/scharr.cpp           |  4 +-
- 8 files changed, 104 insertions(+), 104 deletions(-)
-
-diff --git a/3rdparty/carotene/src/channel_extract.cpp b/3rdparty/carotene/src/channel_extract.cpp
-index 8238a3ece8..ff4fb3770c 100644
---- a/3rdparty/carotene/src/channel_extract.cpp
-+++ b/3rdparty/carotene/src/channel_extract.cpp
-@@ -231,7 +231,7 @@ void extract4(const Size2D &size,
-                  srcStride == dst2Stride && \
-                  srcStride == dst3Stride &&
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- 
- #define SPLIT_ASM2(sgn, bits) __asm__ ( \
-                                           "vld2." #bits " {d0, d2}, [%[in0]]            \n\t" \
-@@ -351,7 +351,7 @@ void extract4(const Size2D &size,
-     }                                                                                                   \
- }
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- 
- #define ALPHA_QUAD(sgn, bits) { \
-                                   internal::prefetch(src + sj); \
-diff --git a/3rdparty/carotene/src/channels_combine.cpp b/3rdparty/carotene/src/channels_combine.cpp
-index fc98fb9181..5d9251d51c 100644
---- a/3rdparty/carotene/src/channels_combine.cpp
-+++ b/3rdparty/carotene/src/channels_combine.cpp
-@@ -77,7 +77,7 @@ namespace CAROTENE_NS {
-                  dstStride == src2Stride && \
-                  dstStride == src3Stride &&
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- 
- #define MERGE_ASM2(sgn, bits) __asm__ ( \
-                                           "vld1." #bits " {d0-d1}, [%[in0]]             \n\t" \
-diff --git a/3rdparty/carotene/src/colorconvert.cpp b/3rdparty/carotene/src/colorconvert.cpp
-index 26ae54b15c..d3a40fe64e 100644
---- a/3rdparty/carotene/src/colorconvert.cpp
-+++ b/3rdparty/carotene/src/colorconvert.cpp
-@@ -97,7 +97,7 @@ void rgb2gray(const Size2D &size, COLOR_SPACE color_space,
-     const u32 G2Y = color_space == COLOR_SPACE_BT601 ? G2Y_BT601 : G2Y_BT709;
-     const u32 B2Y = color_space == COLOR_SPACE_BT601 ? B2Y_BT601 : B2Y_BT709;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register int16x4_t v_r2y asm ("d31") = vmov_n_s16(R2Y);
-     register int16x4_t v_g2y asm ("d30") = vmov_n_s16(G2Y);
-     register int16x4_t v_b2y asm ("d29") = vmov_n_s16(B2Y);
-@@ -116,7 +116,7 @@ void rgb2gray(const Size2D &size, COLOR_SPACE color_space,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-         for (; dj < roiw8; sj += 24, dj += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -198,7 +198,7 @@ void rgbx2gray(const Size2D &size, COLOR_SPACE color_space,
-     const u32 G2Y = color_space == COLOR_SPACE_BT601 ? G2Y_BT601 : G2Y_BT709;
-     const u32 B2Y = color_space == COLOR_SPACE_BT601 ? B2Y_BT601 : B2Y_BT709;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register int16x4_t v_r2y asm ("d31") = vmov_n_s16(R2Y);
-     register int16x4_t v_g2y asm ("d30") = vmov_n_s16(G2Y);
-     register int16x4_t v_b2y asm ("d29") = vmov_n_s16(B2Y);
-@@ -217,7 +217,7 @@ void rgbx2gray(const Size2D &size, COLOR_SPACE color_space,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-         for (; dj < roiw8; sj += 32, dj += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -300,7 +300,7 @@ void bgr2gray(const Size2D &size, COLOR_SPACE color_space,
-     const u32 G2Y = color_space == COLOR_SPACE_BT601 ? G2Y_BT601 : G2Y_BT709;
-     const u32 B2Y = color_space == COLOR_SPACE_BT601 ? B2Y_BT601 : B2Y_BT709;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register int16x4_t v_r2y asm ("d31") = vmov_n_s16(R2Y);
-     register int16x4_t v_g2y asm ("d30") = vmov_n_s16(G2Y);
-     register int16x4_t v_b2y asm ("d29") = vmov_n_s16(B2Y);
-@@ -319,7 +319,7 @@ void bgr2gray(const Size2D &size, COLOR_SPACE color_space,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-         for (; dj < roiw8; sj += 24, dj += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -402,7 +402,7 @@ void bgrx2gray(const Size2D &size, COLOR_SPACE color_space,
-     const u32 G2Y = color_space == COLOR_SPACE_BT601 ? G2Y_BT601 : G2Y_BT709;
-     const u32 B2Y = color_space == COLOR_SPACE_BT601 ? B2Y_BT601 : B2Y_BT709;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register int16x4_t v_r2y asm ("d31") = vmov_n_s16(R2Y);
-     register int16x4_t v_g2y asm ("d30") = vmov_n_s16(G2Y);
-     register int16x4_t v_b2y asm ("d29") = vmov_n_s16(B2Y);
-@@ -421,7 +421,7 @@ void bgrx2gray(const Size2D &size, COLOR_SPACE color_space,
-         u8 * dst = internal::getRowPtr(dstBase, dstStride, i);
-         size_t sj = 0u, dj = 0u;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-         for (; dj < roiw8; sj += 32, dj += 8)
-         {
-             internal::prefetch(src + sj);
-@@ -512,7 +512,7 @@ void gray2rgb(const Size2D &size,
-         for (; sj < roiw16; sj += 16, dj += 48)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-             "vld1.8 {d0-d1}, [%[in0]]            \n\t"
-             "vmov.8 q1, q0                       \n\t"
-@@ -538,7 +538,7 @@ void gray2rgb(const Size2D &size,
- 
-         if (sj < roiw8)
-         {
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-             "vld1.8 {d0}, [%[in]]                \n\t"
-             "vmov.8 d1, d0                       \n\t"
-@@ -584,7 +584,7 @@ void gray2rgbx(const Size2D &size,
-     size_t roiw16 = size.width >= 15 ? size.width - 15 : 0;
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register uint8x16_t vc255   asm ("q4") = vmovq_n_u8(255);
- #else
-     uint8x16x4_t vRgba;
-@@ -602,7 +602,7 @@ void gray2rgbx(const Size2D &size,
-         for (; sj < roiw16; sj += 16, dj += 64)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-             "vld1.8 {d0-d1}, [%[in0]]            \n\t"
-             "vmov.8 q1, q0                       \n\t"
-@@ -628,7 +628,7 @@ void gray2rgbx(const Size2D &size,
- 
-         if (sj < roiw8)
-         {
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-             "vld1.8 {d5}, [%[in]]                \n\t"
-             "vmov.8 d6, d5                       \n\t"
-@@ -1409,7 +1409,7 @@ inline void convertToHSV(const s32 r, const s32 g, const s32 b,
-               "d24","d25","d26","d27","d28","d29","d30","d31"         \
-             );
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- 
- #define YCRCB_CONSTS                                                        \
-     register int16x4_t vcYR  asm ("d31") = vmov_n_s16(4899);                \
-@@ -1555,7 +1555,7 @@ inline uint8x8x3_t convertToYCrCb( const int16x8_t& vR, const int16x8_t& vG, con
- #define COEFF_G   (  8663)
- #define COEFF_B   (-17705)
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- #define YUV420ALPHA3_CONST
- #define YUV420ALPHA4_CONST register uint8x16_t c255  asm ("q13") = vmovq_n_u8(255);
- #define YUV420ALPHA3_CONVERT
-@@ -1852,7 +1852,7 @@ void rgb2hsv(const Size2D &size,
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-     const s32 hsv_shift = 12;
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register const f32 vsdiv_table = f32(255 << hsv_shift);
-     register f32 vhdiv_table = f32(hrange << hsv_shift);
-     register const s32 vhrange = hrange;
-@@ -1871,7 +1871,7 @@ void rgb2hsv(const Size2D &size,
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERT_TO_HSV_ASM(vld3.8 {d0-d2}, d0, d2)
- #else
-             uint8x8x3_t vRgb = vld3_u8(src + sj);
-@@ -1904,7 +1904,7 @@ void rgbx2hsv(const Size2D &size,
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-     const s32 hsv_shift = 12;
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register const f32 vsdiv_table = f32(255 << hsv_shift);
-     register f32 vhdiv_table = f32(hrange << hsv_shift);
-     register const s32 vhrange = hrange;
-@@ -1923,7 +1923,7 @@ void rgbx2hsv(const Size2D &size,
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERT_TO_HSV_ASM(vld4.8 {d0-d3}, d0, d2)
- #else
-             uint8x8x4_t vRgb = vld4_u8(src + sj);
-@@ -1956,7 +1956,7 @@ void bgr2hsv(const Size2D &size,
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-     const s32 hsv_shift = 12;
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register const f32 vsdiv_table = f32(255 << hsv_shift);
-     register f32 vhdiv_table = f32(hrange << hsv_shift);
-     register const s32 vhrange = hrange;
-@@ -1975,7 +1975,7 @@ void bgr2hsv(const Size2D &size,
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERT_TO_HSV_ASM(vld3.8 {d0-d2}, d2, d0)
- #else
-             uint8x8x3_t vRgb = vld3_u8(src + sj);
-@@ -2008,7 +2008,7 @@ void bgrx2hsv(const Size2D &size,
- #ifdef CAROTENE_NEON
-     size_t roiw8 = size.width >= 7 ? size.width - 7 : 0;
-     const s32 hsv_shift = 12;
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register const f32 vsdiv_table = f32(255 << hsv_shift);
-     register f32 vhdiv_table = f32(hrange << hsv_shift);
-     register const s32 vhrange = hrange;
-@@ -2027,7 +2027,7 @@ void bgrx2hsv(const Size2D &size,
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERT_TO_HSV_ASM(vld4.8 {d0-d3}, d2, d0)
- #else
-             uint8x8x4_t vRgb = vld4_u8(src + sj);
-@@ -2068,7 +2068,7 @@ void rgbx2bgr565(const Size2D &size,
-         for (; j < roiw16; sj += 64, dj += 32, j += 16)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-                 "vld4.8 {d2, d4, d6, d8}, [%[in0]]        @  q0       q1       q2       q3       q4       \n\t"
-                 "vld4.8 {d3, d5, d7, d9}, [%[in1]]        @  xxxxxxxx rrrrRRRR ggggGGGG bbbbBBBB xxxxxxxx \n\t"
-@@ -2122,7 +2122,7 @@ void rgb2bgr565(const Size2D &size,
-         for (; j < roiw16; sj += 48, dj += 32, j += 16)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-                 "vld3.8 {d2, d4, d6}, [%[in0]]       @  q0       q1       q2       q3       q4       \n\t"
-                 "vld3.8 {d3, d5, d7}, [%[in1]]       @  xxxxxxxx rrrrRRRR ggggGGGG bbbbBBBB xxxxxxxx \n\t"
-@@ -2176,7 +2176,7 @@ void rgbx2rgb565(const Size2D &size,
-         for (; j < roiw16; sj += 64, dj += 32, j += 16)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-                 "vld4.8 {d0, d2, d4, d6}, [%[in0]]    @  q0       q1       q2       q3         \n\t"
-                 "vld4.8 {d1, d3, d5, d7}, [%[in1]]    @  rrrrRRRR ggggGGGG bbbbBBBB aaaaAAAA   \n\t"
-@@ -2230,7 +2230,7 @@ void rgb2rgb565(const Size2D &size,
-         for (; j < roiw16; sj += 48, dj += 32, j += 16)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-                 "vld3.8 {d0, d2, d4}, [%[in0]]        @  q0       q1       q2       q3         \n\t"
-                 "vld3.8 {d1, d3, d5}, [%[in1]]        @  rrrrRRRR ggggGGGG bbbbBBBB xxxxxxxx   \n\t"
-@@ -2285,7 +2285,7 @@ void rgb2ycrcb(const Size2D &size,
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTTOYCRCB(vld3.8 {d0-d2}, d0, d1, d2)
- #else
-             uint8x8x3_t vRgb = vld3_u8(src + sj);
-@@ -2329,7 +2329,7 @@ void rgbx2ycrcb(const Size2D &size,
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTTOYCRCB(vld4.8 {d0-d3}, d0, d1, d2)
- #else
-             uint8x8x4_t vRgba = vld4_u8(src + sj);
-@@ -2373,7 +2373,7 @@ void bgr2ycrcb(const Size2D &size,
-         for (; j < roiw8; sj += 24, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTTOYCRCB(vld3.8 {d0-d2}, d2, d1, d0)
- #else
-             uint8x8x3_t vBgr = vld3_u8(src + sj);
-@@ -2417,7 +2417,7 @@ void bgrx2ycrcb(const Size2D &size,
-         for (; j < roiw8; sj += 32, dj += 24, j += 8)
-         {
-             internal::prefetch(src + sj);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTTOYCRCB(vld4.8 {d0-d3}, d2, d1, d0)
- #else
-             uint8x8x4_t vBgra = vld4_u8(src + sj);
-@@ -2499,7 +2499,7 @@ void yuv420sp2rgb(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTYUV420TORGB(3, d1, d0, q5, q6)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2545,7 +2545,7 @@ void yuv420sp2rgbx(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTYUV420TORGB(4, d1, d0, q5, q6)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2591,7 +2591,7 @@ void yuv420i2rgb(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTYUV420TORGB(3, d0, d1, q5, q6)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2637,7 +2637,7 @@ void yuv420i2rgbx(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTYUV420TORGB(4, d0, d1, q5, q6)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2683,7 +2683,7 @@ void yuv420sp2bgr(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTYUV420TORGB(3, d1, d0, q6, q5)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2729,7 +2729,7 @@ void yuv420sp2bgrx(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTYUV420TORGB(4, d1, d0, q6, q5)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2775,7 +2775,7 @@ void yuv420i2bgr(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTYUV420TORGB(3, d0, d1, q6, q5)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-@@ -2821,7 +2821,7 @@ void yuv420i2bgrx(const Size2D &size,
-             internal::prefetch(uv + j);
-             internal::prefetch(y1 + j);
-             internal::prefetch(y2 + j);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             CONVERTYUV420TORGB(4, d0, d1, q6, q5)
- #else
-             convertYUV420.ToRGB(y1 + j, y2 + j, uv + j, dst1 + dj, dst2 + dj);
-diff --git a/3rdparty/carotene/src/convert.cpp b/3rdparty/carotene/src/convert.cpp
-index 64b6db78ab..f0c2d153f2 100644
---- a/3rdparty/carotene/src/convert.cpp
-+++ b/3rdparty/carotene/src/convert.cpp
-@@ -101,7 +101,7 @@ CVT_FUNC(u8, s8, 16,
-      }
- })
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVT_FUNC(u8, u16, 16,
-      register uint8x16_t zero0 asm ("q1") = vmovq_n_u8(0);,
- {
-@@ -135,7 +135,7 @@ CVT_FUNC(u8, u16, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVT_FUNC(u8, s32, 16,
-      register uint8x16_t zero0 asm ("q1") = vmovq_n_u8(0);
-      register uint8x16_t zero1 asm ("q2") = vmovq_n_u8(0);
-@@ -173,7 +173,7 @@ CVT_FUNC(u8, s32, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(u8, f32, 16,
- ,
- {
-@@ -248,7 +248,7 @@ CVT_FUNC(s8, u8, 16,
-      }
- })
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVT_FUNC(s8, u16, 16,
-      register uint8x16_t zero0 asm ("q1") = vmovq_n_u8(0);,
- {
-@@ -284,7 +284,7 @@ CVT_FUNC(s8, u16, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s8, s16, 16,
- ,
- {
-@@ -323,7 +323,7 @@ CVT_FUNC(s8, s16, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVT_FUNC(s8, s32, 16,
- ,
- {
-@@ -377,7 +377,7 @@ CVT_FUNC(s8, s32, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s8, f32, 16,
- ,
- {
-@@ -440,7 +440,7 @@ CVT_FUNC(s8, f32, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(u16, u8, 16,
- ,
- {
-@@ -479,7 +479,7 @@ CVT_FUNC(u16, u8, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(u16, s8, 16,
-     register uint8x16_t v127 asm ("q4") = vmovq_n_u8(127);,
- {
-@@ -522,7 +522,7 @@ CVT_FUNC(u16, s8, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVT_FUNC(u16, s16, 8,
-      register uint16x8_t v32767 asm ("q4") = vmovq_n_u16(0x7FFF);,
- {
-@@ -555,7 +555,7 @@ CVT_FUNC(u16, s16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVT_FUNC(u16, s32, 8,
-      register uint16x8_t zero0 asm ("q1") = vmovq_n_u16(0);,
- {
-@@ -589,7 +589,7 @@ CVT_FUNC(u16, s32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(u16, f32, 8,
- ,
- {
-@@ -633,7 +633,7 @@ CVT_FUNC(u16, f32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s16, u8, 16,
- ,
- {
-@@ -672,7 +672,7 @@ CVT_FUNC(s16, u8, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s16, s8, 16,
- ,
- {
-@@ -711,7 +711,7 @@ CVT_FUNC(s16, s8, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVT_FUNC(s16, u16, 8,
-      register int16x8_t vZero asm ("q4") = vmovq_n_s16(0);,
- {
-@@ -747,7 +747,7 @@ CVT_FUNC(s16, u16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s16, s32, 8,
- ,
- {
-@@ -786,7 +786,7 @@ CVT_FUNC(s16, s32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s16, f32, 8,
- ,
- {
-@@ -829,7 +829,7 @@ CVT_FUNC(s16, f32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s32, u8, 8,
- ,
- {
-@@ -870,7 +870,7 @@ CVT_FUNC(s32, u8, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s32, s8, 8,
- ,
- {
-@@ -911,7 +911,7 @@ CVT_FUNC(s32, s8, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s32, u16, 8,
- ,
- {
-@@ -950,7 +950,7 @@ CVT_FUNC(s32, u16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s32, s16, 8,
- ,
- {
-@@ -989,7 +989,7 @@ CVT_FUNC(s32, s16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(s32, f32, 8,
- ,
- {
-@@ -1034,7 +1034,7 @@ CVT_FUNC(s32, f32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(f32, u8, 8,
-     register float32x4_t vmult asm ("q0") = vdupq_n_f32((float)(1 << 16));
-     register uint32x4_t  vmask asm ("q1") = vdupq_n_u32(1<<16);,
-@@ -1101,7 +1101,7 @@ CVT_FUNC(f32, u8, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(f32, s8, 8,
-      register float32x4_t vhalf asm ("q0") = vdupq_n_f32(0.5f);,
- {
-@@ -1153,7 +1153,7 @@ CVT_FUNC(f32, s8, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(f32, u16, 8,
-      register float32x4_t vhalf asm ("q0") = vdupq_n_f32(0.5f);,
- {
-@@ -1212,7 +1212,7 @@ CVT_FUNC(f32, u16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(f32, s16, 8,
-      register float32x4_t vhalf asm ("q0") = vdupq_n_f32(0.5f);,
- {
-@@ -1271,7 +1271,7 @@ CVT_FUNC(f32, s16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
- CVT_FUNC(f32, s32, 8,
-      register float32x4_t vhalf asm ("q0") = vdupq_n_f32(0.5f);,
- {
-diff --git a/3rdparty/carotene/src/convert_scale.cpp b/3rdparty/carotene/src/convert_scale.cpp
-index ae41a985c8..d599d24c1e 100644
---- a/3rdparty/carotene/src/convert_scale.cpp
-+++ b/3rdparty/carotene/src/convert_scale.cpp
-@@ -473,7 +473,7 @@ CVTS_FUNC(u8, s16, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(u8, s32, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -562,7 +562,7 @@ CVTS_FUNC(u8, s32, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(u8, f32, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -985,7 +985,7 @@ CVTS_FUNC(s8, s16, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s8, s32, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1074,7 +1074,7 @@ CVTS_FUNC(s8, s32, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s8, f32, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -1155,7 +1155,7 @@ CVTS_FUNC(s8, f32, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(u16, u8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1214,7 +1214,7 @@ CVTS_FUNC(u16, u8, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(u16, s8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1273,7 +1273,7 @@ CVTS_FUNC(u16, s8, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC1(u16, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1330,7 +1330,7 @@ CVTS_FUNC1(u16, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(u16, s16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1387,7 +1387,7 @@ CVTS_FUNC(u16, s16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(u16, s32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1443,7 +1443,7 @@ CVTS_FUNC(u16, s32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(u16, f32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -1495,7 +1495,7 @@ CVTS_FUNC(u16, f32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s16, u8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1554,7 +1554,7 @@ CVTS_FUNC(s16, u8, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s16, s8, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1613,7 +1613,7 @@ CVTS_FUNC(s16, s8, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s16, u16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1670,7 +1670,7 @@ CVTS_FUNC(s16, u16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC1(s16, 16,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1727,7 +1727,7 @@ CVTS_FUNC1(s16, 16,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s16, s32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1783,7 +1783,7 @@ CVTS_FUNC(s16, s32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s16, f32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -1835,7 +1835,7 @@ CVTS_FUNC(s16, f32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s32, u8, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1893,7 +1893,7 @@ CVTS_FUNC(s32, u8, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s32, s8, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -1951,7 +1951,7 @@ CVTS_FUNC(s32, s8, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s32, u16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2007,7 +2007,7 @@ CVTS_FUNC(s32, u16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s32, s16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2063,7 +2063,7 @@ CVTS_FUNC(s32, s16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC1(s32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2118,7 +2118,7 @@ CVTS_FUNC1(s32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(s32, f32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-@@ -2169,7 +2169,7 @@ CVTS_FUNC(s32, f32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(f32, u8, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)((1 << 16)*alpha));
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)((1 << 16)*beta));
-@@ -2239,7 +2239,7 @@ CVTS_FUNC(f32, u8, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(f32, s8, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2293,7 +2293,7 @@ CVTS_FUNC(f32, s8, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(f32, u16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2345,7 +2345,7 @@ CVTS_FUNC(f32, u16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(f32, s16, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2397,7 +2397,7 @@ CVTS_FUNC(f32, s16, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC(f32, s32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta + 0.5f);,
-@@ -2448,7 +2448,7 @@ CVTS_FUNC(f32, s32, 8,
- })
- #endif
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
- CVTS_FUNC1(f32, 8,
-     register float32x4_t vscale asm ("q0") = vdupq_n_f32((f32)alpha);
-     register float32x4_t vshift asm ("q1") = vdupq_n_f32((f32)beta);,
-diff --git a/3rdparty/carotene/src/gaussian_blur.cpp b/3rdparty/carotene/src/gaussian_blur.cpp
-index f7b5f18d79..e5aa8fc75b 100644
---- a/3rdparty/carotene/src/gaussian_blur.cpp
-+++ b/3rdparty/carotene/src/gaussian_blur.cpp
-@@ -327,7 +327,7 @@ void gaussianBlur5x5(const Size2D &size, s32 cn,
-                 u16* lidx1 = lane + x - 1*2;
-                 u16* lidx3 = lane + x + 1*2;
-                 u16* lidx4 = lane + x + 2*2;
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-                 __asm__ __volatile__ (
-                     "vld2.16 {d0, d2}, [%[in0]]!                              \n\t"
-                     "vld2.16 {d1, d3}, [%[in0]]                               \n\t"
-diff --git a/3rdparty/carotene/src/pyramid.cpp b/3rdparty/carotene/src/pyramid.cpp
-index 232ccf3efd..d4e32ea50f 100644
---- a/3rdparty/carotene/src/pyramid.cpp
-+++ b/3rdparty/carotene/src/pyramid.cpp
-@@ -331,7 +331,7 @@ void gaussianPyramidDown(const Size2D &srcSize,
-             for (; x < roiw8; x += 8)
-             {
-                 internal::prefetch(lane + 2 * x);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-                 __asm__ (
-                     "vld2.16 {d0-d3}, [%[in0]]                               \n\t"
-                     "vld2.16 {d4-d7}, [%[in4]]                               \n\t"
-@@ -538,7 +538,7 @@ void gaussianPyramidDown(const Size2D &srcSize,
-             for (; x < roiw4; x += 4)
-             {
-                 internal::prefetch(lane + 2 * x);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-                 __asm__ (
-                     "vld2.32 {d0-d3}, [%[in0]]                              \n\t"
-                     "vld2.32 {d4-d7}, [%[in4]]                              \n\t"
-@@ -672,7 +672,7 @@ void gaussianPyramidDown(const Size2D &srcSize,
-     std::vector<f32> _buf(cn*(srcSize.width + 4) + 32/sizeof(f32));
-     f32* lane = internal::alignPtr(&_buf[2*cn], 32);
- 
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-     register float32x4_t vc6d4f32  asm ("q11") = vmovq_n_f32(1.5f);  // 6/4
-     register float32x4_t vc1d4f32  asm ("q12") = vmovq_n_f32(0.25f); // 1/4
- 
-@@ -739,7 +739,7 @@ void gaussianPyramidDown(const Size2D &srcSize,
-             for (; x < roiw4; x += 4)
-             {
-                 internal::prefetch(lane + 2 * x);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-                 __asm__ __volatile__ (
-                     "vld2.32 {d0-d3}, [%[in0]]                              \n\t"
-                     "vld2.32 {d8-d11}, [%[in4]]                             \n\t"
-diff --git a/3rdparty/carotene/src/scharr.cpp b/3rdparty/carotene/src/scharr.cpp
-index 8d3b6328b1..36f6b2276e 100644
---- a/3rdparty/carotene/src/scharr.cpp
-+++ b/3rdparty/carotene/src/scharr.cpp
-@@ -109,7 +109,7 @@ void ScharrDeriv(const Size2D &size, s32 cn,
-             internal::prefetch(srow0 + x);
-             internal::prefetch(srow1 + x);
-             internal::prefetch(srow2 + x);
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 7
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 7 && !defined(__clang__)
-             __asm__ (
-                 "vld1.8 {d0}, [%[src0]]                                \n\t"
-                 "vld1.8 {d2}, [%[src2]]                                \n\t"
-@@ -161,7 +161,7 @@ void ScharrDeriv(const Size2D &size, s32 cn,
-         x = 0;
-         for( ; x < roiw8; x += 8 )
-         {
--#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
-+#if !defined(__aarch64__) && defined(__GNUC__) && __GNUC__ == 4 &&  __GNUC_MINOR__ < 6 && !defined(__clang__)
-             __asm__ (
-                 "vld1.16 {d4-d5}, [%[s2ptr]]                           \n\t"
-                 "vld1.16 {d8-d9}, [%[s4ptr]]                           \n\t"
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-imgcodecs-refactoring-improve-code-quality.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-imgcodecs-refactoring-improve-code-quality.patch
deleted file mode 100644
index 39f33af..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-imgcodecs-refactoring-improve-code-quality.patch
+++ /dev/null
@@ -1,656 +0,0 @@
-Upstream-Status: Backport [https://github.com/opencv/opencv/pull/9376/commits/999f41fb4f4aa94a0cb47256919ae8b5c29ca5f3]
-
-Fix CVEs for opencv 3.3:
-
-* CVE-2017-12597
-* CVE-2017-12598
-* CVE-2017-12599
-* CVE-2017-12600
-* CVE-2017-12601
-* CVE-2017-12602
-* CVE-2017-12603
-* CVE-2017-12604
-* CVE-2017-12605
-* CVE-2017-12606
-* CVE-2017-12862
-* CVE-2017-12863
-* CVE-2017-12864
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-From 999f41fb4f4aa94a0cb47256919ae8b5c29ca5f3 Mon Sep 17 00:00:00 2001
-From: Alexander Alekhin <alexander.a.alekhin@gmail.com>
-Date: Tue, 15 Aug 2017 22:04:55 +0000
-Subject: [PATCH 2/3] imgcodecs: refactoring, improve code quality
-
----
- modules/imgcodecs/src/bitstrm.cpp   |   2 +
- modules/imgcodecs/src/bitstrm.hpp   |  19 +++--
- modules/imgcodecs/src/grfmt_bmp.cpp |  13 ++-
- modules/imgcodecs/src/grfmt_pxm.cpp | 122 ++++++++++++++++-----------
- modules/imgcodecs/src/loadsave.cpp  | 164 +++++++++++++++++++++++++++++-------
- 5 files changed, 231 insertions(+), 89 deletions(-)
-
-diff --git a/modules/imgcodecs/src/bitstrm.cpp b/modules/imgcodecs/src/bitstrm.cpp
-index a7e187fa0..0a8941aec 100644
---- a/modules/imgcodecs/src/bitstrm.cpp
-+++ b/modules/imgcodecs/src/bitstrm.cpp
-@@ -209,6 +209,8 @@ int  RLByteStream::getByte()
-         current = m_current;
-     }
- 
-+    CV_Assert(current < m_end);
-+
-     val = *((uchar*)current);
-     m_current = current + 1;
-     return val;
-diff --git a/modules/imgcodecs/src/bitstrm.hpp b/modules/imgcodecs/src/bitstrm.hpp
-index 465c0a847..26947971f 100644
---- a/modules/imgcodecs/src/bitstrm.hpp
-+++ b/modules/imgcodecs/src/bitstrm.hpp
-@@ -48,13 +48,20 @@
- namespace cv
- {
- 
--enum
--{
--    RBS_THROW_EOS=-123,  // <end of stream> exception code
--    RBS_THROW_FORB=-124,  // <forrbidden huffman code> exception code
--    RBS_HUFF_FORB=2047,  // forrbidden huffman code "value"
--    RBS_BAD_HEADER=-125 // invalid header
-+#define DECLARE_RBS_EXCEPTION(name) \
-+class RBS_ ## name ## _Exception : public cv::Exception \
-+{ \
-+public: \
-+    RBS_ ## name ## _Exception(int code_, const String& err_, const String& func_, const String& file_, int line_) : \
-+        cv::Exception(code_, err_, func_, file_, line_) \
-+    {} \
- };
-+DECLARE_RBS_EXCEPTION(THROW_EOS)
-+#define RBS_THROW_EOS RBS_THROW_EOS_Exception(cv::Error::StsError, "Unexpected end of input stream", CV_Func, __FILE__, __LINE__)
-+DECLARE_RBS_EXCEPTION(THROW_FORB)
-+#define RBS_THROW_FORB RBS_THROW_FORB_Exception(cv::Error::StsError, "Forrbidden huffman code", CV_Func, __FILE__, __LINE__)
-+DECLARE_RBS_EXCEPTION(BAD_HEADER)
-+#define RBS_BAD_HEADER RBS_BAD_HEADER_Exception(cv::Error::StsError, "Invalid header", CV_Func, __FILE__, __LINE__)
- 
- typedef unsigned long ulong;
- 
-diff --git a/modules/imgcodecs/src/grfmt_bmp.cpp b/modules/imgcodecs/src/grfmt_bmp.cpp
-index 86cacd316..257f97c2d 100644
---- a/modules/imgcodecs/src/grfmt_bmp.cpp
-+++ b/modules/imgcodecs/src/grfmt_bmp.cpp
-@@ -118,8 +118,9 @@ bool  BmpDecoder::readHeader()
- 
-                 if( m_bpp <= 8 )
-                 {
--                    memset( m_palette, 0, sizeof(m_palette));
--                    m_strm.getBytes( m_palette, (clrused == 0? 1<<m_bpp : clrused)*4 );
-+                    CV_Assert(clrused < 256);
-+                    memset(m_palette, 0, sizeof(m_palette));
-+                    m_strm.getBytes(m_palette, (clrused == 0? 1<<m_bpp : clrused)*4 );
-                     iscolor = IsColorPalette( m_palette, m_bpp );
-                 }
-                 else if( m_bpp == 16 && m_rle_code == BMP_BITFIELDS )
-@@ -290,7 +291,9 @@ bool  BmpDecoder::readData( Mat& img )
-                     else if( code > 2 ) // absolute mode
-                     {
-                         if( data + code*nch > line_end ) goto decode_rle4_bad;
--                        m_strm.getBytes( src, (((code + 1)>>1) + 1) & -2 );
-+                        int sz = (((code + 1)>>1) + 1) & (~1);
-+                        CV_Assert((size_t)sz < _src.size());
-+                        m_strm.getBytes(src, sz);
-                         if( color )
-                             data = FillColorRow4( data, src, code, m_palette );
-                         else
-@@ -379,7 +382,9 @@ decode_rle4_bad: ;
- 
-                         if( data + code3 > line_end )
-                             goto decode_rle8_bad;
--                        m_strm.getBytes( src, (code + 1) & -2 );
-+                        int sz = (code + 1) & (~1);
-+                        CV_Assert((size_t)sz < _src.size());
-+                        m_strm.getBytes(src, sz);
-                         if( color )
-                             data = FillColorRow8( data, src, code, m_palette );
-                         else
-diff --git a/modules/imgcodecs/src/grfmt_pxm.cpp b/modules/imgcodecs/src/grfmt_pxm.cpp
-index 1750cb705..68bd8fd93 100644
---- a/modules/imgcodecs/src/grfmt_pxm.cpp
-+++ b/modules/imgcodecs/src/grfmt_pxm.cpp
-@@ -43,50 +43,58 @@
- #include "precomp.hpp"
- #include "utils.hpp"
- #include "grfmt_pxm.hpp"
-+#include <iostream>
- 
- namespace cv
- {
- 
- ///////////////////////// P?M reader //////////////////////////////
- 
--static int ReadNumber( RLByteStream& strm, int maxdigits )
-+static int ReadNumber(RLByteStream& strm, int maxdigits = 0)
- {
-     int code;
--    int val = 0;
-+    int64 val = 0;
-     int digits = 0;
- 
-     code = strm.getByte();
- 
--    if( !isdigit(code))
-+    while (!isdigit(code))
-     {
--        do
-+        if (code == '#' )
-         {
--            if( code == '#' )
-+            do
-             {
--                do
--                {
--                    code = strm.getByte();
--                }
--                while( code != '\n' && code != '\r' );
-+                code = strm.getByte();
-             }
--
-+            while (code != '\n' && code != '\r');
-             code = strm.getByte();
--
--            while( isspace(code))
-+        }
-+        else if (isspace(code))
-+        {
-+            while (isspace(code))
-                 code = strm.getByte();
-         }
--        while( !isdigit( code ));
-+        else
-+        {
-+#if 1
-+            CV_ErrorNoReturn_(Error::StsError, ("PXM: Unexpected code in ReadNumber(): 0x%x (%d)", code, code));
-+#else
-+            code = strm.getByte();
-+#endif
-+        }
-     }
- 
-     do
-     {
--        val = val*10 + code - '0';
--        if( ++digits >= maxdigits ) break;
-+        val = val*10 + (code - '0');
-+        CV_Assert(val <= INT_MAX && "PXM: ReadNumber(): result is too large");
-+        digits++;
-+        if (maxdigits != 0 && digits >= maxdigits) break;
-         code = strm.getByte();
-     }
--    while( isdigit(code));
-+    while (isdigit(code));
- 
--    return val;
-+    return (int)val;
- }
- 
- 
-@@ -122,13 +130,13 @@ ImageDecoder PxMDecoder::newDecoder() const
-     return makePtr<PxMDecoder>();
- }
- 
--void  PxMDecoder::close()
-+void PxMDecoder::close()
- {
-     m_strm.close();
- }
- 
- 
--bool  PxMDecoder::readHeader()
-+bool PxMDecoder::readHeader()
- {
-     bool result = false;
- 
-@@ -158,10 +166,10 @@ bool  PxMDecoder::readHeader()
-         m_binary = code >= '4';
-         m_type = m_bpp > 8 ? CV_8UC3 : CV_8UC1;
- 
--        m_width = ReadNumber( m_strm, INT_MAX );
--        m_height = ReadNumber( m_strm, INT_MAX );
-+        m_width = ReadNumber(m_strm);
-+        m_height = ReadNumber(m_strm);
- 
--        m_maxval = m_bpp == 1 ? 1 : ReadNumber( m_strm, INT_MAX );
-+        m_maxval = m_bpp == 1 ? 1 : ReadNumber(m_strm);
-         if( m_maxval > 65535 )
-             throw RBS_BAD_HEADER;
- 
-@@ -175,8 +183,14 @@ bool  PxMDecoder::readHeader()
-             result = true;
-         }
-     }
--    catch(...)
-+    catch (const cv::Exception&)
-+    {
-+        throw;
-+    }
-+    catch (...)
-     {
-+        std::cerr << "PXM::readHeader(): unknown C++ exception" << std::endl << std::flush;
-+        throw;
-     }
- 
-     if( !result )
-@@ -189,33 +203,28 @@ bool  PxMDecoder::readHeader()
- }
- 
- 
--bool  PxMDecoder::readData( Mat& img )
-+bool PxMDecoder::readData( Mat& img )
- {
-     int color = img.channels() > 1;
-     uchar* data = img.ptr();
-     PaletteEntry palette[256];
-     bool   result = false;
--    int  bit_depth = CV_ELEM_SIZE1(m_type)*8;
--    int  src_pitch = (m_width*m_bpp*bit_depth/8 + 7)/8;
-+    const int bit_depth = CV_ELEM_SIZE1(m_type)*8;
-+    const int src_pitch = divUp(m_width*m_bpp*(bit_depth/8), 8);
-     int  nch = CV_MAT_CN(m_type);
-     int  width3 = m_width*nch;
--    int  i, x, y;
- 
-     if( m_offset < 0 || !m_strm.isOpened())
-         return false;
- 
--    AutoBuffer<uchar> _src(src_pitch + 32);
--    uchar* src = _src;
--    AutoBuffer<uchar> _gray_palette;
--    uchar* gray_palette = _gray_palette;
-+    uchar gray_palette[256] = {0};
- 
-     // create LUT for converting colors
-     if( bit_depth == 8 )
-     {
--        _gray_palette.allocate(m_maxval + 1);
--        gray_palette = _gray_palette;
-+        CV_Assert(m_maxval < 256);
- 
--        for( i = 0; i <= m_maxval; i++ )
-+        for (int i = 0; i <= m_maxval; i++)
-             gray_palette[i] = (uchar)((i*255/m_maxval)^(m_bpp == 1 ? 255 : 0));
- 
-         FillGrayPalette( palette, m_bpp==1 ? 1 : 8 , m_bpp == 1 );
-@@ -229,12 +238,16 @@ bool  PxMDecoder::readData( Mat& img )
-         {
-         ////////////////////////// 1 BPP /////////////////////////
-         case 1:
-+            CV_Assert(CV_MAT_DEPTH(m_type) == CV_8U);
-             if( !m_binary )
-             {
--                for( y = 0; y < m_height; y++, data += img.step )
-+                AutoBuffer<uchar> _src(m_width);
-+                uchar* src = _src;
-+
-+                for (int y = 0; y < m_height; y++, data += img.step)
-                 {
--                    for( x = 0; x < m_width; x++ )
--                        src[x] = ReadNumber( m_strm, 1 ) != 0;
-+                    for (int x = 0; x < m_width; x++)
-+                        src[x] = ReadNumber(m_strm, 1) != 0;
- 
-                     if( color )
-                         FillColorRow8( data, src, m_width, palette );
-@@ -244,7 +257,10 @@ bool  PxMDecoder::readData( Mat& img )
-             }
-             else
-             {
--                for( y = 0; y < m_height; y++, data += img.step )
-+                AutoBuffer<uchar> _src(src_pitch);
-+                uchar* src = _src;
-+
-+                for (int y = 0; y < m_height; y++, data += img.step)
-                 {
-                     m_strm.getBytes( src, src_pitch );
- 
-@@ -260,13 +276,17 @@ bool  PxMDecoder::readData( Mat& img )
-         ////////////////////////// 8 BPP /////////////////////////
-         case 8:
-         case 24:
--            for( y = 0; y < m_height; y++, data += img.step )
-+        {
-+            AutoBuffer<uchar> _src(std::max<size_t>(width3*2, src_pitch));
-+            uchar* src = _src;
-+
-+            for (int y = 0; y < m_height; y++, data += img.step)
-             {
-                 if( !m_binary )
-                 {
--                    for( x = 0; x < width3; x++ )
-+                    for (int x = 0; x < width3; x++)
-                     {
--                        int code = ReadNumber( m_strm, INT_MAX );
-+                        int code = ReadNumber(m_strm);
-                         if( (unsigned)code > (unsigned)m_maxval ) code = m_maxval;
-                         if( bit_depth == 8 )
-                             src[x] = gray_palette[code];
-@@ -279,7 +299,7 @@ bool  PxMDecoder::readData( Mat& img )
-                     m_strm.getBytes( src, src_pitch );
-                     if( bit_depth == 16 && !isBigEndian() )
-                     {
--                        for( x = 0; x < width3; x++ )
-+                        for (int x = 0; x < width3; x++)
-                         {
-                             uchar v = src[x * 2];
-                             src[x * 2] = src[x * 2 + 1];
-@@ -290,7 +310,7 @@ bool  PxMDecoder::readData( Mat& img )
- 
-                 if( img.depth() == CV_8U && bit_depth == 16 )
-                 {
--                    for( x = 0; x < width3; x++ )
-+                    for (int x = 0; x < width3; x++)
-                     {
-                         int v = ((ushort *)src)[x];
-                         src[x] = (uchar)(v >> 8);
-@@ -331,12 +351,19 @@ bool  PxMDecoder::readData( Mat& img )
-             }
-             result = true;
-             break;
-+        }
-         default:
--            assert(0);
-+            CV_ErrorNoReturn(Error::StsError, "m_bpp is not supported");
-         }
-     }
--    catch(...)
-+    catch (const cv::Exception&)
-+    {
-+        throw;
-+    }
-+    catch (...)
-     {
-+        std::cerr << "PXM::readData(): unknown exception" << std::endl << std::flush;
-+        throw;
-     }
- 
-     return result;
-@@ -412,8 +439,9 @@ bool  PxMEncoder::write( const Mat& img, const std::vector<int>& params )
-     char* buffer = _buffer;
- 
-     // write header;
--    sprintf( buffer, "P%c\n%d %d\n%d\n",
-+    sprintf( buffer, "P%c\n# Generated by OpenCV %s\n%d %d\n%d\n",
-              '2' + (channels > 1 ? 1 : 0) + (isBinary ? 3 : 0),
-+             CV_VERSION,
-              width, height, (1 << depth) - 1 );
- 
-     strm.putBytes( buffer, (int)strlen(buffer) );
-diff --git a/modules/imgcodecs/src/loadsave.cpp b/modules/imgcodecs/src/loadsave.cpp
-index 3b2366217..5ee4ca354 100644
---- a/modules/imgcodecs/src/loadsave.cpp
-+++ b/modules/imgcodecs/src/loadsave.cpp
-@@ -55,6 +55,27 @@
- /****************************************************************************************\
- *                                      Image Codecs                                      *
- \****************************************************************************************/
-+
-+namespace cv {
-+
-+// TODO Add runtime configuration
-+#define CV_IO_MAX_IMAGE_PARAMS (50)
-+#define CV_IO_MAX_IMAGE_WIDTH (1<<20)
-+#define CV_IO_MAX_IMAGE_HEIGHT (1<<20)
-+#define CV_IO_MAX_IMAGE_PIXELS (1<<30) // 1 Gigapixel
-+
-+static Size validateInputImageSize(const Size& size)
-+{
-+    CV_Assert(size.width > 0);
-+    CV_Assert(size.width <= CV_IO_MAX_IMAGE_WIDTH);
-+    CV_Assert(size.height > 0);
-+    CV_Assert(size.height <= CV_IO_MAX_IMAGE_HEIGHT);
-+    uint64 pixels = (uint64)size.width * (uint64)size.height;
-+    CV_Assert(pixels <= CV_IO_MAX_IMAGE_PIXELS);
-+    return size;
-+}
-+
-+
- namespace {
- 
- class ByteStreamBuffer: public std::streambuf
-@@ -94,9 +115,6 @@ protected:
- 
- }
- 
--namespace cv
--{
--
- /**
-  * @struct ImageCodecInitializer
-  *
-@@ -408,14 +426,26 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 )
-     /// set the filename in the driver
-     decoder->setSource( filename );
- 
--   // read the header to make sure it succeeds
--   if( !decoder->readHeader() )
-+    try
-+    {
-+        // read the header to make sure it succeeds
-+        if( !decoder->readHeader() )
-+            return 0;
-+    }
-+    catch (const cv::Exception& e)
-+    {
-+        std::cerr << "imread_('" << filename << "'): can't read header: " << e.what() << std::endl << std::flush;
-         return 0;
-+    }
-+    catch (...)
-+    {
-+        std::cerr << "imread_('" << filename << "'): can't read header: unknown exception" << std::endl << std::flush;
-+        return 0;
-+    }
-+
- 
-     // established the required input image size
--    CvSize size;
--    size.width = decoder->width();
--    size.height = decoder->height();
-+    Size size = validateInputImageSize(Size(decoder->width(), decoder->height()));
- 
-     // grab the decoded type
-     int type = decoder->type();
-@@ -451,7 +481,21 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 )
-     }
- 
-     // read the image data
--    if( !decoder->readData( *data ))
-+    bool success = false;
-+    try
-+    {
-+        if (decoder->readData(*data))
-+            success = true;
-+    }
-+    catch (const cv::Exception& e)
-+    {
-+        std::cerr << "imread_('" << filename << "'): can't read data: " << e.what() << std::endl << std::flush;
-+    }
-+    catch (...)
-+    {
-+        std::cerr << "imread_('" << filename << "'): can't read data: unknown exception" << std::endl << std::flush;
-+    }
-+    if (!success)
-     {
-         cvReleaseImage( &image );
-         cvReleaseMat( &matrix );
-@@ -504,8 +548,22 @@ imreadmulti_(const String& filename, int flags, std::vector<Mat>& mats)
-     decoder->setSource(filename);
- 
-     // read the header to make sure it succeeds
--    if (!decoder->readHeader())
-+    try
-+    {
-+        // read the header to make sure it succeeds
-+        if( !decoder->readHeader() )
-+            return 0;
-+    }
-+    catch (const cv::Exception& e)
-+    {
-+        std::cerr << "imreadmulti_('" << filename << "'): can't read header: " << e.what() << std::endl << std::flush;
-         return 0;
-+    }
-+    catch (...)
-+    {
-+        std::cerr << "imreadmulti_('" << filename << "'): can't read header: unknown exception" << std::endl << std::flush;
-+        return 0;
-+    }
- 
-     for (;;)
-     {
-@@ -523,17 +581,32 @@ imreadmulti_(const String& filename, int flags, std::vector<Mat>& mats)
-                 type = CV_MAKETYPE(CV_MAT_DEPTH(type), 1);
-         }
- 
-+        // established the required input image size
-+        Size size = validateInputImageSize(Size(decoder->width(), decoder->height()));
-+
-         // read the image data
--        Mat mat(decoder->height(), decoder->width(), type);
--        if (!decoder->readData(mat))
-+        Mat mat(size.height, size.width, type);
-+        bool success = false;
-+        try
-         {
--            // optionally rotate the data if EXIF' orientation flag says so
--            if( (flags & IMREAD_IGNORE_ORIENTATION) == 0 && flags != IMREAD_UNCHANGED )
--            {
--                ApplyExifOrientation(filename, mat);
--            }
--
-+            if (decoder->readData(mat))
-+                success = true;
-+        }
-+        catch (const cv::Exception& e)
-+        {
-+            std::cerr << "imreadmulti_('" << filename << "'): can't read data: " << e.what() << std::endl << std::flush;
-+        }
-+        catch (...)
-+        {
-+            std::cerr << "imreadmulti_('" << filename << "'): can't read data: unknown exception" << std::endl << std::flush;
-+        }
-+        if (!success)
-             break;
-+
-+        // optionally rotate the data if EXIF' orientation flag says so
-+        if( (flags & IMREAD_IGNORE_ORIENTATION) == 0 && flags != IMREAD_UNCHANGED )
-+        {
-+            ApplyExifOrientation(filename, mat);
-         }
- 
-         mats.push_back(mat);
-@@ -616,6 +689,7 @@ static bool imwrite_( const String& filename, const Mat& image,
-     }
- 
-     encoder->setDestination( filename );
-+    CV_Assert(params.size() <= CV_IO_MAX_IMAGE_PARAMS*2);
-     bool code = encoder->write( *pimage, params );
- 
-     //    CV_Assert( code );
-@@ -663,22 +737,35 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 )
-         decoder->setSource(filename);
-     }
- 
--    if( !decoder->readHeader() )
-+    bool success = false;
-+    try
-+    {
-+        if (decoder->readHeader())
-+            success = true;
-+    }
-+    catch (const cv::Exception& e)
-+    {
-+        std::cerr << "imdecode_('" << filename << "'): can't read header: " << e.what() << std::endl << std::flush;
-+    }
-+    catch (...)
-+    {
-+        std::cerr << "imdecode_('" << filename << "'): can't read header: unknown exception" << std::endl << std::flush;
-+    }
-+    if (!success)
-     {
-         decoder.release();
--        if ( !filename.empty() )
-+        if (!filename.empty())
-         {
--            if ( remove(filename.c_str()) != 0 )
-+            if (0 != remove(filename.c_str()))
-             {
--                CV_Error( CV_StsError, "unable to remove temporary file" );
-+                std::cerr << "unable to remove temporary file:" << filename << std::endl << std::flush;
-             }
-         }
-         return 0;
-     }
- 
--    CvSize size;
--    size.width = decoder->width();
--    size.height = decoder->height();
-+    // established the required input image size
-+    Size size = validateInputImageSize(Size(decoder->width(), decoder->height()));
- 
-     int type = decoder->type();
-     if( (flags & IMREAD_LOAD_GDAL) != IMREAD_LOAD_GDAL && flags != IMREAD_UNCHANGED )
-@@ -712,17 +799,30 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 )
-         temp = cvarrToMat(image);
-     }
- 
--    bool code = decoder->readData( *data );
-+    success = false;
-+    try
-+    {
-+        if (decoder->readData(*data))
-+            success = true;
-+    }
-+    catch (const cv::Exception& e)
-+    {
-+        std::cerr << "imdecode_('" << filename << "'): can't read data: " << e.what() << std::endl << std::flush;
-+    }
-+    catch (...)
-+    {
-+        std::cerr << "imdecode_('" << filename << "'): can't read data: unknown exception" << std::endl << std::flush;
-+    }
-     decoder.release();
--    if ( !filename.empty() )
-+    if (!filename.empty())
-     {
--        if ( remove(filename.c_str()) != 0 )
-+        if (0 != remove(filename.c_str()))
-         {
--            CV_Error( CV_StsError, "unable to remove temporary file" );
-+            std::cerr << "unable to remove temporary file:" << filename << std::endl << std::flush;
-         }
-     }
- 
--    if( !code )
-+    if (!success)
-     {
-         cvReleaseImage( &image );
-         cvReleaseMat( &matrix );
-@@ -859,7 +959,7 @@ cvSaveImage( const char* filename, const CvArr* arr, const int* _params )
-     if( _params )
-     {
-         for( ; _params[i] > 0; i += 2 )
--            ;
-+            CV_Assert(i < CV_IO_MAX_IMAGE_PARAMS*2); // Limit number of params for security reasons
-     }
-     return cv::imwrite_(filename, cv::cvarrToMat(arr),
-         i > 0 ? std::vector<int>(_params, _params+i) : std::vector<int>(),
-@@ -890,7 +990,7 @@ cvEncodeImage( const char* ext, const CvArr* arr, const int* _params )
-     if( _params )
-     {
-         for( ; _params[i] > 0; i += 2 )
--            ;
-+            CV_Assert(i < CV_IO_MAX_IMAGE_PARAMS*2); // Limit number of params for security reasons
-     }
-     cv::Mat img = cv::cvarrToMat(arr);
-     if( CV_IS_IMAGE(arr) && ((const IplImage*)arr)->origin == IPL_ORIGIN_BL )
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch
index a22b04a..5270b8c 100644
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch
@@ -19,29 +19,21 @@
  modules/ts/include/opencv2/ts/ts_ext.hpp   | 2 +-
  3 files changed, 5 insertions(+), 5 deletions(-)
 
-diff --git a/modules/ts/include/opencv2/ts.hpp b/modules/ts/include/opencv2/ts.hpp
-index 41a76b13e..205646140 100644
---- a/modules/ts/include/opencv2/ts.hpp
-+++ b/modules/ts/include/opencv2/ts.hpp
-@@ -555,7 +555,7 @@ protected:
+Index: git/modules/ts/include/opencv2/ts.hpp
+===================================================================
+--- git.orig/modules/ts/include/opencv2/ts.hpp
++++ git/modules/ts/include/opencv2/ts.hpp
+@@ -608,7 +608,7 @@ protected:
      }
  };
  
 -extern uint64 param_seed;
 +CV_EXPORTS extern uint64 param_seed;
  
- struct CV_EXPORTS DefaultRngAuto
+ struct DefaultRngAuto
  {
-@@ -611,14 +611,14 @@ CV_EXPORTS std::string findDataFile(const std::string& relative_path, bool requi
- 
- #ifdef HAVE_OPENCL
- namespace ocl {
--void dumpOpenCLDevice();
-+CV_EXPORTS void dumpOpenCLDevice();
- }
- #define TEST_DUMP_OCL_INFO cvtest::ocl::dumpOpenCLDevice();
- #else
- #define TEST_DUMP_OCL_INFO
+@@ -671,7 +671,7 @@ private:
+ #endif
  #endif
  
 -void parseCustomOptions(int argc, char **argv);
@@ -49,10 +41,10 @@
  
  #define CV_TEST_INIT0_NOOP (void)0
  
-diff --git a/modules/ts/include/opencv2/ts/ocl_test.hpp b/modules/ts/include/opencv2/ts/ocl_test.hpp
-index 54b33ece8..ef56bf9ef 100644
---- a/modules/ts/include/opencv2/ts/ocl_test.hpp
-+++ b/modules/ts/include/opencv2/ts/ocl_test.hpp
+Index: git/modules/ts/include/opencv2/ts/ocl_test.hpp
+===================================================================
+--- git.orig/modules/ts/include/opencv2/ts/ocl_test.hpp
++++ git/modules/ts/include/opencv2/ts/ocl_test.hpp
 @@ -82,7 +82,7 @@ inline UMat ToUMat(InputArray src)
      return dst;
  }
@@ -62,19 +54,16 @@
  
  #define MAX_VALUE 357
  
-diff --git a/modules/ts/include/opencv2/ts/ts_ext.hpp b/modules/ts/include/opencv2/ts/ts_ext.hpp
-index 0bdd346dd..2cd34dfce 100644
---- a/modules/ts/include/opencv2/ts/ts_ext.hpp
-+++ b/modules/ts/include/opencv2/ts/ts_ext.hpp
+Index: git/modules/ts/include/opencv2/ts/ts_ext.hpp
+===================================================================
+--- git.orig/modules/ts/include/opencv2/ts/ts_ext.hpp
++++ git/modules/ts/include/opencv2/ts/ts_ext.hpp
 @@ -9,7 +9,7 @@
  #define OPENCV_TS_EXT_HPP
  
  namespace cvtest {
 -void checkIppStatus();
 +CV_EXPORTS void checkIppStatus();
- }
- 
- #define CV_TEST_INIT \
--- 
-2.13.4
-
+ extern bool skipUnstableTests;
+ extern bool runBigDataTests;
+ extern int testThreads;
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-imgproc-test-add-checks-for-remove-call.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-imgproc-test-add-checks-for-remove-call.patch
deleted file mode 100644
index 5f4a60c..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-imgproc-test-add-checks-for-remove-call.patch
+++ /dev/null
@@ -1,186 +0,0 @@
-Upstream-Status: Backport [https://github.com/opencv/opencv/pull/9376/commits/78a310630fb0a1f6d089576202343e672f27609d]
-
-Fix CVEs for opencv 3.3.
-
-* CVE-2017-12597
-* CVE-2017-12598
-* CVE-2017-12599
-* CVE-2017-12600
-* CVE-2017-12601
-* CVE-2017-12602
-* CVE-2017-12603
-* CVE-2017-12604
-* CVE-2017-12605
-* CVE-2017-12606
-* CVE-2017-12862
-* CVE-2017-12863
-* CVE-2017-12864
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-From 78a310630fb0a1f6d089576202343e672f27609d Mon Sep 17 00:00:00 2001
-From: Alexander Alekhin <alexander.alekhin@intel.com>
-Date: Wed, 16 Aug 2017 13:53:12 +0300
-Subject: [PATCH 3/3] imgproc(test): add checks for remove() call
-
----
- modules/imgcodecs/test/test_grfmt.cpp      |  2 +-
- modules/imgcodecs/test/test_jpeg.cpp       | 12 ++++++------
- modules/imgcodecs/test/test_png.cpp        |  2 +-
- modules/imgcodecs/test/test_read_write.cpp |  4 ++--
- modules/imgcodecs/test/test_tiff.cpp       |  8 ++++----
- modules/imgcodecs/test/test_webp.cpp       |  6 +++---
- 6 files changed, 17 insertions(+), 17 deletions(-)
-
-diff --git a/modules/imgcodecs/test/test_grfmt.cpp b/modules/imgcodecs/test/test_grfmt.cpp
-index 64a0c1e3a..74b72c3b3 100644
---- a/modules/imgcodecs/test/test_grfmt.cpp
-+++ b/modules/imgcodecs/test/test_grfmt.cpp
-@@ -175,7 +175,7 @@ TEST_P(Imgcodecs_ExtSize, write_imageseq)
-             EXPECT_LT(n, 1.);
-             EXPECT_PRED_FORMAT2(cvtest::MatComparator(0, 0), img, img_gt);
-         }
--        remove(filename.c_str());
-+        EXPECT_EQ(0, remove(filename.c_str()));
-     }
- }
- 
-diff --git a/modules/imgcodecs/test/test_jpeg.cpp b/modules/imgcodecs/test/test_jpeg.cpp
-index 5546f2d91..6ddb02840 100644
---- a/modules/imgcodecs/test/test_jpeg.cpp
-+++ b/modules/imgcodecs/test/test_jpeg.cpp
-@@ -123,8 +123,8 @@ TEST(Imgcodecs_Jpeg, encode_decode_progressive_jpeg)
- 
-     EXPECT_EQ(0, cvtest::norm(img_jpg_progressive, img_jpg_normal, NORM_INF));
- 
--    remove(output_progressive.c_str());
--    remove(output_normal.c_str());
-+    EXPECT_EQ(0, remove(output_progressive.c_str()));
-+    EXPECT_EQ(0, remove(output_normal.c_str()));
- }
- 
- TEST(Imgcodecs_Jpeg, encode_decode_optimize_jpeg)
-@@ -148,8 +148,8 @@ TEST(Imgcodecs_Jpeg, encode_decode_optimize_jpeg)
- 
-     EXPECT_EQ(0, cvtest::norm(img_jpg_optimized, img_jpg_normal, NORM_INF));
- 
--    remove(output_optimized.c_str());
--    remove(output_normal.c_str());
-+    EXPECT_EQ(0, remove(output_optimized.c_str()));
-+    EXPECT_EQ(0, remove(output_normal.c_str()));
- }
- 
- TEST(Imgcodecs_Jpeg, encode_decode_rst_jpeg)
-@@ -173,8 +173,8 @@ TEST(Imgcodecs_Jpeg, encode_decode_rst_jpeg)
- 
-     EXPECT_EQ(0, cvtest::norm(img_jpg_rst, img_jpg_normal, NORM_INF));
- 
--    remove(output_rst.c_str());
--    remove(output_normal.c_str());
-+    EXPECT_EQ(0, remove(output_rst.c_str()));
-+    EXPECT_EQ(0, remove(output_normal.c_str()));
- }
- 
- #endif // HAVE_JPEG
-diff --git a/modules/imgcodecs/test/test_png.cpp b/modules/imgcodecs/test/test_png.cpp
-index c46f90119..4e97043e1 100644
---- a/modules/imgcodecs/test/test_png.cpp
-+++ b/modules/imgcodecs/test/test_png.cpp
-@@ -17,7 +17,7 @@ TEST(Imgcodecs_Png, write_big)
-     EXPECT_EQ(13043, img.cols);
-     EXPECT_EQ(13917, img.rows);
-     ASSERT_NO_THROW(imwrite(dst_file, img));
--    remove(dst_file.c_str());
-+    EXPECT_EQ(0, remove(dst_file.c_str()));
- }
- 
- TEST(Imgcodecs_Png, encode)
-diff --git a/modules/imgcodecs/test/test_read_write.cpp b/modules/imgcodecs/test/test_read_write.cpp
-index 38f10225f..5119813bf 100644
---- a/modules/imgcodecs/test/test_read_write.cpp
-+++ b/modules/imgcodecs/test/test_read_write.cpp
-@@ -50,7 +50,7 @@ TEST(Imgcodecs_Image, read_write_bmp)
-         psnr = cvtest::PSNR(buf_loaded, image);
-         EXPECT_GT(psnr, thresDbell);
- 
--        remove(dst_name.c_str());
-+        EXPECT_EQ(0, remove(dst_name.c_str()));
-     }
- }
- 
-@@ -95,7 +95,7 @@ TEST_P(Imgcodecs_Image, read_write)
-     psnr = cvtest::PSNR(buf_loaded, image);
-     EXPECT_GT(psnr, thresDbell);
- 
--    remove(full_name.c_str());
-+    EXPECT_EQ(0, remove(full_name.c_str()));
- }
- 
- const string exts[] = {
-diff --git a/modules/imgcodecs/test/test_tiff.cpp b/modules/imgcodecs/test/test_tiff.cpp
-index 0264da4cd..6ef0c1748 100644
---- a/modules/imgcodecs/test/test_tiff.cpp
-+++ b/modules/imgcodecs/test/test_tiff.cpp
-@@ -41,8 +41,8 @@ TEST(Imgcodecs_Tiff, decode_tile16384x16384)
-         // not enough memory
-     }
- 
--    remove(file3.c_str());
--    remove(file4.c_str());
-+    EXPECT_EQ(0, remove(file3.c_str()));
-+    EXPECT_EQ(0, remove(file4.c_str()));
- }
- 
- TEST(Imgcodecs_Tiff, write_read_16bit_big_little_endian)
-@@ -88,7 +88,7 @@ TEST(Imgcodecs_Tiff, write_read_16bit_big_little_endian)
-         EXPECT_EQ(0xDEAD, img.at<ushort>(0,0));
-         EXPECT_EQ(0xBEEF, img.at<ushort>(0,1));
- 
--        remove(filename.c_str());
-+        EXPECT_EQ(0, remove(filename.c_str()));
-     }
- }
- 
-@@ -143,7 +143,7 @@ TEST(Imgcodecs_Tiff, decode_infinite_rowsperstrip)
- 
-     EXPECT_NO_THROW(cv::imread(filename, IMREAD_UNCHANGED));
- 
--    remove(filename.c_str());
-+    EXPECT_EQ(0, remove(filename.c_str()));
- }
- 
- //==================================================================================================
-diff --git a/modules/imgcodecs/test/test_webp.cpp b/modules/imgcodecs/test/test_webp.cpp
-index 6d40ce21e..d82fdd289 100644
---- a/modules/imgcodecs/test/test_webp.cpp
-+++ b/modules/imgcodecs/test/test_webp.cpp
-@@ -44,7 +44,7 @@ TEST(Imgcodecs_WebP, encode_decode_lossless_webp)
-         }
-     }
- 
--    remove(output.c_str());
-+    EXPECT_EQ(0, remove(output.c_str()));
- 
-     cv::Mat decode = cv::imdecode(buf, IMREAD_COLOR);
-     ASSERT_FALSE(decode.empty());
-@@ -71,7 +71,7 @@ TEST(Imgcodecs_WebP, encode_decode_lossy_webp)
- 
-         EXPECT_NO_THROW(cv::imwrite(output, img, params));
-         cv::Mat img_webp = cv::imread(output);
--        remove(output.c_str());
-+        EXPECT_EQ(0, remove(output.c_str()));
-         EXPECT_FALSE(img_webp.empty());
-         EXPECT_EQ(3,   img_webp.channels());
-         EXPECT_EQ(512, img_webp.cols);
-@@ -96,7 +96,7 @@ TEST(Imgcodecs_WebP, encode_decode_with_alpha_webp)
- 
-     EXPECT_NO_THROW(cv::imwrite(output, img));
-     cv::Mat img_webp = cv::imread(output);
--    remove(output.c_str());
-+    EXPECT_EQ(0, remove(output.c_str()));
-     EXPECT_FALSE(img_webp.empty());
-     EXPECT_EQ(4,   img_webp.channels());
-     EXPECT_EQ(512, img_webp.cols);
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/CVE-2017-14136.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/CVE-2017-14136.patch
deleted file mode 100644
index 7ad50a2..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/CVE-2017-14136.patch
+++ /dev/null
@@ -1,288 +0,0 @@
-Upstream-Status: Backport [https://github.com/opencv/opencv/pull/9448/commits/aacae20]
-
-Backport patch to fix CVE-2017-14136.
-
-Ref: https://github.com/opencv/opencv/issues/9443
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-From aacae2065744adb05e858d327198c7bbe7f452b0 Mon Sep 17 00:00:00 2001
-From: Alexander Alekhin <alexander.alekhin@intel.com>
-Date: Wed, 23 Aug 2017 15:15:27 +0300
-Subject: [PATCH] imgcodesc: fix code problems with integer overflow / address
- arithmetic / UB
-
----
- modules/imgcodecs/src/grfmt_bmp.cpp      |  8 ++---
- modules/imgcodecs/src/grfmt_exr.cpp      | 10 +++----
- modules/imgcodecs/src/grfmt_jpeg.cpp     |  2 +-
- modules/imgcodecs/src/grfmt_jpeg2000.cpp |  6 ++--
- modules/imgcodecs/src/grfmt_pam.cpp      |  2 +-
- modules/imgcodecs/src/grfmt_sunras.cpp   |  6 ++--
- modules/imgcodecs/src/utils.cpp          | 51 +++++++++++++++++++-------------
- modules/imgcodecs/src/utils.hpp          |  2 ++
- 8 files changed, 50 insertions(+), 37 deletions(-)
-
-diff --git a/modules/imgcodecs/src/grfmt_bmp.cpp b/modules/imgcodecs/src/grfmt_bmp.cpp
-index 257f97c2d8b..69768e276a3 100644
---- a/modules/imgcodecs/src/grfmt_bmp.cpp
-+++ b/modules/imgcodecs/src/grfmt_bmp.cpp
-@@ -193,7 +193,7 @@ bool  BmpDecoder::readHeader()
- bool  BmpDecoder::readData( Mat& img )
- {
-     uchar* data = img.ptr();
--    int step = (int)img.step;
-+    int step = validateToInt(img.step);
-     bool color = img.channels() > 1;
-     uchar  gray_palette[256] = {0};
-     bool   result = false;
-@@ -206,7 +206,7 @@ bool  BmpDecoder::readData( Mat& img )
- 
-     if( m_origin == IPL_ORIGIN_BL )
-     {
--        data += (m_height - 1)*step;
-+        data += (m_height - 1)*(size_t)step;
-         step = -step;
-     }
- 
-@@ -530,7 +530,7 @@ bool  BmpEncoder::write( const Mat& img, const std::vector<int>& )
-     int  bitmapHeaderSize = 40;
-     int  paletteSize = channels > 1 ? 0 : 1024;
-     int  headerSize = 14 /* fileheader */ + bitmapHeaderSize + paletteSize;
--    int  fileSize = fileStep*height + headerSize;
-+    size_t fileSize = (size_t)fileStep*height + headerSize;
-     PaletteEntry palette[256];
- 
-     if( m_buf )
-@@ -540,7 +540,7 @@ bool  BmpEncoder::write( const Mat& img, const std::vector<int>& )
-     strm.putBytes( fmtSignBmp, (int)strlen(fmtSignBmp) );
- 
-     // write file header
--    strm.putDWord( fileSize ); // file size
-+    strm.putDWord( validateToInt(fileSize) ); // file size
-     strm.putDWord( 0 );
-     strm.putDWord( headerSize );
- 
-diff --git a/modules/imgcodecs/src/grfmt_exr.cpp b/modules/imgcodecs/src/grfmt_exr.cpp
-index 0d2ae9fa7d2..78ffe6c7668 100644
---- a/modules/imgcodecs/src/grfmt_exr.cpp
-+++ b/modules/imgcodecs/src/grfmt_exr.cpp
-@@ -195,7 +195,7 @@ bool  ExrDecoder::readData( Mat& img )
-     bool color = img.channels() > 1;
- 
-     uchar* data = img.ptr();
--    int step = img.step;
-+    size_t step = img.step;
-     bool justcopy = m_native_depth;
-     bool chromatorgb = false;
-     bool rgbtogray = false;
-@@ -203,8 +203,8 @@ bool  ExrDecoder::readData( Mat& img )
-     FrameBuffer frame;
-     int xsample[3] = {1, 1, 1};
-     char *buffer;
--    int xstep;
--    int ystep;
-+    size_t xstep = 0;
-+    size_t ystep = 0;
- 
-     xstep = m_native_depth ? 4 : 1;
- 
-@@ -593,7 +593,7 @@ bool  ExrEncoder::write( const Mat& img, const std::vector<int>& )
-     bool issigned = depth == CV_8S || depth == CV_16S || depth == CV_32S;
-     bool isfloat = depth == CV_32F || depth == CV_64F;
-     depth = CV_ELEM_SIZE1(depth)*8;
--    const int step = img.step;
-+    const size_t step = img.step;
- 
-     Header header( width, height );
-     Imf::PixelType type;
-@@ -623,7 +623,7 @@ bool  ExrEncoder::write( const Mat& img, const std::vector<int>& )
-     FrameBuffer frame;
- 
-     char *buffer;
--    int bufferstep;
-+    size_t bufferstep;
-     int size;
-     if( type == FLOAT && depth == 32 )
-     {
-diff --git a/modules/imgcodecs/src/grfmt_jpeg.cpp b/modules/imgcodecs/src/grfmt_jpeg.cpp
-index ce942ca1995..caf768d2569 100644
---- a/modules/imgcodecs/src/grfmt_jpeg.cpp
-+++ b/modules/imgcodecs/src/grfmt_jpeg.cpp
-@@ -396,7 +396,7 @@ int my_jpeg_load_dht (struct jpeg_decompress_struct *info, unsigned char *dht,
- bool  JpegDecoder::readData( Mat& img )
- {
-     volatile bool result = false;
--    int step = (int)img.step;
-+    size_t step = img.step;
-     bool color = img.channels() > 1;
- 
-     if( m_state && m_width && m_height )
-diff --git a/modules/imgcodecs/src/grfmt_jpeg2000.cpp b/modules/imgcodecs/src/grfmt_jpeg2000.cpp
-index 950ec21375f..24dfb38bb9d 100644
---- a/modules/imgcodecs/src/grfmt_jpeg2000.cpp
-+++ b/modules/imgcodecs/src/grfmt_jpeg2000.cpp
-@@ -156,7 +156,7 @@ bool  Jpeg2KDecoder::readData( Mat& img )
-     bool result = false;
-     int color = img.channels() > 1;
-     uchar* data = img.ptr();
--    int step = (int)img.step;
-+    size_t step = img.step;
-     jas_stream_t* stream = (jas_stream_t*)m_stream;
-     jas_image_t* image = (jas_image_t*)m_image;
- 
-@@ -252,9 +252,9 @@ bool  Jpeg2KDecoder::readData( Mat& img )
-                         if( !jas_image_readcmpt( image, cmptlut[i], 0, 0, xend / xstep, yend / ystep, buffer ))
-                         {
-                             if( img.depth() == CV_8U )
--                                result = readComponent8u( data + i, buffer, step, cmptlut[i], maxval, offset, ncmpts );
-+                                result = readComponent8u( data + i, buffer, validateToInt(step), cmptlut[i], maxval, offset, ncmpts );
-                             else
--                                result = readComponent16u( ((unsigned short *)data) + i, buffer, step / 2, cmptlut[i], maxval, offset, ncmpts );
-+                                result = readComponent16u( ((unsigned short *)data) + i, buffer, validateToInt(step / 2), cmptlut[i], maxval, offset, ncmpts );
-                             if( !result )
-                             {
-                                 i = ncmpts;
-diff --git a/modules/imgcodecs/src/grfmt_pam.cpp b/modules/imgcodecs/src/grfmt_pam.cpp
-index 11195dc342c..8eb9e012309 100644
---- a/modules/imgcodecs/src/grfmt_pam.cpp
-+++ b/modules/imgcodecs/src/grfmt_pam.cpp
-@@ -479,7 +479,7 @@ bool  PAMDecoder::readData( Mat& img )
- {
-     uchar* data = img.ptr();
-     int target_channels = img.channels();
--    int imp_stride = (int)img.step;
-+    size_t imp_stride = img.step;
-     int sample_depth = CV_ELEM_SIZE1(m_type);
-     int src_elems_per_row = m_width*m_channels;
-     int src_stride = src_elems_per_row*sample_depth;
-diff --git a/modules/imgcodecs/src/grfmt_sunras.cpp b/modules/imgcodecs/src/grfmt_sunras.cpp
-index aca9b369318..6d448f94ed3 100644
---- a/modules/imgcodecs/src/grfmt_sunras.cpp
-+++ b/modules/imgcodecs/src/grfmt_sunras.cpp
-@@ -160,7 +160,7 @@ bool  SunRasterDecoder::readData( Mat& img )
- {
-     int color = img.channels() > 1;
-     uchar* data = img.ptr();
--    int step = (int)img.step;
-+    size_t step = img.step;
-     uchar  gray_palette[256] = {0};
-     bool   result = false;
-     int  src_pitch = ((m_width*m_bpp + 7)/8 + 1) & -2;
-@@ -308,11 +308,11 @@ bool  SunRasterDecoder::readData( Mat& img )
-                         code = m_strm.getByte();
- 
-                         if( color )
--                            data = FillUniColor( data, line_end, step, width3,
-+                            data = FillUniColor( data, line_end, validateToInt(step), width3,
-                                                  y, m_height, len,
-                                                  m_palette[code] );
-                         else
--                            data = FillUniGray( data, line_end, step, width3,
-+                            data = FillUniGray( data, line_end, validateToInt(step), width3,
-                                                 y, m_height, len,
-                                                 gray_palette[code] );
-                         if( y >= m_height )
-diff --git a/modules/imgcodecs/src/utils.cpp b/modules/imgcodecs/src/utils.cpp
-index 2ee5bafc712..474dae008ca 100644
---- a/modules/imgcodecs/src/utils.cpp
-+++ b/modules/imgcodecs/src/utils.cpp
-@@ -42,6 +42,13 @@
- #include "precomp.hpp"
- #include "utils.hpp"
- 
-+int validateToInt(size_t sz)
-+{
-+    int valueInt = (int)sz;
-+    CV_Assert((size_t)valueInt == sz);
-+    return valueInt;
-+}
-+
- #define  SCALE  14
- #define  cR  (int)(0.299*(1 << SCALE) + 0.5)
- #define  cG  (int)(0.587*(1 << SCALE) + 0.5)
-@@ -537,23 +544,25 @@ uchar* FillColorRow1( uchar* data, uchar* indices, int len, PaletteEntry* palett
- {
-     uchar* end = data + len*3;
- 
-+    const PaletteEntry p0 = palette[0], p1 = palette[1];
-+
-     while( (data += 24) < end )
-     {
-         int idx = *indices++;
--        *((PaletteEntry*)(data - 24)) = palette[(idx & 128) != 0];
--        *((PaletteEntry*)(data - 21)) = palette[(idx & 64) != 0];
--        *((PaletteEntry*)(data - 18)) = palette[(idx & 32) != 0];
--        *((PaletteEntry*)(data - 15)) = palette[(idx & 16) != 0];
--        *((PaletteEntry*)(data - 12)) = palette[(idx & 8) != 0];
--        *((PaletteEntry*)(data - 9)) = palette[(idx & 4) != 0];
--        *((PaletteEntry*)(data - 6)) = palette[(idx & 2) != 0];
--        *((PaletteEntry*)(data - 3)) = palette[(idx & 1) != 0];
-+        *((PaletteEntry*)(data - 24)) = (idx & 128) ? p1 : p0;
-+        *((PaletteEntry*)(data - 21)) = (idx & 64) ? p1 : p0;
-+        *((PaletteEntry*)(data - 18)) = (idx & 32) ? p1 : p0;
-+        *((PaletteEntry*)(data - 15)) = (idx & 16) ? p1 : p0;
-+        *((PaletteEntry*)(data - 12)) = (idx & 8) ? p1 : p0;
-+        *((PaletteEntry*)(data - 9)) = (idx & 4) ? p1 : p0;
-+        *((PaletteEntry*)(data - 6)) = (idx & 2) ? p1 : p0;
-+        *((PaletteEntry*)(data - 3)) = (idx & 1) ? p1 : p0;
-     }
- 
--    int idx = indices[0] << 24;
-+    int idx = indices[0];
-     for( data -= 24; data < end; data += 3, idx += idx )
-     {
--        PaletteEntry clr = palette[idx < 0];
-+        const PaletteEntry clr = (idx & 128) ? p1 : p0;
-         WRITE_PIX( data, clr );
-     }
- 
-@@ -565,23 +574,25 @@ uchar* FillGrayRow1( uchar* data, uchar* indices, int len, uchar* palette )
- {
-     uchar* end = data + len;
- 
-+    const uchar p0 = palette[0], p1 = palette[1];
-+
-     while( (data += 8) < end )
-     {
-         int idx = *indices++;
--        *((uchar*)(data - 8)) = palette[(idx & 128) != 0];
--        *((uchar*)(data - 7)) = palette[(idx & 64) != 0];
--        *((uchar*)(data - 6)) = palette[(idx & 32) != 0];
--        *((uchar*)(data - 5)) = palette[(idx & 16) != 0];
--        *((uchar*)(data - 4)) = palette[(idx & 8) != 0];
--        *((uchar*)(data - 3)) = palette[(idx & 4) != 0];
--        *((uchar*)(data - 2)) = palette[(idx & 2) != 0];
--        *((uchar*)(data - 1)) = palette[(idx & 1) != 0];
-+        *((uchar*)(data - 8)) = (idx & 128) ? p1 : p0;
-+        *((uchar*)(data - 7)) = (idx & 64) ? p1 : p0;
-+        *((uchar*)(data - 6)) = (idx & 32) ? p1 : p0;
-+        *((uchar*)(data - 5)) = (idx & 16) ? p1 : p0;
-+        *((uchar*)(data - 4)) = (idx & 8) ? p1 : p0;
-+        *((uchar*)(data - 3)) = (idx & 4) ? p1 : p0;
-+        *((uchar*)(data - 2)) = (idx & 2) ? p1 : p0;
-+        *((uchar*)(data - 1)) = (idx & 1) ? p1 : p0;
-     }
- 
--    int idx = indices[0] << 24;
-+    int idx = indices[0];
-     for( data -= 8; data < end; data++, idx += idx )
-     {
--        data[0] = palette[idx < 0];
-+        data[0] = (idx & 128) ? p1 : p0;
-     }
- 
-     return data;
-diff --git a/modules/imgcodecs/src/utils.hpp b/modules/imgcodecs/src/utils.hpp
-index cab10609db2..7af4c6174ee 100644
---- a/modules/imgcodecs/src/utils.hpp
-+++ b/modules/imgcodecs/src/utils.hpp
-@@ -42,6 +42,8 @@
- #ifndef _UTILS_H_
- #define _UTILS_H_
- 
-+int validateToInt(size_t step);
-+
- struct PaletteEntry
- {
-     unsigned char b, g, r, a;
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/already-exists.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/already-exists.patch
deleted file mode 100644
index 6e24f2d..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/already-exists.patch
+++ /dev/null
@@ -1,394 +0,0 @@
-From e4bf148cddf277834e57c9afeec8daff8378a655 Mon Sep 17 00:00:00 2001
-From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
-Date: Wed, 22 Nov 2017 15:27:07 +0100
-Subject: [PATCH] Fix: File already exists in database: caffe.proto
-
-Fixes error when importing python cv
-
-Upstream-status: Backport https://github.com/opencv/opencv/pull/10092
-Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
----
- modules/dnn/CMakeLists.txt                                | 6 +++---
- modules/dnn/src/caffe/caffe_importer.cpp                  | 1 -
- modules/dnn/src/caffe/caffe_io.cpp                        | 1 -
- modules/dnn/src/caffe/caffe_io.hpp                        | 2 +-
- modules/dnn/src/caffe/{caffe.proto => opencv-caffe.proto} | 0
- 5 files changed, 4 insertions(+), 6 deletions(-)
- rename modules/dnn/src/caffe/{caffe.proto => opencv-caffe.proto} (100%)
-
-diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt
-index c6329a742263..8ef00ef983ff 100644
---- a/modules/dnn/CMakeLists.txt
-+++ b/modules/dnn/CMakeLists.txt
-@@ -55,13 +55,13 @@ ocv_warnings_disable(CMAKE_CXX_FLAGS
- 
- if(PROTOBUF_UPDATE_FILES)
-   file(GLOB proto_files src/tensorflow/*.proto)
--  list(APPEND proto_files src/caffe/caffe.proto)
-+  list(APPEND proto_files src/caffe/opencv-caffe.proto)
-   PROTOBUF_GENERATE_CPP(Protobuf_HDRS Protobuf_SRCS ${proto_files})
- else()
-   file(GLOB fw_srcs ${CMAKE_CURRENT_SOURCE_DIR}/misc/tensorflow/*.cc)
-   file(GLOB fw_hdrs ${CMAKE_CURRENT_SOURCE_DIR}/misc/tensorflow/*.h)
--  list(APPEND fw_srcs ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe/caffe.pb.cc)
--  list(APPEND fw_hdrs ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe/caffe.pb.h)
-+  list(APPEND fw_srcs ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe/opencv-caffe.pb.cc)
-+  list(APPEND fw_hdrs ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe/opencv-caffe.pb.h)
-   list(APPEND Protobuf_SRCS ${fw_srcs})
-   list(APPEND Protobuf_HDRS ${fw_hdrs})
-   list(APPEND Protobuf_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/misc/caffe)
-diff --git a/modules/dnn/src/caffe/caffe_importer.cpp b/modules/dnn/src/caffe/caffe_importer.cpp
-index c075651b95b3..2c977c84b0f4 100644
---- a/modules/dnn/src/caffe/caffe_importer.cpp
-+++ b/modules/dnn/src/caffe/caffe_importer.cpp
-@@ -42,7 +42,6 @@
- #include "../precomp.hpp"
- 
- #ifdef HAVE_PROTOBUF
--#include "caffe.pb.h"
- 
- #include <iostream>
- #include <fstream>
-diff --git a/modules/dnn/src/caffe/caffe_io.cpp b/modules/dnn/src/caffe/caffe_io.cpp
-index 0f46ea77df9a..1d3c518f1328 100644
---- a/modules/dnn/src/caffe/caffe_io.cpp
-+++ b/modules/dnn/src/caffe/caffe_io.cpp
-@@ -99,7 +99,6 @@
- #include <fstream>
- #include <vector>
- 
--#include "caffe.pb.h"
- #include "caffe_io.hpp"
- #include "glog_emulator.hpp"
- 
-diff --git a/modules/dnn/src/caffe/caffe_io.hpp b/modules/dnn/src/caffe/caffe_io.hpp
-index 09bc5709a24e..f5912c3bcec1 100644
---- a/modules/dnn/src/caffe/caffe_io.hpp
-+++ b/modules/dnn/src/caffe/caffe_io.hpp
-@@ -91,7 +91,7 @@
- #define __OPENCV_DNN_CAFFE_IO_HPP__
- #ifdef HAVE_PROTOBUF
- 
--#include "caffe.pb.h"
-+#include "opencv-caffe.pb.h"
- 
- namespace cv {
- namespace dnn {
-diff --git a/modules/dnn/src/caffe/caffe.proto b/modules/dnn/src/caffe/opencv-caffe.proto
-similarity index 100%
-rename from modules/dnn/src/caffe/caffe.proto
-rename to modules/dnn/src/caffe/opencv-caffe.proto
-diff --git a/modules/dnn/src/layers/detection_output_layer.cpp b/modules/dnn/src/layers/detection_output_layer.cpp
-index 0b72326f7e7d..f413bad5b81a 100644
---- a/modules/dnn/src/layers/detection_output_layer.cpp
-+++ b/modules/dnn/src/layers/detection_output_layer.cpp
-@@ -44,7 +44,7 @@
- #include "layers_common.hpp"
- #include <float.h>
- #include <string>
--#include <caffe.pb.h>
-+#include <opencv-caffe.pb.h>
- 
- namespace cv
- {
-diff --git a/modules/dnn/src/caffe/caffe_importer.cpp b/modules/dnn/src/caffe/caffe_importer.cpp
-index 2c977c84b0f4..a1827a381117 100644
---- a/modules/dnn/src/caffe/caffe_importer.cpp
-+++ b/modules/dnn/src/caffe/caffe_importer.cpp
-@@ -78,8 +78,8 @@ static cv::String toString(const T &v)
- 
- class CaffeImporter : public Importer
- {
--    caffe::NetParameter net;
--    caffe::NetParameter netBinary;
-+    opencvcaffe::NetParameter net;
-+    opencvcaffe::NetParameter netBinary;
- 
- public:
- 
-@@ -197,7 +197,7 @@ public:
-         }
-     }
- 
--    void blobShapeFromProto(const caffe::BlobProto &pbBlob, MatShape& shape)
-+    void blobShapeFromProto(const opencvcaffe::BlobProto &pbBlob, MatShape& shape)
-     {
-         shape.clear();
-         if (pbBlob.has_num() || pbBlob.has_channels() || pbBlob.has_height() || pbBlob.has_width())
-@@ -209,7 +209,7 @@ public:
-         }
-         else if (pbBlob.has_shape())
-         {
--            const caffe::BlobShape &_shape = pbBlob.shape();
-+            const opencvcaffe::BlobShape &_shape = pbBlob.shape();
- 
-             for (int i = 0; i < _shape.dim_size(); i++)
-                 shape.push_back((int)_shape.dim(i));
-@@ -218,7 +218,7 @@ public:
-             CV_Error(Error::StsError, "Unknown shape of input blob");
-     }
- 
--    void blobFromProto(const caffe::BlobProto &pbBlob, cv::Mat &dstBlob)
-+    void blobFromProto(const opencvcaffe::BlobProto &pbBlob, cv::Mat &dstBlob)
-     {
-         MatShape shape;
-         blobShapeFromProto(pbBlob, shape);
-@@ -233,7 +233,7 @@ public:
-             dstData[i] = pbBlob.data(i);
-     }
- 
--    void extractBinaryLayerParms(const caffe::LayerParameter& layer, LayerParams& layerParams)
-+    void extractBinaryLayerParms(const opencvcaffe::LayerParameter& layer, LayerParams& layerParams)
-     {
-         const std::string &name = layer.name();
- 
-@@ -247,7 +247,7 @@ public:
-         if (li == netBinary.layer_size() || netBinary.layer(li).blobs_size() == 0)
-             return;
- 
--        const caffe::LayerParameter &binLayer = netBinary.layer(li);
-+        const opencvcaffe::LayerParameter &binLayer = netBinary.layer(li);
-         layerParams.blobs.resize(binLayer.blobs_size());
-         for (int bi = 0; bi < binLayer.blobs_size(); bi++)
-         {
-@@ -289,7 +289,7 @@ public:
- 
-         for (int li = 0; li < layersSize; li++)
-         {
--            const caffe::LayerParameter &layer = net.layer(li);
-+            const opencvcaffe::LayerParameter &layer = net.layer(li);
-             String name = layer.name();
-             String type = layer.type();
-             LayerParams layerParams;
-@@ -313,7 +313,7 @@ public:
-         addedBlobs.clear();
-     }
- 
--    void addOutput(const caffe::LayerParameter &layer, int layerId, int outNum)
-+    void addOutput(const opencvcaffe::LayerParameter &layer, int layerId, int outNum)
-     {
-         const std::string &name = layer.top(outNum);
- 
-diff --git a/modules/dnn/src/caffe/caffe_io.hpp b/modules/dnn/src/caffe/caffe_io.hpp
-index f5912c3bcec1..24cd5fa254eb 100644
---- a/modules/dnn/src/caffe/caffe_io.hpp
-+++ b/modules/dnn/src/caffe/caffe_io.hpp
-@@ -98,9 +98,9 @@ namespace dnn {
- 
- // Read parameters from a file into a NetParameter proto message.
- void ReadNetParamsFromTextFileOrDie(const char* param_file,
--                                    caffe::NetParameter* param);
-+                                    opencvcaffe::NetParameter* param);
- void ReadNetParamsFromBinaryFileOrDie(const char* param_file,
--                                      caffe::NetParameter* param);
-+                                      opencvcaffe::NetParameter* param);
- 
- }
- }
-diff --git a/modules/dnn/src/caffe/opencv-caffe.proto b/modules/dnn/src/caffe/opencv-caffe.proto
-index 3d23fb48ea6a..df4e1d3269ae 100644
---- a/modules/dnn/src/caffe/opencv-caffe.proto
-+++ b/modules/dnn/src/caffe/opencv-caffe.proto
-@@ -48,7 +48,7 @@
- 
- syntax = "proto2";
- 
--package caffe;
-+package opencvcaffe;
- 
- // Specifies the shape (dimensions) of a Blob.
- message BlobShape {
-diff --git a/modules/dnn/src/layers/detection_output_layer.cpp b/modules/dnn/src/layers/detection_output_layer.cpp
-index f413bad5b81a..832c257eebf9 100644
---- a/modules/dnn/src/layers/detection_output_layer.cpp
-+++ b/modules/dnn/src/layers/detection_output_layer.cpp
-@@ -72,7 +72,7 @@ public:
- 
-     int _backgroundLabelId;
- 
--    typedef caffe::PriorBoxParameter_CodeType CodeType;
-+    typedef opencvcaffe::PriorBoxParameter_CodeType CodeType;
-     CodeType _codeType;
- 
-     bool _varianceEncodedInTarget;
-@@ -85,7 +85,7 @@ public:
-     enum { _numAxes = 4 };
-     static const std::string _layerName;
- 
--    typedef std::map<int, std::vector<caffe::NormalizedBBox> > LabelBBox;
-+    typedef std::map<int, std::vector<opencvcaffe::NormalizedBBox> > LabelBBox;
- 
-     bool getParameterDict(const LayerParams &params,
-                           const std::string &parameterName,
-@@ -131,11 +131,11 @@ public:
-     {
-         String codeTypeString = params.get<String>("code_type").toLowerCase();
-         if (codeTypeString == "corner")
--            _codeType = caffe::PriorBoxParameter_CodeType_CORNER;
-+            _codeType = opencvcaffe::PriorBoxParameter_CodeType_CORNER;
-         else if (codeTypeString == "center_size")
--            _codeType = caffe::PriorBoxParameter_CodeType_CENTER_SIZE;
-+            _codeType = opencvcaffe::PriorBoxParameter_CodeType_CENTER_SIZE;
-         else
--            _codeType = caffe::PriorBoxParameter_CodeType_CORNER;
-+            _codeType = opencvcaffe::PriorBoxParameter_CodeType_CORNER;
-     }
- 
-     DetectionOutputLayerImpl(const LayerParams &params)
-@@ -215,7 +215,7 @@ public:
-             GetConfidenceScores(confidenceData, num, numPriors, _numClasses, allConfidenceScores);
- 
-             // Retrieve all prior bboxes
--            std::vector<caffe::NormalizedBBox> priorBBoxes;
-+            std::vector<opencvcaffe::NormalizedBBox> priorBBoxes;
-             std::vector<std::vector<float> > priorVariances;
-             GetPriorBBoxes(priorData, numPriors, priorBBoxes, priorVariances);
- 
-@@ -272,7 +272,7 @@ public:
-             for (size_t j = 0; j < indices.size(); ++j, ++count)
-             {
-                 int idx = indices[j];
--                const caffe::NormalizedBBox& decode_bbox = label_bboxes->second[idx];
-+                const opencvcaffe::NormalizedBBox& decode_bbox = label_bboxes->second[idx];
-                 outputsData[count * 7] = i;
-                 outputsData[count * 7 + 1] = label;
-                 outputsData[count * 7 + 2] = scores[idx];
-@@ -355,7 +355,7 @@ public:
- 
-     // Compute bbox size
-     template<bool normalized>
--    static float BBoxSize(const caffe::NormalizedBBox& bbox)
-+    static float BBoxSize(const opencvcaffe::NormalizedBBox& bbox)
-     {
-         if (bbox.xmax() < bbox.xmin() || bbox.ymax() < bbox.ymin())
-         {
-@@ -388,10 +388,10 @@ public:
-     // Decode a bbox according to a prior bbox
-     template<bool variance_encoded_in_target>
-     static void DecodeBBox(
--        const caffe::NormalizedBBox& prior_bbox, const std::vector<float>& prior_variance,
-+        const opencvcaffe::NormalizedBBox& prior_bbox, const std::vector<float>& prior_variance,
-         const CodeType code_type,
--        const bool clip_bbox, const caffe::NormalizedBBox& bbox,
--        caffe::NormalizedBBox& decode_bbox)
-+        const bool clip_bbox, const opencvcaffe::NormalizedBBox& bbox,
-+        opencvcaffe::NormalizedBBox& decode_bbox)
-     {
-         float bbox_xmin = variance_encoded_in_target ? bbox.xmin() : prior_variance[0] * bbox.xmin();
-         float bbox_ymin = variance_encoded_in_target ? bbox.ymin() : prior_variance[1] * bbox.ymin();
-@@ -399,13 +399,13 @@ public:
-         float bbox_ymax = variance_encoded_in_target ? bbox.ymax() : prior_variance[3] * bbox.ymax();
-         switch(code_type)
-         {
--            case caffe::PriorBoxParameter_CodeType_CORNER:
-+            case opencvcaffe::PriorBoxParameter_CodeType_CORNER:
-                 decode_bbox.set_xmin(prior_bbox.xmin() + bbox_xmin);
-                 decode_bbox.set_ymin(prior_bbox.ymin() + bbox_ymin);
-                 decode_bbox.set_xmax(prior_bbox.xmax() + bbox_xmax);
-                 decode_bbox.set_ymax(prior_bbox.ymax() + bbox_ymax);
-                 break;
--            case caffe::PriorBoxParameter_CodeType_CENTER_SIZE:
-+            case opencvcaffe::PriorBoxParameter_CodeType_CENTER_SIZE:
-             {
-                 float prior_width = prior_bbox.xmax() - prior_bbox.xmin();
-                 CV_Assert(prior_width > 0);
-@@ -431,7 +431,7 @@ public:
-         };
-         if (clip_bbox)
-         {
--            // Clip the caffe::NormalizedBBox such that the range for each corner is [0, 1]
-+            // Clip the opencvcaffe::NormalizedBBox such that the range for each corner is [0, 1]
-             decode_bbox.set_xmin(std::max(std::min(decode_bbox.xmin(), 1.f), 0.f));
-             decode_bbox.set_ymin(std::max(std::min(decode_bbox.ymin(), 1.f), 0.f));
-             decode_bbox.set_xmax(std::max(std::min(decode_bbox.xmax(), 1.f), 0.f));
-@@ -443,11 +443,11 @@ public:
- 
-     // Decode a set of bboxes according to a set of prior bboxes
-     static void DecodeBBoxes(
--        const std::vector<caffe::NormalizedBBox>& prior_bboxes,
-+        const std::vector<opencvcaffe::NormalizedBBox>& prior_bboxes,
-         const std::vector<std::vector<float> >& prior_variances,
-         const CodeType code_type, const bool variance_encoded_in_target,
--        const bool clip_bbox, const std::vector<caffe::NormalizedBBox>& bboxes,
--        std::vector<caffe::NormalizedBBox>& decode_bboxes)
-+        const bool clip_bbox, const std::vector<opencvcaffe::NormalizedBBox>& bboxes,
-+        std::vector<opencvcaffe::NormalizedBBox>& decode_bboxes)
-     {
-         CV_Assert(prior_bboxes.size() == prior_variances.size());
-         CV_Assert(prior_bboxes.size() == bboxes.size());
-@@ -470,7 +470,7 @@ public:
- 
-     // Decode all bboxes in a batch
-     static void DecodeBBoxesAll(const std::vector<LabelBBox>& all_loc_preds,
--        const std::vector<caffe::NormalizedBBox>& prior_bboxes,
-+        const std::vector<opencvcaffe::NormalizedBBox>& prior_bboxes,
-         const std::vector<std::vector<float> >& prior_variances,
-         const int num, const bool share_location,
-         const int num_loc_classes, const int background_label_id,
-@@ -503,10 +503,10 @@ public:
-     // Get prior bounding boxes from prior_data
-     //    prior_data: 1 x 2 x num_priors * 4 x 1 blob.
-     //    num_priors: number of priors.
--    //    prior_bboxes: stores all the prior bboxes in the format of caffe::NormalizedBBox.
-+    //    prior_bboxes: stores all the prior bboxes in the format of opencvcaffe::NormalizedBBox.
-     //    prior_variances: stores all the variances needed by prior bboxes.
-     static void GetPriorBBoxes(const float* priorData, const int& numPriors,
--                        std::vector<caffe::NormalizedBBox>& priorBBoxes,
-+                        std::vector<opencvcaffe::NormalizedBBox>& priorBBoxes,
-                         std::vector<std::vector<float> >& priorVariances)
-     {
-         priorBBoxes.clear(); priorBBoxes.resize(numPriors);
-@@ -514,7 +514,7 @@ public:
-         for (int i = 0; i < numPriors; ++i)
-         {
-             int startIdx = i * 4;
--            caffe::NormalizedBBox& bbox = priorBBoxes[i];
-+            opencvcaffe::NormalizedBBox& bbox = priorBBoxes[i];
-             bbox.set_xmin(priorData[startIdx]);
-             bbox.set_ymin(priorData[startIdx + 1]);
-             bbox.set_xmax(priorData[startIdx + 2]);
-@@ -565,7 +565,7 @@ public:
-                     {
-                         labelBBox[label].resize(numPredsPerClass);
-                     }
--                    caffe::NormalizedBBox& bbox = labelBBox[label][p];
-+                    opencvcaffe::NormalizedBBox& bbox = labelBBox[label][p];
-                     bbox.set_xmin(locData[startIdx + c * 4]);
-                     bbox.set_ymin(locData[startIdx + c * 4 + 1]);
-                     bbox.set_xmax(locData[startIdx + c * 4 + 2]);
-@@ -612,7 +612,7 @@ public:
-     //    nms_threshold: a threshold used in non maximum suppression.
-     //    top_k: if not -1, keep at most top_k picked indices.
-     //    indices: the kept indices of bboxes after nms.
--    static void ApplyNMSFast(const std::vector<caffe::NormalizedBBox>& bboxes,
-+    static void ApplyNMSFast(const std::vector<opencvcaffe::NormalizedBBox>& bboxes,
-           const std::vector<float>& scores, const float score_threshold,
-           const float nms_threshold, const float eta, const int top_k,
-           std::vector<int>& indices)
-@@ -674,10 +674,10 @@ public:
- 
-     // Compute the jaccard (intersection over union IoU) overlap between two bboxes.
-     template<bool normalized>
--    static float JaccardOverlap(const caffe::NormalizedBBox& bbox1,
--                         const caffe::NormalizedBBox& bbox2)
-+    static float JaccardOverlap(const opencvcaffe::NormalizedBBox& bbox1,
-+                         const opencvcaffe::NormalizedBBox& bbox2)
-     {
--        caffe::NormalizedBBox intersect_bbox;
-+        opencvcaffe::NormalizedBBox intersect_bbox;
-         if (bbox2.xmin() > bbox1.xmax() || bbox2.xmax() < bbox1.xmin() ||
-             bbox2.ymin() > bbox1.ymax() || bbox2.ymax() < bbox1.ymin())
-         {
-diff --git a/modules/dnn/src/caffe/caffe_io.cpp b/modules/dnn/src/caffe/caffe_io.cpp
-index 1d3c518f1328..3cf6e255aa60 100644
---- a/modules/dnn/src/caffe/caffe_io.cpp
-+++ b/modules/dnn/src/caffe/caffe_io.cpp
-@@ -107,7 +107,7 @@ namespace dnn {
- 
- using std::string;
- using std::map;
--using namespace caffe;
-+using namespace opencvcaffe;
- using namespace ::google::protobuf;
- using namespace ::google::protobuf::io;
- 
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch
index 3aeda7d..3ed3468 100644
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch
@@ -1,24 +1,25 @@
-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)
+Index: git/cmake/OpenCVGenPkgconfig.cmake
+===================================================================
+--- git.orig/cmake/OpenCVGenPkgconfig.cmake
++++ git/cmake/OpenCVGenPkgconfig.cmake
+@@ -31,7 +31,7 @@ macro(fix_prefix lst isown)
        get_filename_component(libdir "${item}" PATH)
-       get_filename_component(libname "${item}" NAME_WE)
-       string(REGEX REPLACE "^lib(.*)" "\\1" libname "${libname}")
+       get_filename_component(_libname "${item}" NAME)
+       ocv_get_libname(libname "${_libname}")
 -      list(APPEND _lst "-L${libdir}" "-l${libname}")
 +      list(APPEND _lst "-l${libname}")
      else()
        list(APPEND _lst "-l${item}")
      endif()
-@@ -66,10 +66,14 @@ ocv_list_unique(_3rdparty)
+@@ -124,11 +124,14 @@ ocv_list_unique(_extra)
+ ocv_list_unique(_3rdparty)
  
  set(OPENCV_PC_LIBS
-   "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
+-  "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
 +  "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
    "${_modules}"
  )
- if (BUILD_SHARED_LIBS)
+ if(BUILD_SHARED_LIBS)
 -  set(OPENCV_PC_LIBS_PRIVATE "${_extra}")
 +  set(OPENCV_PC_LIBS_PRIVATE
 +    "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/javagen.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/javagen.patch
deleted file mode 100644
index 56526ec..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/javagen.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Upstream-status: Inappropriate [OE specific] https://github.com/opencv/opencv/pull/10039#issuecomment-342539288
-
-Signed-off-by: Ricardo Ribalda <ricardo.ribalda@gmail.com>
-diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt
-index 74bc0ef04169..4622fbf9a5f1 100644
---- a/modules/java/CMakeLists.txt
-+++ b/modules/java/CMakeLists.txt
-@@ -291,7 +291,7 @@ foreach(java_file ${step3_input_files})
-   endif()
-   if(__configure)
-     configure_file("${java_file}" "${java_src_dir}/${output_name}" @ONLY)
--  elseif(NOT "${java_file}" MATCHES "${OpenCV_BINARY_DIR}/")
-+  elseif(EXISTS "${java_file}" AND NOT "${java_file}" MATCHES "${OpenCV_BINARY_DIR}/")
-     configure_file("${java_file}" "${java_src_dir}/${output_name}" COPYONLY)
-   else()
-     add_custom_command(OUTPUT "${java_src_dir}/${output_name}"
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/protobuf.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/protobuf.patch
deleted file mode 100644
index c63dc14..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/protobuf.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Upstream-status: Inappropriate [OE specific]
-
-Signed-off-by: Ricardo Ribalda <ricardo.ribalda@gmail.com>
-diff --git a/cmake/OpenCVFindLibProtobuf.cmake b/cmake/OpenCVFindLibProtobuf.cmake
-index b6ce1e7fd56b..e916ec0df2a6 100644
---- a/cmake/OpenCVFindLibProtobuf.cmake
-+++ b/cmake/OpenCVFindLibProtobuf.cmake
-@@ -7,21 +7,21 @@ OCV_OPTION(BUILD_PROTOBUF "Force to build libprotobuf from sources" ON)
- OCV_OPTION(PROTOBUF_UPDATE_FILES "Force to rebuild .proto files" OFF)
- 
- if(PROTOBUF_UPDATE_FILES)
--  if(NOT DEFINED Protobuf_PROTOC_EXECUTABLE)
-+  if(NOT DEFINED PROTOBUF_PROTOC_EXECUTABLE)
-     find_package(Protobuf QUIET)
-   endif()
--  if(DEFINED Protobuf_PROTOC_EXECUTABLE AND EXISTS ${Protobuf_PROTOC_EXECUTABLE})
--    message(STATUS "The protocol buffer compiler is found (${Protobuf_PROTOC_EXECUTABLE})")
-+  if(DEFINED PROTOBUF_PROTOC_EXECUTABLE AND EXISTS ${PROTOBUF_PROTOC_EXECUTABLE})
-+    message(STATUS "The protocol buffer compiler is found (${PROTOBUF_PROTOC_EXECUTABLE})")
-   else()
--    message(FATAL_ERROR "The protocol buffer compiler is not found (Protobuf_PROTOC_EXECUTABLE='${Protobuf_PROTOC_EXECUTABLE}')")
-+    message(FATAL_ERROR "The protocol buffer compiler is not found (PROTOBUF_PROTOC_EXECUTABLE='${PROTOBUF_PROTOC_EXECUTABLE}')")
-   endif()
- endif()
- 
--if(NOT BUILD_PROTOBUF AND NOT (DEFINED Protobuf_INCLUDE_DIRS AND DEFINED Protobuf_LIBRARIES))
-+if(NOT BUILD_PROTOBUF AND NOT (DEFINED PROTOBUF_INCLUDE_DIR AND DEFINED PROTOBUF_LIBRARIES))
-   find_package(Protobuf QUIET)
- endif()
- 
--if(Protobuf_FOUND)
-+if(PROTOBUF_FOUND OR (DEFINED PROTOBUF_INCLUDE_DIR AND DEFINED PROTOBUF_LIBRARIES))
-   # nothing
- else()
-   set(Protobuf_LIBRARIES libprotobuf)
-diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt
-index 2a71568d1a44..c6329a742263 100644
---- a/modules/dnn/CMakeLists.txt
-+++ b/modules/dnn/CMakeLists.txt
-@@ -7,7 +7,7 @@ if(DEFINED BUILD_opencv_dnn AND NOT BUILD_opencv_dnn)
- endif()
- 
- include(${OpenCV_SOURCE_DIR}/cmake/OpenCVFindLibProtobuf.cmake)
--if(NOT Protobuf_FOUND)
-+if(NOT PROTOBUF_FOUND)
-   ocv_module_disable(opencv_dnn)
- endif()
- 
-@@ -72,7 +72,7 @@ ocv_source_group("Src\\protobuf" FILES ${Protobuf_SRCS} ${Protobuf_HDRS})
- ocv_module_include_directories(include ${Protobuf_INCLUDE_DIRS})
- 
- ocv_glob_module_sources(${Protobuf_SRCS} ${Protobuf_HDRS} ${CBLAS_H_PROXY_PATH})
--ocv_create_module(${Protobuf_LIBRARIES} ${LAPACK_LIBRARIES})
-+ocv_create_module(${PROTOBUF_LIBRARIES} ${LAPACK_LIBRARIES})
- ocv_add_samples()
- ocv_add_accuracy_tests()
- ocv_add_perf_tests()
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/tinydnn.patch b/meta-openembedded/meta-oe/recipes-support/opencv/opencv/tinydnn.patch
deleted file mode 100644
index c433fc3..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv/tinydnn.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Upstream-status: Inappropriate [OE specific]
-
-Signed-off-by: Ricardo Ribalda <ricardo.ribalda@gmail.com>
-diff --git a/modules/dnn_modern/CMakeLists.txt b/modules/dnn_modern/CMakeLists.txt
-index 79b64b12160b..ba06a0a163e4 100644
---- a/modules/dnn_modern/CMakeLists.txt
-+++ b/modules/dnn_modern/CMakeLists.txt
-@@ -15,24 +15,8 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
- # MODULE REQUIREMENTS
- # ----------------------------------------------------------------------------
- 
--set(TINY_DNN_CPP_PATH "${OpenCV_BINARY_DIR}/3rdparty/tinydnn")
--set(TINY_DNN_CPP_ROOT "${TINY_DNN_CPP_PATH}/tiny-dnn-1.0.0a3")
--ocv_download(FILENAME "v1.0.0a3.tar.gz"
--               HASH "adb1c512e09ca2c7a6faef36f9c53e59"
--               URL
--                 "${OPENCV_TINY_DNN_URL}"
--                 "$ENV{OPENCV_TINY_DNN_URL}"
--                 "https://github.com/tiny-dnn/tiny-dnn/archive/"
--               DESTINATION_DIR "${TINY_DNN_CPP_PATH}"
--               STATUS TINY_DNN_DOWNLOAD_SUCCESS
--               ID "tiny-dnn"
--               UNPACK RELATIVE_URL)
--
--if(NOT TINY_DNN_DOWNLOAD_SUCCESS)
--  message(STATUS "Failed to download tiny-dnn sources")
--endif()
--
--find_package(TinyDNN QUIET)
-+set(TINYDNN_INCLUDE_DIRS "${OpenCV_SOURCE_DIR}/3rdparty/tinydnn/tiny-dnn-1.0.0a3")
-+set(TinyDNN_FOUND TRUE)
- 
- include(CheckCXXCompilerFlag)
- CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
diff --git a/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.3.bb b/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.4.3.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.3.bb
rename to meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.4.3.bb
index ca62de7..0a99700 100644
--- a/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.4.3.bb
@@ -3,16 +3,16 @@
 SECTION = "libs"
 
 LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2b2f8752cc5edf504d283107d033f544"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=62d89c5dcb0583609ea919c56be0ee76"
 
 ARM_INSTRUCTION_SET_armv4 = "arm"
 ARM_INSTRUCTION_SET_armv5 = "arm"
 
 DEPENDS = "libtool swig-native bzip2 zlib glib-2.0 libwebp"
 
-SRCREV_opencv = "87c27a074db9f6d9d60513f351daa903606ca370"
-SRCREV_contrib = "2a9d1b22ed76eb22fad1a5edf6faf4d05f207b13"
-SRCREV_ipp = "a62e20676a60ee0ad6581e217fe7e4bada3b95db"
+SRCREV_opencv = "b38c50b3d0c31e82294315ec44b54b7ef559ef12"
+SRCREV_contrib = "1f6d6f06266e1ef336437ae5404bee1c65d42cda"
+SRCREV_ipp = "bdb7bb85f34a8cb0d35e40a81f58da431aa1557a"
 SRCREV_boostdesc = "34e4206aef44d50e6bbcd0ab06354b52e7466d26"
 SRCREV_vgg = "fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d"
 SRC_URI[tinydnn.md5sum] = "adb1c512e09ca2c7a6faef36f9c53e59"
@@ -22,17 +22,17 @@
     import re
     arch = d.getVar('TARGET_ARCH', True)
     if re.match("i.86$", arch):
-        return "ippicv_2017u2_lnx_ia32_20170418.tgz"
+        return "ippicv_2017u3_lnx_ia32_general_20180518.tgz"
     else:
-        return "ippicv_2017u2_lnx_intel64_20170418.tgz"
+        return "ippicv_2017u3_lnx_intel64_general_20180518.tgz"
 
 def ipp_md5sum(d):
     import re
     arch = d.getVar('TARGET_ARCH', True)
     if re.match("i.86$", arch):
-        return "f2cece00d802d4dea86df52ed095257e"
+        return "ea72de74dae3c604eb6348395366e78e"
     else:
-        return "808b791a6eac9ed78d32a7666804320e"
+        return "b7cc351267db2d34b9efa1cd22ff0572"
 
 IPP_FILENAME = "${@ipp_filename(d)}"
 IPP_MD5 = "${@ipp_md5sum(d)}"
@@ -40,28 +40,21 @@
 SRCREV_FORMAT = "opencv_contrib_ipp_boostdesc_vgg"
 SRC_URI = "git://github.com/opencv/opencv.git;name=opencv \
     git://github.com/opencv/opencv_contrib.git;destsuffix=contrib;name=contrib \
-    git://github.com/opencv/opencv_3rdparty.git;branch=ippicv/master_20170418;destsuffix=ipp;name=ipp \
+    git://github.com/opencv/opencv_3rdparty.git;branch=ippicv/master_20180518;destsuffix=ipp;name=ipp \
     git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_boostdesc_20161012;destsuffix=boostdesc;name=boostdesc \
     git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_vgg_20160317;destsuffix=vgg;name=vgg \
     https://github.com/tiny-dnn/tiny-dnn/archive/v1.0.0a3.tar.gz;destsuffix=git/3rdparty/tinydnn/tiny-dnn-1.0.0a3;name=tinydnn;unpack=false \
     file://0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch \
-    file://fixpkgconfig.patch \
     file://uselocalxfeatures.patch;patchdir=../contrib/ \
-    file://tinydnn.patch;patchdir=../contrib/ \
+    file://0001-Add-missing-multi-line-separator.patch;patchdir=../contrib/ \
     file://0002-Make-opencv-ts-create-share-library-intead-of-static.patch \
     file://0003-To-fix-errors-as-following.patch \
-    file://0001-build-workaround-GCC-7.1.1-compilation-issue-with-sa.patch \
-    file://0002-imgcodecs-refactoring-improve-code-quality.patch \
-    file://0003-imgproc-test-add-checks-for-remove-call.patch \
+    file://fixpkgconfig.patch \
+    file://0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch \
     file://0001-Dont-use-isystem.patch \
-    file://0001-carotene-don-t-use-__asm__-with-aarch64.patch \
-    file://0002-Do-not-enable-asm-with-clang.patch \
-    file://CVE-2017-14136.patch \
-    file://javagen.patch \
-    file://protobuf.patch \
-    file://already-exists.patch \
+    file://0001-Check-for-clang-before-using-isystem.patch \
 "
-PV = "3.3+git${SRCPV}"
+PV = "3.4.3+git${SRCPV}"
 
 S = "${WORKDIR}/git"
 
@@ -76,6 +69,7 @@
 
 EXTRA_OECMAKE = "-DOPENCV_EXTRA_MODULES_PATH=${WORKDIR}/contrib/modules \
     -DWITH_1394=OFF \
+    -DENABLE_PRECOMPILED_HEADERS=OFF \
     -DCMAKE_SKIP_RPATH=ON \
     -DOPENCV_ICV_HASH=${IPP_MD5} \
     -DIPPROOT=${WORKDIR}/ippicv_lnx \
@@ -195,9 +189,4 @@
         mv ${D}/usr/lib/* ${D}/${libdir}/
         rm -rf ${D}/usr/lib
     fi
-
-    if ${@bb.utils.contains("PACKAGECONFIG", "samples", "true", "false", d)}; then
-        install -d ${D}${datadir}/OpenCV/samples/bin/
-        cp -f bin/*-tutorial-* bin/*-example-* ${D}${datadir}/OpenCV/samples/bin/
-    fi
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/install-strip.patch b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/install-strip.patch
index 2992b70..7c67596 100644
--- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/install-strip.patch
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/install-strip.patch
@@ -1,6 +1,9 @@
 # This patch ensures that the install operations which strip
 # programs and libraries (LTINSTALL) work in a cross build
 # environment.
+
+Upstream-Status: Pending
+
 --- 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 @@
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch
index dcf5411..35e4646 100644
--- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch
@@ -2,7 +2,7 @@
 
 slapd depends on ICU if it was built first.
 
-Upstream-status: inappropiate [embedded specific]
+Upstream-Status: inappropiate [embedded specific]
 ---
  configure.in |    8 --------
  1 file changed, 8 deletions(-)
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-2.4.28-gnutls-gcrypt.patch b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-2.4.28-gnutls-gcrypt.patch
index c7b1552..86d0767 100644
--- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-2.4.28-gnutls-gcrypt.patch
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-2.4.28-gnutls-gcrypt.patch
@@ -1,6 +1,6 @@
 From http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/net-nds/openldap/files/
 
-Upstream-status: Unknown
+Upstream-status: Pending
 
 --
 
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
index de9ca52..25e148e 100644
--- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
@@ -10,6 +10,8 @@
 be used and allow remote attackers to have unspecified impact via
 unknown vectors.
 
+Upstream-Status: Pending
+
 Signed-off-by: Li Wang <li.wang@windriver.com>
 ---
  libraries/libldap/tls_m.c |   27 ++++++++++++++++-----------
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-m4-pthread.patch b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-m4-pthread.patch
index b669b72..38c0a5a 100644
--- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-m4-pthread.patch
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-m4-pthread.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Pending
+
 --- 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],[[
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/remove-user-host-pwd-from-version.patch b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/remove-user-host-pwd-from-version.patch
new file mode 100644
index 0000000..4eb3897
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/remove-user-host-pwd-from-version.patch
@@ -0,0 +1,29 @@
+diff -ru openldap-2.4.46.orig/build/mkversion openldap-2.4.46/build/mkversion
+--- openldap-2.4.46.orig/build/mkversion	2018-10-25 18:46:10.383750480 +1300
++++ openldap-2.4.46/build/mkversion	2018-10-25 18:46:33.156232586 +1300
+@@ -50,7 +50,15 @@
+ fi
+ 
+ APPLICATION=$1
+-WHOWHERE="$USER@`uname -n`:`pwd`"
++if [ -n "${SOURCE_DATE_EPOCH}" ]; then
++   WHOWHERE="openldap"
++   DATE=$(date -d@$SOURCE_DATE_EPOCH +' %b %d %Y ')
++   TIME=$(date -d@$SOURCE_DATE_EPOCH +' %H:%M:%S ')
++else
++   WHOWHERE="$USER@$(uname -n):$(pwd)"
++   DATE='" __DATE__ "'
++   TIME='" __TIME__ "'
++fi
+ 
+ cat << __EOF__
+ /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+@@ -72,7 +80,7 @@
+ "COPYING RESTRICTIONS APPLY\n";
+ 
+ $static $const char $SYMBOL[] =
+-"@(#) \$$PACKAGE: $APPLICATION $VERSION (" __DATE__ " " __TIME__ ") \$\n"
++"@(#) \$$PACKAGE: $APPLICATION $VERSION ($DATE $TIME) \$\n"
+ "\t$WHOWHERE\n";
+ 
+ __EOF__
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.45.bb b/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.46.bb
similarity index 96%
rename from meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.45.bb
rename to meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.46.bb
index 82d6619..7fe9fb0 100644
--- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.45.bb
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.46.bb
@@ -1,5 +1,3 @@
-# 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"
@@ -9,9 +7,9 @@
 # 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=25fd3721960f39128cd15a749fd21139 \
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=25b4ead0e45182e7c2914e59ff57009f \
                     file://LICENSE;md5=153d07ef052c4a37a8fac23bc6031972 \
-"
+                    "
 SECTION = "libs"
 
 LDAP_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
@@ -25,10 +23,11 @@
     file://slapd.service \
     file://thread_stub.patch \
     file://openldap-CVE-2015-3276.patch \
+    file://remove-user-host-pwd-from-version.patch \
 "
 
-SRC_URI[md5sum] = "00ff8301277cdfd0af728a6927042a13"
-SRC_URI[sha256sum] = "cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb897cd5626df3824"
+SRC_URI[md5sum] = "829016c5a9f45c51adc50073ac6f9fd7"
+SRC_URI[sha256sum] = "9a90dcb86b99ae790ccab93b7585a31fbcbeec8c94bf0f7ab0ca0a87ea0c4b2d"
 
 DEPENDS = "util-linux groff-native"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fixed-gcc-8-compilation-errors-1353.patch b/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fixed-gcc-8-compilation-errors-1353.patch
new file mode 100644
index 0000000..48d8327
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fixed-gcc-8-compilation-errors-1353.patch
@@ -0,0 +1,73 @@
+From 87857d5cae7db94fdd776904886392b1e86053bd Mon Sep 17 00:00:00 2001
+From: Florian Bezdeka <1119693+fbezdeka@users.noreply.github.com>
+Date: Fri, 18 May 2018 18:54:56 +0200
+Subject: [PATCH] Fixed gcc 8 compilation errors (#1353)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The following errors occured during a compilation using gcc 8:
+
+In function »gids_create_file.constprop«,
+    inserted by »gids_save_certificate.isra.8« beicard-gids.c:1548:7:
+card-gids.c:465:2: Error: »strncpy« output may be truncated copying 8 bytes from a string of length 8 [-Werror=stringop-truncation]
+  strncpy(record->filename, filename, 8);
+  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+pkcs15-oberthur.c: In function »sc_pkcs15emu_oberthur_add_prvkey«:
+pkcs15-oberthur.c:741:5: Error: »strncpy« output may be truncated copying 254 bytes from a string of length 254 [-Werror=stringop-truncation]
+     strncpy(kobj.label, objs[ii]->label, sizeof(kobj.label) - 1);
+     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Backport [https://github.com/OpenSC/OpenSC/pull/1353]
+Signed-off-by Khem Raj <raj.khem@gmail.com>
+---
+ src/libopensc/card-gids.c       | 3 ++-
+ src/libopensc/pkcs15-oberthur.c | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/libopensc/card-gids.c b/src/libopensc/card-gids.c
+index fc5d2a7..ac3e579 100644
+--- a/src/libopensc/card-gids.c
++++ b/src/libopensc/card-gids.c
+@@ -33,6 +33,7 @@ Some features are undocumented like the format used to store certificates. They
+ 
+ #include <stdlib.h>
+ #include <string.h>
++#include "../common/compat_strlcpy.h"
+ 
+ #ifdef ENABLE_OPENSSL
+ /* openssl only needed for card administration */
+@@ -462,7 +463,7 @@ static int gids_create_file(sc_card_t *card, char* directory, char* filename) {
+ 	memset(masterfilebuffer + offset, 0, sizeof(gids_mf_record_t));
+ 	record = (gids_mf_record_t*) (masterfilebuffer + offset);
+ 	strncpy(record->directory, directory, 8);
+-	strncpy(record->filename, filename, 8);
++	strlcpy(record->filename, filename, sizeof(record->filename));
+ 	record->fileIdentifier = fileIdentifier;
+ 	record->dataObjectIdentifier = dataObjectIdentifier;
+ 
+diff --git a/src/libopensc/pkcs15-oberthur.c b/src/libopensc/pkcs15-oberthur.c
+index 4f841ed..3415be7 100644
+--- a/src/libopensc/pkcs15-oberthur.c
++++ b/src/libopensc/pkcs15-oberthur.c
+@@ -29,6 +29,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
++#include "../common/compat_strlcpy.h"
+ 
+ #include "pkcs15.h"
+ #include "log.h"
+@@ -738,7 +739,7 @@ sc_pkcs15emu_oberthur_add_prvkey(struct sc_pkcs15_card *p15card,
+ 			unsigned int id = path.value[path.len - 2] * 0x100 + path.value[path.len - 1];
+ 
+ 			if (id == ccont.id_cert)   {
+-				strncpy(kobj.label, objs[ii]->label, sizeof(kobj.label) - 1);
++				strlcpy(kobj.label, objs[ii]->label, sizeof(kobj.label));
+ 				break;
+ 			}
+ 		}
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.16.0.bb b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.18.0.bb
similarity index 75%
rename from meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.16.0.bb
rename to meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.18.0.bb
index fd67181..45c931e 100644
--- a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.16.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.18.0.bb
@@ -9,10 +9,12 @@
 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 = "https://snapshot.debian.org/archive/debian/20180521T101428Z/pool/main/o/opensc/opensc_0.18.0.orig.tar.gz \
+           file://0001-Fixed-gcc-8-compilation-errors-1353.patch \
+          "
 
-SRC_URI[md5sum] = "724d128f23cd7a74b28d04300ce7bcbd"
-SRC_URI[sha256sum] = "3ac8c29542bb48179e7086d35a1b8907a4e86aca3de3323c2f48bd74eaaf5729"
+SRC_URI[md5sum] = "bce516f752e0db5327aa06cc0136fe27"
+SRC_URI[sha256sum] = "6ef62b00e8fdbe3e386c3ee25c2cadb56c1931ea42f1a11dce8c947f51b45033"
 
 DEPENDS = "openct pcsc-lite virtual/libiconv openssl"
 
@@ -21,6 +23,7 @@
 
 inherit autotools pkgconfig
 
+S = "${WORKDIR}/OpenSC-${PV}"
 EXTRA_OECONF = " \
     --disable-static \
     --enable-openct \
diff --git a/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.22.bb b/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.22.bb
index 90d58b0..10f724e 100644
--- a/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.22.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.22.bb
@@ -11,7 +11,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=f38b3d1c7ef7fc2c8b6d20cd38efdc29"
 DEPENDS = "udev"
 
-SRC_URI = "https://alioth.debian.org/frs/download.php/file/4225/pcsc-lite-${PV}.tar.bz2"
+SRC_URI = "https://pcsclite.apdu.fr/files/${BP}.tar.bz2"
 SRC_URI[md5sum] = "0ec103b1ef298d0c58d6ef6b00b9cf17"
 SRC_URI[sha256sum] = "6a358f61ed3b66a7f6e1f4e794a94c7be4c81b7a58ec360c33791e8d7d9bd405"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.12.0.bb b/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.12.0.bb
index 088f08b..148e4b6 100644
--- a/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.12.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.12.0.bb
@@ -58,7 +58,9 @@
 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"
+PACKAGES =+ "libpurple-dev libpurple libgnt libgnt-dev finch finch-dev ${PN}-data"
+
+RPROVIDES_${PN}-dbg += "libpurple-dbg libgnt-dbg finch-dbg"
 
 LEAD_SONAME = "libpurple.so.0"
 FILES_libpurple     = "${libdir}/libpurple*.so.* ${libdir}/purple-2 ${bindir}/purple-* ${sysconfdir}/gconf/schemas/purple* ${datadir}/purple/ca-certs"
@@ -69,15 +71,10 @@
                        ${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"
diff --git a/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-Don-t-try-to-install-non-existing-Encodings-testsuit.patch b/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-Don-t-try-to-install-non-existing-Encodings-testsuit.patch
new file mode 100644
index 0000000..f4a358f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-Don-t-try-to-install-non-existing-Encodings-testsuit.patch
@@ -0,0 +1,31 @@
+From fa079dfc5e1d22ea35762bf4c5b09999bdc5e731 Mon Sep 17 00:00:00 2001
+From: Jochen Sprickerhof <git@jochen.sprickerhof.de>
+Date: Wed, 22 Aug 2018 21:42:09 +0200
+Subject: [PATCH] Don't try to install non existing Encodings/testsuite/data
+
+Upstream-Status: Backport [https://github.com/pocoproject/poco/pull/2437]
+---
+ Encodings/testsuite/CMakeLists.txt | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/Encodings/testsuite/CMakeLists.txt b/Encodings/testsuite/CMakeLists.txt
+index 7508e5522..79495ae02 100644
+--- a/Encodings/testsuite/CMakeLists.txt
++++ b/Encodings/testsuite/CMakeLists.txt
+@@ -19,12 +19,9 @@ POCO_SOURCES_AUTO_PLAT( TEST_SRCS WINCE
+ add_executable( ${TESTUNIT} ${TEST_SRCS} )
+ if(ANDROID)
+ 	add_test(NAME ${LIBNAME} WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+-			COMMAND ${CMAKE_COMMAND} -DANDROID_NDK=${ANDROID_NDK} "-DTEST_FILES=${CMAKE_CURRENT_SOURCE_DIR}/data;" -DLIBRARY_DIR=${CMAKE_BINARY_DIR}/lib -DUNITTEST=${CMAKE_BINARY_DIR}/bin/${TESTUNIT} -DTEST_PARAMETER=-all -P ${CMAKE_SOURCE_DIR}/cmake/ExecuteOnAndroid.cmake)
++			COMMAND ${CMAKE_COMMAND} -DANDROID_NDK=${ANDROID_NDK} -DLIBRARY_DIR=${CMAKE_BINARY_DIR}/lib -DUNITTEST=${CMAKE_BINARY_DIR}/bin/Encodings-testrunner -DTEST_PARAMETER=-all -P ${CMAKE_SOURCE_DIR}/cmake/ExecuteOnAndroid.cmake)
+ else()
+ 	add_test(NAME ${LIBNAME} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${TESTUNIT} -all)
+-	# The test is run in the build directory. So the test data is copied there too
+-	add_custom_command(TARGET ${TESTUNIT} POST_BUILD
+-				   COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/data ${CMAKE_CURRENT_BINARY_DIR}/data )
+ endif()
+ #set_target_properties( ${TESTUNIT} PROPERTIES COMPILE_FLAGS ${RELEASE_CXX_FLAGS} )
+ target_link_libraries( ${TESTUNIT}  PocoEncodings PocoFoundation CppUnit )
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/poco/poco_1.8.0.1.bb b/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.0.bb
similarity index 78%
rename from meta-openembedded/meta-oe/recipes-support/poco/poco_1.8.0.1.bb
rename to meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.0.bb
index 160b4d3..258cc49 100644
--- a/meta-openembedded/meta-oe/recipes-support/poco/poco_1.8.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.0.bb
@@ -1,39 +1,28 @@
 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/"
+SECTION = "libs"
 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"
-
-SRCREV = "af527ab21fca5ab2659285408aec9920ed7c7b17"
 SRC_URI = " \
-    git://github.com/pocoproject/poco.git \
+    git://github.com/pocoproject/poco.git;branch=poco-${PV} \
+    file://0001-Don-t-try-to-install-non-existing-Encodings-testsuit.patch \
     file://run-ptest \
    "
+SRCREV = "daf00da73ab917e4d4581e3aa00c0ee61e0cc58b"
 
 S = "${WORKDIR}/git"
 
-EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DPOCO_UNBUNDLED=ON \
-                  -DZLIB_LIBRARY_RELEASE:STRING=z -DPCRE_LIBRARY:STRING=pcre \
-                 ${@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"
+inherit cmake ptest
 
 # 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 JSON MongoDB PDF Util Net NetSSL Crypto Data DataSQLite Zip Encodings Redis"
 
 PACKAGECONFIG[XML] = "-DENABLE_XML=ON -DEXPAT_LIBRARY:STRING=expat,-DENABLE_XML=OFF,expat"
 PACKAGECONFIG[JSON] = "-DENABLE_JSON=ON,-DENABLE_JSON=OFF"
@@ -46,6 +35,8 @@
 PACKAGECONFIG[Data] = "-DENABLE_DATA=ON,-DENABLE_DATA=OFF"
 PACKAGECONFIG[DataSQLite] = "-DENABLE_DATA_SQLITE=ON -DSQLITE3_LIBRARY:STRING=sqlite3,-DENABLE_DATA_SQLITE=OFF,sqlite3"
 PACKAGECONFIG[Zip] = "-DENABLE_ZIP=ON,-DENABLE_ZIP=OFF"
+PACKAGECONFIG[Encodings] = "-DENABLE_ENCODINGS=ON,-DENABLE_ENCODINGS=OFF"
+PACKAGECONFIG[Redis] = "-DENABLE_REDIS=ON,-DENABLE_REDIS=OFF"
 
 # Additional components not build by default,
 # they might have dependencies not included in oe-core
@@ -58,45 +49,33 @@
 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 () {
+EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DPOCO_UNBUNDLED=ON \
+                  -DZLIB_LIBRARY_RELEASE:STRING=z -DPCRE_LIBRARY:STRING=pcre \
+                 ${@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"
+
+python populate_packages_prepend () {
+    poco_libdir = d.expand('${libdir}')
+    pn = d.getVar("PN")
     packages = []
     testrunners = []
-    components = d.getVar("PACKAGECONFIG").split()
-    components.append("Foundation")
-    for lib in components:
-        pkg = ("poco-%s" % lib.lower()).replace("_","")
-        packages.append(pkg)
-        if not d.getVar("FILES_%s" % pkg):
-            d.setVar("FILES_%s" % pkg, "${libdir}/libPoco%s.so.*" % lib)
-        testrunners.append("%s" % lib)
 
-    d.setVar("POCO_PACKAGES", " ".join(packages))
+    def hook(f, pkg, file_regex, output_pattern, modulename):
+        packages.append(pkg)
+        testrunners.append(modulename)
+
+    do_split_packages(d, poco_libdir, '^libPoco(.*)\.so\..*$',
+                    'poco-%s', 'Poco %s component', extra_depends='', prepend=True, hook=hook)
+
+    d.setVar("RRECOMMENDS_%s" % pn, " ".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}
@@ -104,3 +83,17 @@
        find "${D}${PTEST_PATH}" -executable -exec chrpath -d {} \;
        echo "${POCO_TESTRUNNERS}" > "${D}${PTEST_PATH}/testrunners"
 }
+
+PACKAGES_DYNAMIC = "poco-.*"
+
+# "poco" is a metapackage which pulls in all Poco components
+ALLOW_EMPTY_${PN} = "1"
+
+# 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"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.8.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.8.bb
rename to meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
index 343b6db..b2af097 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
@@ -17,8 +17,8 @@
            ${CMAP_RESOURCES_BASE}/Identity-H;name=idh \
            ${CMAP_RESOURCES_BASE}/Identity-V;name=idv"
 
-SRC_URI[md5sum] = "00f8989c804de84af0ba2ea629949980"
-SRC_URI[sha256sum] = "1096a18161f263cccdc6d8a2eb5548c41ff8fcf9a3609243f1b6296abdf72872"
+SRC_URI[md5sum] = "35cc7beba00aa174631466f06732be40"
+SRC_URI[sha256sum] = "1f9c7e7de9ecd0db6ab287349e31bf815ca108a5a175cf906a90163bdbe32012"
 SRC_URI[idh.md5sum] = "009c93cf0141ab7bd6acb7eea14306cc"
 SRC_URI[idh.sha256sum] = "ae702c203a82ea124e9b96590f821db6fbf8754e2c4547a9dba0e82f94739e95"
 SRC_URI[idv.md5sum] = "2f32a45d43d001c26eeac6b878855fbf"
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch b/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch
new file mode 100644
index 0000000..528528a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch
@@ -0,0 +1,20 @@
+Minic GNU basename() API for non-glibc library e.g. musl
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Index: poppler-0.64.0/utils/pdfsig.cc
+===================================================================
+--- poppler-0.64.0.orig/utils/pdfsig.cc
++++ poppler-0.64.0/utils/pdfsig.cc
+@@ -35,6 +35,10 @@
+ #include "Win32Console.h"
+ #include "numberofcharacters.h"
+ 
++#if !defined(__GLIBC__)
++#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
++#endif
++
+ static const char * getReadableSigState(SignatureValidationStatus sig_vs)
+ {
+   switch(sig_vs) {
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.64.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.70.1.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.64.0.bb
rename to meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.70.1.bb
index 1e87ae6..b618f28 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.64.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.70.1.bb
@@ -6,9 +6,10 @@
            file://0001-Do-not-overwrite-all-our-build-flags.patch \
            file://0002-CairoOutputDev.cc-fix-build-error-when-using-fixedpo.patch \
            file://0001-glib-CMakeLists.txt-Add-libpoppler-to-link-along-wit.patch \
+           file://basename-include.patch \
            "
-SRC_URI[md5sum] = "f7f687ebb60004f8ad61994575018044"
-SRC_URI[sha256sum] = "b21df92ca99f78067785cf2dc8e06deb04726b62389c0ee1f5d8b103c77f64b1"
+SRC_URI[md5sum] = "fdb0699e9aa20e81acd1a50701374c8b"
+SRC_URI[sha256sum] = "66972047d9ef8162cc8c389d7e7698291dfc9f2b3e4ea9a9f08ae604107451bd"
 
 DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_git.bb b/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_1.0.2.bb
similarity index 83%
rename from meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_git.bb
rename to meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_1.0.2.bb
index 8bf9036..c8baa5d 100644
--- a/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/pps-tools/pps-tools_1.0.2.bb
@@ -4,12 +4,13 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
-PV = "0.0.0+git${SRCPV}"
-SRCREV = "0deb9c7e135e9380a6d09e9d2e938a146bb698c8"
+SRCREV = "cb48b7ecf7079ceba7081c78d4e61e507b0e8d2d"
 SRC_URI = "git://github.com/ago/pps-tools.git"
 
 S = "${WORKDIR}/git"
 
+RDEPENDS_${PN} = "bash"
+
 do_install() {
         install -d ${D}${bindir} ${D}${includedir} \
                    ${D}${includedir}/sys
diff --git a/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb b/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb
index aa474ce..6160733 100644
--- a/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb
+++ b/meta-openembedded/meta-oe/recipes-support/procmail/procmail_3.22.bb
@@ -29,7 +29,7 @@
     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" LDFLAGS0="${LDFLAGS}" autoconf.h
+    make TARGET_CFLAGS="$TARGET_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS0="${BUILD_LDFLAGS}" autoconf.h
 }
 
 do_compile() {
diff --git a/meta-openembedded/meta-oe/recipes-support/satyr/files/0001-do-not-support-python2.patch b/meta-openembedded/meta-oe/recipes-support/satyr/files/0001-do-not-support-python2.patch
deleted file mode 100644
index 9e95a3f..0000000
--- a/meta-openembedded/meta-oe/recipes-support/satyr/files/0001-do-not-support-python2.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 206f334d62da17093e784094c9d9e80c853f704f Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 12 May 2017 03:03:46 -0400
-Subject: [PATCH] do not support python2
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.ac       | 16 ----------------
- python/Makefile.am | 24 ------------------------
- 2 files changed, 40 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 200a7cc..8431c51 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -22,22 +22,6 @@ AM_MISSING_PROG([AUTOM4TE], [autom4te])
- # Needed by tests/atlocal.in.
- AC_SUBST([O0CFLAGS], [`echo $CFLAGS | sed 's/-O[[0-9]] *//'`])
- 
--AM_PATH_PYTHON
--AM_CONDITIONAL([HAVE_PYTHON], test -n "$PYTHON")
--[if test -z "$PYTHON"; then]
--    [echo "The python interpreter was not found in the search path. The Python language bindings"]
--    [echo "will not be built.  If you want to build the Python language bindings, please ensure"]
--    [echo "that python is installed and its directory is included in the search path."]
--    [echo "Then run configure again before attempting to build Satyr."]
--[fi]
--
--# Just PKG_CHECK_MODULES([PYTHON], [python]) works only with python2.7+
--# Below, if python is not found, we set up for python2.6 w/o checking:
--PKG_CHECK_MODULES([PYTHON], [python2],,[
--    PYTHON_LIBS='-L/usr/lib64 -lpython2.6'
--    PYTHON_CFLAGS='-I/usr/include/python2.6'
--])
--
- AC_ARG_ENABLE([python-manpage],
-               [AS_HELP_STRING([--disable-python-manpage],
-                               [Disable python bindings manpage build])],
-diff --git a/python/Makefile.am b/python/Makefile.am
-index 36fc2e9..0b73f66 100644
---- a/python/Makefile.am
-+++ b/python/Makefile.am
-@@ -1,12 +1,5 @@
- SUBDIRS = . doc
- 
--py2satyrdir = $(pyexecdir)/satyr
--
--py2satyr_PYTHON = \
--    __init__.py
--
--py2satyr_LTLIBRARIES = _satyr.la
--
- PYEXTFILES = \
-     py_cluster.h \
-     py_cluster.c \
-@@ -75,23 +68,6 @@ PYEXTLDFLAGS = \
-     -module \
-     -avoid-version
- 
--_satyr_la_SOURCES = $(PYEXTFILES)
--_satyr_la_CPPFLAGS = \
--    $(PYEXTCPPFLAGS) \
--    $(PYTHON_CFLAGS)
--_satyr_la_LDFLAGS = \
--    $(PYEXTLDFLAGS) \
--    -export-symbols-regex init_satyr
--
--# Depending on the configure option, we either link libsatyr.so dynamically (as
--# is usual), or directly include its object files (by including the
--# convenience library).
--if ENABLE_STATIC_PYTHON_MODULE
--_satyr_la_LIBADD = ../lib/libsatyr_conv.la
--else
--_satyr_la_LIBADD = ../lib/libsatyr.la
--endif
--
- if WITH_PYTHON3
- py3satyrdir = $(py3execdir)/satyr
- 
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/satyr/files/0002-fix-compile-failure-against-musl-C-library.patch b/meta-openembedded/meta-oe/recipes-support/satyr/files/0002-fix-compile-failure-against-musl-C-library.patch
index 5827eb4..b6c32c4 100644
--- a/meta-openembedded/meta-oe/recipes-support/satyr/files/0002-fix-compile-failure-against-musl-C-library.patch
+++ b/meta-openembedded/meta-oe/recipes-support/satyr/files/0002-fix-compile-failure-against-musl-C-library.patch
@@ -14,7 +14,7 @@
 index 920e145..58140bf 100644
 --- a/lib/rpm.c
 +++ b/lib/rpm.c
-@@ -188,7 +188,7 @@ sr_rpm_package_sort(struct sr_rpm_package *packages)
+@@ -191,7 +191,7 @@ sr_rpm_package_sort(struct sr_rpm_package *packages)
      }
  
      /* Sort the array. */
diff --git a/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.23.bb b/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.26.bb
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.23.bb
rename to meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.26.bb
index f795c37..a09bea2 100644
--- a/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.23.bb
+++ b/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.26.bb
@@ -8,10 +8,9 @@
 inherit autotools-brokensep python3native pkgconfig
 
 SRC_URI = "git://github.com/abrt/satyr.git \
-           file://0001-do-not-support-python2.patch \
            file://0002-fix-compile-failure-against-musl-C-library.patch \
 "
-SRCREV = "4742fd4857c446b96f712d52e2e4cd0b6cfe7398"
+SRCREV = "4baa0c765071054314d1e7e78547ce6b7c133fbc"
 S = "${WORKDIR}/git"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
@@ -24,8 +23,8 @@
 FILES_python3-${PN} = "${PYTHON_SITEPACKAGES_DIR}/${BPN}"
 
 PACKAGECONFIG ??= "python3 rpm"
+PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python2"
 PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
-PACKAGECONFIG[pythonmanpage] = "--enable-python-manpage, --disable-python-manpage"
 PACKAGECONFIG[rpm] = "--with-rpm, --without-rpm, rpm"
 
 do_configure_prepend() {
diff --git a/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.10.bb b/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.10.bb
index 3299a77..35e22d3 100644
--- a/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.10.bb
@@ -12,6 +12,8 @@
            "
 MIRRORS += "http://sg.danny.cz/sg/p https://fossies.org/linux/misc"
 
+UPSTREAM_CHECK_REGEX = "sdparm-(?P<pver>\d+(\.\d+)+)\.tgz"
+
 PACKAGES =+ "${PN}-scripts"
 RDEPENDS_${PN}-scripts += "bash ${PN}"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils/glibc-2.28.patch b/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils/glibc-2.28.patch
new file mode 100644
index 0000000..fbad413
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils/glibc-2.28.patch
@@ -0,0 +1,24 @@
+Fixes:
+http://errors.yoctoproject.org/Errors/Details/185896/
+
+TOPDIR/tmp-glibc/work/core2-64-oe-linux/sg3-utils/1.42-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/8.2.0/ld: sg_map26.o: in function `nd_match_scandir_select':
+/usr/src/debug/sg3-utils/1.42-r0/sg3_utils-1.42/src/sg_map26.c:359: undefined reference to `major'
+TOPDIR/tmp-glibc/work/core2-64-oe-linux/sg3-utils/1.42-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/8.2.0/ld: /usr/src/debug/sg3-utils/1.42-r0/sg3_utils-1.42/src/sg_map26.c:361: undefined reference to `minor'
+TOPDIR/tmp-glibc/work/core2-64-oe-linux/sg3-utils/1.42-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/8.2.0/ld: sg_map26.o: in function `nt_typ_from_filename':
+/usr/src/debug/sg3-utils/1.42-r0/sg3_utils-1.42/src/sg_map26.c:218: undefined reference to `major'
+TOPDIR/tmp-glibc/work/core2-64-oe-linux/sg3-utils/1.42-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/8.2.0/ld: /usr/src/debug/sg3-utils/1.42-r0/sg3_utils-1.42/src/sg_map26.c:219: undefined reference to `minor'
+collect2: error: ld returned 1 exit status
+Makefile:806: recipe for target 'sg_map26' failed
+
+Upstream-Status: Pending
+
+--- sg3_utils-1.42.orig/src/sg_map26.c	2018-08-09 11:53:26.907493996 +0000
++++ sg3_utils-1.42/src/sg_map26.c	2018-08-09 11:51:56.713490763 +0000
+@@ -33,6 +33,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/sysmacros.h>
+ #include <linux/major.h>
+ 
+ #ifdef HAVE_CONFIG_H
diff --git a/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.42.bb b/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.42.bb
index c7de057..c37c5e9 100644
--- a/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.42.bb
+++ b/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.42.bb
@@ -8,9 +8,13 @@
 LICENSE = "GPLv2+ & BSD"
 LIC_FILES_CHKSUM = "file://COPYING;md5=f90da7fc52172599dbf082d7620f18ca"
 
-SRC_URI = "http://sg.danny.cz/sg/p/sg3_utils-${PV}.tgz"
+SRC_URI = "http://sg.danny.cz/sg/p/sg3_utils-${PV}.tgz \
+    file://glibc-2.28.patch \
+"
 MIRRORS += "http://sg.danny.cz/sg/p https://fossies.org/linux/misc"
 
+UPSTREAM_CHECK_REGEX = "sg3_utils-(?P<pver>\d+(\.\d+)+)\.tgz"
+
 SRC_URI[md5sum] = "28080de5bf2222f8b55a29093bec8aea"
 SRC_URI[sha256sum] = "1dcb7a0309bd0ba3d4a83acb526973b80106ee26cd9f7398186cd3f0633c9ef3"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/CVE-2018-1000097.patch b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/CVE-2018-1000097.patch
new file mode 100644
index 0000000..99dc4e3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/CVE-2018-1000097.patch
@@ -0,0 +1,61 @@
+From bd68ae1271598e8fdc72f2adb457e6882604582d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Thu, 22 Feb 2018 16:39:43 +0100
+Subject: [PATCH] Fix a heap-buffer-overflow in find_archive()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+rw_buffer has allocated rw_base_size bytes. But subsequend fgets() in
+find_archive() reads up-to BUFSIZ bytes.
+
+On my system, BUFSIZ is 8192. rw_base_size is usually equaled to
+a memory page size, 4096 on my system. Thus find_archive() can write
+beyonded allocated memmory for rw_buffer array:
+
+$ valgrind -- ./unshar /tmp/id\:000000\,sig\:06\,src\:000005+000030\,op\:splice\,rep\:4
+==30582== Memcheck, a memory error detector
+==30582== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==30582== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
+==30582== Command: ./unshar /tmp/id:000000,sig:06,src:000005+000030,op:splice,rep:4
+==30582==
+==30582== Invalid write of size 1
+==30582==    at 0x4EAB480: _IO_getline_info (in /usr/lib64/libc-2.27.so)
+==30582==    by 0x4EB47C2: fgets_unlocked (in /usr/lib64/libc-2.27.so)
+==30582==    by 0x10BF60: fgets_unlocked (stdio2.h:320)
+==30582==    by 0x10BF60: find_archive (unshar.c:243)
+==30582==    by 0x10BF60: unshar_file (unshar.c:379)
+==30582==    by 0x10BCCC: validate_fname (unshar-opts.c:604)
+==30582==    by 0x10BCCC: main (unshar-opts.c:639)
+==30582==  Address 0x523a790 is 0 bytes after a block of size 4,096 alloc'd
+==30582==    at 0x4C2DBBB: malloc (vg_replace_malloc.c:299)
+==30582==    by 0x10C670: init_unshar (unshar.c:450)
+==30582==    by 0x10BC55: main (unshar-opts.c:630)
+
+This was reported in
+<http://lists.gnu.org/archive/html/bug-gnu-utils/2018-02/msg00004.html>.
+
+CVE: CVE-2018-1000097
+Upstream-Status: no upstream [http://lists.gnu.org/archive/html/bug-gnu-utils/2018-02/msg00004.html]
+Signed-off-by: Petr PísaÅ™ <ppisar@redhat.com>
+Signed-off-by: Sinan Kaya <okaya@kernel.org>
+---
+ src/unshar.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/unshar.c b/src/unshar.c
+index 80bc3a9..0fc3773 100644
+--- a/src/unshar.c
++++ b/src/unshar.c
+@@ -240,7 +240,7 @@ find_archive (char const * name, FILE * file, off_t start)
+       off_t position = ftello (file);
+ 
+       /* Read next line, fail if no more and no previous process.  */
+-      if (!fgets (rw_buffer, BUFSIZ, file))
++      if (!fgets (rw_buffer, rw_base_size, file))
+ 	{
+ 	  if (!start)
+ 	    error (0, 0, _("Found no shell commands in %s"), name);
+-- 
+2.19.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
index 812fee9..c12289b 100644
--- a/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
@@ -8,6 +8,7 @@
 
 SRC_URI = "ftp://ftp.gnu.org/gnu/${BPN}/${BP}.tar.gz \
            file://0001-Fix-build-with-clang.patch \
+           file://CVE-2018-1000097.patch \
 "
 SRC_URI[md5sum] = "32a51b23e25ad5e6af4b89f228be1800"
 SRC_URI[sha256sum] = "ee336e68549664e7a19b117adf02edfdeac6307f22e5ba78baca457116914637"
diff --git a/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb b/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
index 3f6cdc6..af1cd60 100644
--- a/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
@@ -4,11 +4,9 @@
 LICENSE="GPLv2"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381"
 
-PR = "r0"
-
-BPV = "0.8.1"
+BPV = "0.8.3"
 PV = "${BPV}"
-SRCREV = "318bcae5249722873bf58b27afdd20473c7047cc"
+SRCREV = "a3f1f68a048d0d2321ee562b3744dd1162cad22f"
 
 S = "${WORKDIR}/git"
 
@@ -16,4 +14,3 @@
 
 
 inherit autotools
-
diff --git a/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-Add-linux-musleabi-to-ostable.patch b/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-Add-linux-musleabi-to-ostable.patch
new file mode 100644
index 0000000..269441f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-Add-linux-musleabi-to-ostable.patch
@@ -0,0 +1,39 @@
+From 087840efdbc86b1432ebdd81f25b4cb78c75f818 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 11 Sep 2018 12:28:10 -0700
+Subject: [PATCH] Add linux-musleabi to ostable
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ostable      | 1 +
+ triplettable | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/ostable b/ostable
+index 3bb6819..d0ffdc7 100644
+--- a/ostable
++++ b/ostable
+@@ -15,6 +15,7 @@
+ uclibceabi-linux	linux-uclibceabi	linux[^-]*-uclibceabi
+ uclibc-linux		linux-uclibc		linux[^-]*-uclibc
+ musleabihf-linux	linux-musleabihf	linux[^-]*-musleabihf
++musleabi-linux		linux-musleabi		linux[^-]*-musleabi
+ musl-linux		linux-musl		linux[^-]*-musl
+ gnueabihf-linux		linux-gnueabihf		linux[^-]*-gnueabihf
+ gnueabi-linux		linux-gnueabi		linux[^-]*-gnueabi
+diff --git a/triplettable b/triplettable
+index 7257744..45864c3 100644
+--- a/triplettable
++++ b/triplettable
+@@ -6,6 +6,7 @@
+ uclibceabi-linux-arm	uclibc-linux-armel
+ uclibc-linux-<cpu>	uclibc-linux-<cpu>
+ musleabihf-linux-arm	musl-linux-armhf
++musleabi-linux-arm	musl-linux-arm
+ musl-linux-<cpu>	musl-linux-<cpu>
+ gnueabihf-linux-arm	armhf
+ gnueabi-linux-arm	armel
+-- 
+2.18.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb b/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb
index cc2727b..b9b22a3 100644
--- a/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb
+++ b/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb
@@ -9,6 +9,7 @@
 SRC_URI = " \
     ${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.xz \
     file://0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch \
+    file://0001-Add-linux-musleabi-to-ostable.patch \
 "
 
 SRC_URI[md5sum] = "e48fcfdb2162e77d72c2a83432d537ca"
diff --git a/meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.5.bb b/meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.5.bb
new file mode 100644
index 0000000..854df06
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/stm32flash/stm32flash_0.5.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Open source flash program for STM32 using the ST serial bootloader"
+HOMEPAGE = "https://sourceforge.net/projects/stm32flash/"
+BUGTRACKER = "https://sourceforge.net/p/stm32flash/tickets/"
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+S = "${WORKDIR}/${BPN}"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz"
+
+do_install() {
+	oe_runmake install DESTDIR=${D} PREFIX=${prefix}
+}
+
+SRC_URI[md5sum] = "40f673502949f3bb655d2bcc539d7b6a"
+SRC_URI[sha256sum] = "97aa9422ef02e82f7da9039329e21a437decf972cb3919ad817f70ac9a49e306"
diff --git a/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb b/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb
index 68f0387..f5518bd 100644
--- a/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb
@@ -1,35 +1,24 @@
 SUMMARY = "Synergy - control multiple computers with one keyboard and mouse"
 HOMEPAGE = "http://synergy-project.org"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d2ba51ca68e055566aade24662f9eb41"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=54c1fc8d8bb6776ae501acfb1585e9d6"
 LICENSE = "GPL-2.0-with-OpenSSL-exception"
 SECTION = "x11/utils"
 
 DEPENDS = "virtual/libx11 libxtst libxinerama curl openssl"
-do_unpack_extra[depends] = "unzip-native:do_populate_sysroot"
 
 # depends on virtual/libx11
 REQUIRED_DISTRO_FEATURES = "x11"
 
-SRC_URI = "git://github.com/symless/synergy.git;protocol=http"
+SRC_URI = "git://github.com/symless/synergy-core;protocol=https;nobranch=1"
 
-# Version 1.8.8-stable
-SRCREV ?= "c30301e23424db1125664da17deb8c3aa6aec52d"
-PV = "1.8.8+${SRCPV}"
+# Version 1.10.1-stable
+SRCREV ?= "1b4c076127687aceac931d269e898beaac1cad9f"
+PV = "1.10.1+git${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
+EXTRA_OECMAKE += "-DSYNERGY_BUILD_LEGACY_GUI=OFF"
 
-do_install() {
-    install -d ${D}/usr/bin
-    install -m 0755 ${S}/bin/synergy* ${D}/usr/bin/
-}
+FILES_${PN} += "${datadir}/icons/hicolor"
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0001-syslog-ng-fix-segment-fault-during-service-start.patch b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0001-syslog-ng-fix-segment-fault-during-service-start.patch
new file mode 100644
index 0000000..0fc40be
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0001-syslog-ng-fix-segment-fault-during-service-start.patch
@@ -0,0 +1,75 @@
+From caeccb7bec45f65bc89efa8195b3853368328361 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 17 Sep 2018 12:49:36 +0800
+Subject: [PATCH] syslog-ng: fix segment fault during service start on arm64
+
+service start failed since segment fault on arch arm64,
+syslog-ng have a submodule ivykis, from ivykis V0.42,
+it use pthread_atfork, but for arm64, this symbol is
+not included by libpthread, so cause segment fault.
+
+refer systemd, replace pthread_atfork with __register_atfork
+to fix this problem.
+
+I have create an issue, and this proposal to upstream.
+https://github.com/buytenh/ivykis/issues/15
+
+Upstream-Status: Pending
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ lib/ivykis/src/pthr.h | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/lib/ivykis/src/pthr.h b/lib/ivykis/src/pthr.h
+index a41eaf3..72c5190 100644
+--- a/lib/ivykis/src/pthr.h
++++ b/lib/ivykis/src/pthr.h
+@@ -24,6 +24,16 @@
+ #include <pthread.h>
+ #include <signal.h>
+ 
++#ifdef __GLIBC__
++/* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
++ * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
++ * libpthread, as it is part of glibc anyway. */
++extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void * __dso_handle);
++extern void* __dso_handle __attribute__ ((__weak__));
++#else
++#define __register_atfork(prepare,parent,child,dso) pthread_atfork(prepare,parent,child)
++#endif
++
+ #ifdef HAVE_PRAGMA_WEAK
+ #pragma weak pthread_create
+ #endif
+@@ -36,16 +46,7 @@ static inline int pthreads_available(void)
+ 
+ #ifdef HAVE_PRAGMA_WEAK
+ 
+-/*
+- * On Linux, pthread_atfork() is defined in libpthread_nonshared.a,
+- * a static library, and we want to avoid "#pragma weak" for that
+- * symbol because that causes it to be undefined even if you link
+- * libpthread_nonshared.a in explicitly.
+- */
+-#ifndef HAVE_LIBPTHREAD_NONSHARED
+-#pragma weak pthread_atfork
+-#endif
+-
++#pragma weak __register_atfork
+ #pragma weak pthread_create
+ #pragma weak pthread_detach
+ #pragma weak pthread_getspecific
+@@ -73,8 +74,7 @@ static inline int
+ pthr_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void))
+ {
+ 	if (pthreads_available())
+-		return pthread_atfork(prepare, parent, child);
+-
++		return __register_atfork(prepare, parent, child, __dso_handle);
+ 	return ENOSYS;
+ }
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-when-HAVE_ENVIRON-defined.patch b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-when-HAVE_ENVIRON-defined.patch
deleted file mode 100644
index 5d481f2..0000000
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/Fix-the-memory-leak-problem-when-HAVE_ENVIRON-defined.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Fix the memory leak problem when HAVE_ENVIRON is defined
-
-Upstream-Status: Pending
-
-Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
----
-Index: syslog-ng-3.8.1/lib/gprocess.c
-===================================================================
---- syslog-ng-3.8.1.orig/lib/gprocess.c
-+++ syslog-ng-3.8.1/lib/gprocess.c
-@@ -1432,6 +1432,18 @@ g_process_startup_ok(void)
- 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/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.ac-add-option-enable-thread-tls-to-manage-.patch b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.ac-add-option-enable-thread-tls-to-manage-.patch
index c172e4e..4f8a3d0 100644
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.ac-add-option-enable-thread-tls-to-manage-.patch
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/configure.ac-add-option-enable-thread-tls-to-manage-.patch
@@ -10,21 +10,21 @@
  configure.ac | 17 +++++++++++------
  1 file changed, 11 insertions(+), 6 deletions(-)
 
-Index: syslog-ng-3.8.1/configure.ac
+Index: syslog-ng-3.15.1/configure.ac
 ===================================================================
---- syslog-ng-3.8.1.orig/configure.ac
-+++ syslog-ng-3.8.1/configure.ac
-@@ -147,6 +147,9 @@ AC_ARG_ENABLE(gprof,
+--- syslog-ng-3.15.1.orig/configure.ac
++++ syslog-ng-3.15.1/configure.ac
+@@ -190,6 +190,9 @@ AC_ARG_ENABLE(gprof,
  AC_ARG_ENABLE(memtrace,
                [  --enable-memtrace   Enable alternative leak debugging code.])
  
 +AC_ARG_ENABLE(thread-tls,
-+              [  --enable-thread-tls        Enable Thread Transport Layer Security support.],,enable_thread_tls="no")
++              [  --enable-thread-tls        Enable Thread Local Storage support.],,enable_thread_tls="no")
 +
  AC_ARG_ENABLE(dynamic-linking,
                [  --enable-dynamic-linking        Link everything dynamically.],,enable_dynamic_linking="auto")
  
-@@ -486,12 +489,14 @@ dnl ************************************
+@@ -591,12 +594,14 @@ dnl ***************************************************************************
  dnl Is the __thread keyword available?
  dnl ***************************************************************************
  
@@ -33,14 +33,14 @@
 -__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")])
+-[ac_cv_have_tls=yes; AC_DEFINE_UNQUOTED(HAVE_THREAD_KEYWORD, 1, "Whether Thread Local Storage 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")])
++    [ac_cv_have_tls=yes; AC_DEFINE_UNQUOTED(HAVE_THREAD_KEYWORD, 1, "Whether Thread Local Storage is supported by the system")])
 +fi
  
  dnl ***************************************************************************
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
similarity index 98%
copy from meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
copy to meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
index 0c6f543..9e910ca 100644
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
@@ -1,4 +1,4 @@
-@version: 3.8
+@version: 3.15
 #
 # Syslog-ng configuration file, compatible with default Debian syslogd
 # installation. Originally written by anonymous (I can't find his name)
@@ -16,7 +16,7 @@
 # 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();
+source s_src { systemd_journal(); internal();
        	     file("/proc/kmsg" program_override("kernel"));
 };
 
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit
similarity index 99%
rename from meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
rename to meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit
index 0c6f543..fb183ee 100644
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit
@@ -1,4 +1,4 @@
-@version: 3.8
+@version: 3.15
 #
 # Syslog-ng configuration file, compatible with default Debian syslogd
 # installation. Originally written by anonymous (I can't find his name)
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
index 6b30c20..39c3f59 100644
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
@@ -7,25 +7,40 @@
 Upstream-Status: pending
 
 Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+Updated-by: Andrej Valek <andrej.valek@siemens.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
-@@ -4,8 +4,8 @@ Description=System Logger Daemon
- 
- [Service]
+diff --git a/contrib/systemd/syslog-ng@.service b/contrib/systemd/syslog-ng@.service
+index a28640e..93aec94 100644
+--- a/contrib/systemd/syslog-ng@.service
++++ b/contrib/systemd/syslog-ng@.service
+@@ -7,8 +7,8 @@ Conflicts=emergency.service emergency.target
  Type=notify
--ExecStart=/usr/sbin/syslog-ng -F $SYSLOGNG_OPTS
+ EnvironmentFile=-/etc/default/syslog-ng@%i
+ EnvironmentFile=-/etc/sysconfig/syslog-ng@%i
+-ExecStart=/usr/sbin/syslog-ng -F $OTHER_OPTIONS --cfgfile $CONFIG_FILE --control $CONTROL_FILE --persist-file $PERSIST_FILE --pidfile $PID_FILE
 -ExecReload=/bin/kill -HUP $MAINPID
-+ExecStart=@SBINDIR@/syslog-ng -F $SYSLOGNG_OPTS -p @LOCALSTATEDIR@/run/syslogd.pid
++ExecStart=@SBINDIR@/syslog-ng -F $OTHER_OPTIONS --cfgfile $CONFIG_FILE --control $CONTROL_FILE --persist-file $PERSIST_FILE --pidfile $PID_FILE
 +ExecReload=@BASEBINDIR@/kill -HUP $MAINPID
- EnvironmentFile=-/etc/default/syslog-ng
- EnvironmentFile=-/etc/sysconfig/syslog-ng
  StandardOutput=journal
+ StandardError=journal
+ Restart=on-failure
+diff --git a/contrib/systemd/syslog-ng@default b/contrib/systemd/syslog-ng@default
+index 02da288..3a8215d 100644
+--- a/contrib/systemd/syslog-ng@default
++++ b/contrib/systemd/syslog-ng@default
+@@ -1,5 +1,5 @@
+-CONFIG_FILE=/etc/syslog-ng.conf
+-PERSIST_FILE=/var/lib/syslog-ng/syslog-ng.persist
+-CONTROL_FILE=/var/lib/syslog-ng/syslog-ng.ctl
+-PID_FILE=/var/run/syslog-ng.pid
++CONFIG_FILE=/etc/syslog-ng/syslog-ng.conf
++PERSIST_FILE=@LOCALSTATEDIR@/lib/syslog-ng/syslog-ng.persist
++CONTROL_FILE=@LOCALSTATEDIR@/lib/syslog-ng/syslog-ng.ctl
++PID_FILE=@LOCALSTATEDIR@/run/syslog-ng.pid
+ OTHER_OPTIONS="--enable-core"
+
 -- 
 1.8.4.2
-
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
index 771cdb1..b52deff 100644
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
@@ -13,15 +13,18 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=24c0c5cb2c83d9f2ab725481e4df5240"
 
 # util-linux added to get libuuid
-DEPENDS = "libpcre flex eventlog glib-2.0 openssl util-linux"
+DEPENDS = "libpcre flex glib-2.0 openssl util-linux"
 
 SRC_URI = "https://github.com/balabit/syslog-ng/releases/download/${BP}/${BP}.tar.gz \
-           file://syslog-ng.conf \
+           file://syslog-ng.conf.systemd \
+           file://syslog-ng.conf.sysvinit \
            file://initscript \
            file://volatiles.03_syslog-ng \
            file://configure.ac-add-option-enable-thread-tls-to-manage-.patch \
 "
 
+UPSTREAM_CHECK_URI = "https://github.com/balabit/syslog-ng/releases"
+
 inherit autotools gettext systemd pkgconfig update-rc.d
 
 EXTRA_OECONF = " \
@@ -67,15 +70,8 @@
 	cd $olddir
 }
 
-do_install_prepend() {
-    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
-}
-
 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
     install -d ${D}/${sysconfdir}/default/volatiles/
@@ -83,16 +79,43 @@
     install -d ${D}/${localstatedir}/lib/${BPN}
     # Remove /var/run as it is created on startup
     rm -rf ${D}${localstatedir}/run
+
+    # support for systemd
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install ${WORKDIR}/syslog-ng.conf.systemd ${D}${sysconfdir}/${BPN}/${BPN}.conf
+
+        install -d ${D}${systemd_unitdir}/system/
+        install -m 0644 ${S}/contrib/systemd/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@.service
+        install -m 0644 ${S}/contrib/systemd/${BPN}@default ${D}${sysconfdir}/default/${BPN}@default
+
+        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${sysconfdir}/default/${BPN}@default
+        sed -i -e 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${sysconfdir}/default/${BPN}@default
+        sed -i -e 's,@BASEBINDIR@,${base_bindir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${sysconfdir}/default/${BPN}@default
+
+        install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
+        ln -sf ../${BPN}@.service ${D}${systemd_unitdir}/system/multi-user.target.wants/${BPN}@default.service
+    else
+        install ${WORKDIR}/syslog-ng.conf.sysvinit ${D}${sysconfdir}/${BPN}/${BPN}.conf
+    fi
 }
 
-FILES_${PN} += "${datadir}/include/scl/ ${datadir}/xsd ${datadir}/tools"
-RDEPENDS_${PN} += "gawk"
+FILES_${PN} += "${datadir}/include/scl/ ${datadir}/xsd ${datadir}/tools ${systemd_unitdir}/system/multi-user.target.wants/*"
+RDEPENDS_${PN} += "gawk ${@bb.utils.contains('PACKAGECONFIG','json','${PN}-jconf','',d)}"
+
+FILES_${PN}-jconf += " \
+${datadir}/${BPN}/include/scl/cim \
+${datadir}/${BPN}/include/scl/elasticsearch \
+${datadir}/${BPN}/include/scl/ewmm \
+${datadir}/${BPN}/include/scl/graylog2 \
+${datadir}/${BPN}/include/scl/loggly \
+${datadir}/${BPN}/include/scl/logmatic \
+"
 
 # This overcomes the syslog-ng rdepends on syslog-ng-dev QA Error
-PACKAGES =+ "${PN}-libs ${PN}-libs-dev ${PN}-libs-dbg"
+PACKAGES =+ "${PN}-jconf ${PN}-libs ${PN}-libs-dev"
+RPROVIDES_${PN}-dbg += "${PN}-libs-dbg"
 FILES_${PN}-libs = "${libdir}/${BPN}/*.so ${libdir}/libsyslog-ng-*.so*"
 FILES_${PN}-libs-dev = "${libdir}/${BPN}/lib*.la"
-FILES_${PN}-libs-dbg = "${libdir}/${BPN}/.debug"
 FILES_${PN}-staticdev += "${libdir}/${BPN}/libtest/*.a"
 INSANE_SKIP_${PN}-libs = "dev-so"
 RDEPENDS_${PN} += "${PN}-libs"
@@ -108,7 +131,7 @@
 RPROVIDES_${PN} += "${PN}-systemd"
 RREPLACES_${PN} += "${PN}-systemd"
 RCONFLICTS_${PN} += "${PN}-systemd"
-SYSTEMD_SERVICE_${PN} = "${BPN}.service"
+SYSTEMD_SERVICE_${PN} = "${BPN}@.service"
 
 INITSCRIPT_NAME = "syslog"
 INITSCRIPT_PARAMS = "start 20 2 3 4 5 . stop 90 0 1 6 ."
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.16.1.bb b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.16.1.bb
new file mode 100644
index 0000000..b5f42cf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.16.1.bb
@@ -0,0 +1,16 @@
+require syslog-ng.inc
+
+SRC_URI = "https://github.com/balabit/syslog-ng/releases/download/${BP}/${BP}.tar.gz \
+           file://syslog-ng.conf.systemd \
+           file://syslog-ng.conf.sysvinit \
+           file://initscript \
+           file://volatiles.03_syslog-ng \
+           file://configure.ac-add-option-enable-thread-tls-to-manage-.patch \
+           file://fix-config-libnet.patch \
+           file://fix-invalid-ownership.patch \
+           file://syslog-ng.service-the-syslog-ng-service.patch \
+           file://0001-syslog-ng-fix-segment-fault-during-service-start.patch \
+           "
+
+SRC_URI[md5sum] = "72d44ad02c2e9ba0748b3ecd3f15a7ff"
+SRC_URI[sha256sum] = "c7ee6f1d5e98d86f191964e580111bfa71081ecbb3275cea035bbba177b73a29"
diff --git a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.8.1.bb b/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.8.1.bb
deleted file mode 100644
index 91a0e46..0000000
--- a/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.8.1.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require syslog-ng.inc
-
-SRC_URI += " \
-    file://fix-config-libnet.patch \
-    file://fix-invalid-ownership.patch \
-    file://Fix-the-memory-leak-problem-when-HAVE_ENVIRON-defined.patch \
-    file://syslog-ng.service-the-syslog-ng-service.patch \
-"
-
-SRC_URI[md5sum] = "acf14563cf5ce435db8db35486ce66af"
-SRC_URI[sha256sum] = "84b081f6e5f98cbc52052e342bcfdc5de5fe0ebe9f5ec32fe9eaec5759224cc5"
diff --git a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-do-not-strip-pdata_tools-at-do_install.patch b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-do-not-strip-pdata_tools-at-do_install.patch
index b4cdda1..547949d 100644
--- a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-do-not-strip-pdata_tools-at-do_install.patch
+++ b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-do-not-strip-pdata_tools-at-do_install.patch
@@ -1,6 +1,6 @@
-From e8be402e20cbdfbd8192a171ac9904d9362103bf Mon Sep 17 00:00:00 2001
+From de869ad2cb19d81257a159770ebe27593a71593c Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 31 Aug 2016 01:35:40 -0400
+Date: Tue, 31 Jul 2018 11:29:51 +0800
 Subject: [PATCH] do not strip pdata_tools at do_install
 
 It caused QA Issue:
@@ -17,11 +17,11 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/Makefile.in b/Makefile.in
-index 4264191..ac22042 100644
+index 02b75dd..df590b4 100644
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -189,7 +189,6 @@ distclean: clean
- install: bin/pdata_tools
+@@ -267,7 +267,6 @@ MANPAGES:=$(patsubst %,man8/%.8,$(TOOLS))
+ install: bin/pdata_tools $(MANPAGES)
  	$(INSTALL_DIR) $(BINDIR)
  	$(INSTALL_PROGRAM) bin/pdata_tools $(BINDIR)
 -	$(STRIP) $(BINDIR)/pdata_tools
@@ -29,5 +29,5 @@
  	ln -s -f pdata_tools $(BINDIR)/cache_dump
  	ln -s -f pdata_tools $(BINDIR)/cache_metadata_size
 -- 
-2.8.1
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-fix-compile-failed-with-libc-musl.patch b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-fix-compile-failed-with-libc-musl.patch
new file mode 100644
index 0000000..28b44da
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-fix-compile-failed-with-libc-musl.patch
@@ -0,0 +1,42 @@
+From fcbcf9c494cca166106ae4cb03c1dd135ee4f25c Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 1 Aug 2018 09:34:00 +0800
+Subject: [PATCH] fix compile failed with libc musl
+
+There is a failure while compiling with libc musl:
+[snip]
+|./block-cache/io_engine.h:18:17: error: expected
+unqualified-id before numeric constant
+|  unsigned const PAGE_SIZE = 4096;
+[snip]
+
+The musl defeines macro PAGE_SIZE, undef it conditionally
+could fix the issue.
+
+http://musl.openwall.narkive.com/tO8vrHdP/why-musl-define-page-size
+
+Upstream-Status: Submitted [git://github.com/jthornber/thin-provisioning-tools]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ block-cache/io_engine.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/block-cache/io_engine.h b/block-cache/io_engine.h
+index 1704251..e36b932 100644
+--- a/block-cache/io_engine.h
++++ b/block-cache/io_engine.h
+@@ -12,6 +12,10 @@
+ 
+ //----------------------------------------------------------------
+ 
++// Musl defines
++#ifdef PAGE_SIZE
++#undef PAGE_SIZE
++#endif
+ namespace bcache {
+ 	using sector_t = uint64_t;
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.6.3.bb b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.7.6.bb
old mode 100755
new mode 100644
similarity index 75%
rename from meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.6.3.bb
rename to meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.7.6.bb
index c9d6690..20cb17a
--- a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.6.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.7.6.bb
@@ -9,9 +9,12 @@
 
 SRC_URI = "git://github.com/jthornber/thin-provisioning-tools \
            file://0001-do-not-strip-pdata_tools-at-do_install.patch \
+           file://0001-fix-compile-failed-with-libc-musl.patch \
 "
 
-SRCREV = "49bfc12e9c7956c1ac134b24afbe1a6a602ce7d5"
+SRCREV = "6f936992b8e6208a7838fcf1ec87c5bd3a694a77"
+
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
 
 DEPENDS += "expat libaio boost"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-include-sys-sysmacros.h.patch b/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-include-sys-sysmacros.h.patch
new file mode 100644
index 0000000..f140793
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-include-sys-sysmacros.h.patch
@@ -0,0 +1,77 @@
+From 64f051963d6cdeebd19f9e7f0a7e584a1f7acc60 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 11 Aug 2018 19:12:57 -0700
+Subject: [PATCH] include sys/sysmacros.h
+
+fixes build with glibc 2.28+
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/daemon.c          | 1 +
+ src/device.c          | 1 +
+ src/mount-monitor.c   | 1 +
+ tools/udisks.c        | 1 +
+ tools/umount-udisks.c | 1 +
+ 5 files changed, 5 insertions(+)
+
+diff --git a/src/daemon.c b/src/daemon.c
+index 14e952f..2c61cfb 100644
+--- a/src/daemon.c
++++ b/src/daemon.c
+@@ -39,6 +39,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <sys/time.h>
+ #include <sys/resource.h>
+diff --git a/src/device.c b/src/device.c
+index d73f9d6..5911d78 100644
+--- a/src/device.c
++++ b/src/device.c
+@@ -29,6 +29,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/wait.h>
+ #include <sys/stat.h>
+ #include <sys/time.h>
+diff --git a/src/mount-monitor.c b/src/mount-monitor.c
+index 573a69c..ccf3365 100644
+--- a/src/mount-monitor.c
++++ b/src/mount-monitor.c
+@@ -28,6 +28,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <mntent.h>
+ 
+diff --git a/tools/udisks.c b/tools/udisks.c
+index d30159b..f24a30a 100644
+--- a/tools/udisks.c
++++ b/tools/udisks.c
+@@ -29,6 +29,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <sys/wait.h>
+ #include <fcntl.h>
+diff --git a/tools/umount-udisks.c b/tools/umount-udisks.c
+index 2813fe0..5cf6b4d 100644
+--- a/tools/umount-udisks.c
++++ b/tools/umount-udisks.c
+@@ -29,6 +29,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <pwd.h>
diff --git a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/0001-data-fix-out-of-tree-build.patch b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/0001-data-fix-out-of-tree-build.patch
deleted file mode 100644
index 1cbd877..0000000
--- a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/0001-data-fix-out-of-tree-build.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 7fdd4acdf6daf95c5cc74e968f4710513c8ddaea Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Fri, 23 Mar 2018 18:33:52 +0100
-Subject: [PATCH] data: fix out of tree build
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-| sed: can't read udisks2.service.in: No such file or directory
-
-Upstream-Status: Submitted [1]
-
-[1] https://github.com/storaged-project/udisks/pull/510
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- data/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/data/Makefile.am b/data/Makefile.am
-index ddf9e3d6..b38928c8 100644
---- a/data/Makefile.am
-+++ b/data/Makefile.am
-@@ -22,7 +22,7 @@ systemdservicedir       = $(systemdsystemunitdir)
- systemdservice_DATA     = $(systemdservice_in_files:.service.in=.service)
- 
- $(systemdservice_DATA): udisks2.service.in Makefile
--	@sed -e "s|\@udisksdprivdir\@|$(libexecdir)/udisks2|" udisks2.service.in > udisks2.service
-+	@sed -e "s|\@udisksdprivdir\@|$(libexecdir)/udisks2|" $(srcdir)/udisks2.service.in > udisks2.service
- endif
- 
- udevrulesdir = $(udevdir)/rules.d
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.6.bb b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.8.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.6.bb
rename to meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.8.bb
index 4d22afd..64b338f 100644
--- a/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.6.bb
+++ b/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.8.bb
@@ -19,11 +19,10 @@
 RDEPENDS_${PN} = "acl"
 
 SRC_URI = " \
-    git://github.com/storaged-project/udisks.git \
-    file://0001-data-fix-out-of-tree-build.patch \
+    git://github.com/storaged-project/udisks.git;branch=2.7.x-branch \
     file://non-gnu-libc.patch \
 "
-SRCREV = "b6471f2e99f6aa1133af0de658f1fa05c748932c"
+SRCREV = "47bc0141cb84624ba1e2242d596a89a30df1f5ea"
 S = "${WORKDIR}/git"
 
 CVE_PRODUCT = "udisks"
diff --git a/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb b/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb
index e332660..7cd9992 100644
--- a/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb
@@ -11,13 +11,13 @@
     dbus-glib-native \
 "
 
-SRC_URI = " \
-    http://hal.freedesktop.org/releases/${BPN}-${PV}.tar.gz;name=${BPN} \
-    file://optional-depends.patch \
-    file://0001-fix-build-with-newer-glibc-versions.patch \
-    file://udisks-1.0.5-fix-service-file.patch \
-    file://0001-Make-udev-rules-directory-configurable.patch \
-"
+SRC_URI = "http://hal.freedesktop.org/releases/${BPN}-${PV}.tar.gz;name=${BPN} \
+           file://optional-depends.patch \
+           file://0001-fix-build-with-newer-glibc-versions.patch \
+           file://udisks-1.0.5-fix-service-file.patch \
+           file://0001-Make-udev-rules-directory-configurable.patch \
+           file://0001-include-sys-sysmacros.h.patch \
+           "
 
 SRC_URI[udisks.md5sum] = "70d48dcfe523a74cd7c7fbbc2847fcdd"
 SRC_URI[udisks.sha256sum] = "f2ec82eb0ea7e01dc299b5b29b3c18cdf861236ec43dcff66b3552b4b31c6f71"
diff --git a/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.0.0.bb b/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.0.0.bb
new file mode 100644
index 0000000..6306ddb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.0.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "USB hub per-port power control"
+HOMEPAGE = "https://github.com/mvp/uhubctl"
+BUGTRACKER = "https://github.com/mvp/uhubctl/issues"
+DEPENDS = "libusb1"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "https://github.com/mvp/${PN}/archive/v${PV}.tar.gz"
+SRC_URI[md5sum] = "5c711911d766d76813333c3812277574"
+SRC_URI[sha256sum] = "4c31278b2c03e5be5a696c3088bc86cf2557a70e00f697799c163aba18e3c40e"
+
+# uhubctl gets its program version from "git describe". As we use the source
+# archive do reduce download size replace the call with our hardcoded version.
+do_configure_append() {
+    sed -i "s/^\(GIT_VERSION :=\).*$/\1 ${PV}/g" ${S}/Makefile
+}
+
+do_install () {
+    oe_runmake install DESTDIR=${D}
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.6.bb b/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.6.bb
index 62d9db8..2674d35 100644
--- a/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.6.bb
+++ b/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.6.bb
@@ -14,6 +14,8 @@
 SRC_URI[md5sum] = "a8629fd2953b04b4639d0a9d8a5cf9d1"
 SRC_URI[sha256sum] = "88b637f647c052ecc3861a3baa275c3b503b193b6a49ff8c28b2568656d14d69"
 
+UPSTREAM_CHECK_REGEX = "unixODBC-(?P<pver>\d+(\.\d+)+)\.tar"
+
 inherit autotools-brokensep
 
 S = "${WORKDIR}/unixODBC-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-support/upower/upower/0001-linux-lower-severity-of-unhandled-action-messages.patch b/meta-openembedded/meta-oe/recipes-support/upower/upower/0001-linux-lower-severity-of-unhandled-action-messages.patch
new file mode 100644
index 0000000..de89dc0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/upower/upower/0001-linux-lower-severity-of-unhandled-action-messages.patch
@@ -0,0 +1,31 @@
+From f64b6ce8054b47e5bdcc8c4c7965534b388e6151 Mon Sep 17 00:00:00 2001
+From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Date: Fri, 6 Apr 2018 11:26:54 -0700
+Subject: [PATCH] linux: lower severity of "unhandled action" messages
+
+Newer kernels emit bind/unbind uevents that are not of interest to
+powerd. To avoid littering logs with scary messages, let's lower their
+severity to "debug".
+
+https://bugs.freedesktop.org/show_bug.cgi?id=106019
+
+Upstream-Status: Backport
+---
+ src/linux/up-backend.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/linux/up-backend.c b/src/linux/up-backend.c
+index e668dc8..b8021e7 100644
+--- a/src/linux/up-backend.c
++++ b/src/linux/up-backend.c
+@@ -273,7 +273,7 @@ up_backend_uevent_signal_handler_cb (GUdevClient *client, const gchar *action,
+ 		g_debug ("SYSFS change %s", g_udev_device_get_sysfs_path (device));
+ 		up_backend_device_changed (backend, device);
+ 	} else {
+-		g_warning ("unhandled action '%s' on %s", action, g_udev_device_get_sysfs_path (device));
++		g_debug ("unhandled action '%s' on %s", action, g_udev_device_get_sysfs_path (device));
+ 	}
+ }
+ 
+-- 
+2.17.0.484.g0c8726318c-goog
diff --git a/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.7.bb b/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.7.bb
index 973fbe7..2cf3163 100644
--- a/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.7.bb
@@ -4,7 +4,10 @@
 
 DEPENDS = "intltool-native libusb1 libgudev glib-2.0 dbus-glib polkit"
 
-SRC_URI = "http://upower.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
+SRC_URI = " \
+    http://upower.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+    file://0001-linux-lower-severity-of-unhandled-action-messages.patch \
+"
 SRC_URI[md5sum] = "236bb439d9ff1151450b3d8582399532"
 SRC_URI[sha256sum] = "24bcc2f6ab25a2533bac70b587bcb019e591293076920f5b5e04bdedc140a401"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.8.4.bb b/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.8.4.bb
index b4be853..bfcdf83 100644
--- a/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.8.4.bb
+++ b/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.8.4.bb
@@ -12,3 +12,5 @@
 
 SRC_URI[md5sum] = "9aabdc3611546f553f4af372167de6d6"
 SRC_URI[sha256sum] = "ce7ccda4136974889231e8426a785e7578e66a6283009cfd13f1b24a5e657b23"
+
+BBCLASSEXTEND += "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-4.18.patch b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-4.18.patch
new file mode 100644
index 0000000..93eaa3d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-4.18.patch
@@ -0,0 +1,33 @@
+Description: Fix build failure with new kernel 4.18
+Author: Gianfranco Costamagna <locutusofborg@debian.org>
+
+Upstream-Status:Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: vbox_module/vboxsf/utils.c
+===================================================================
+--- vbox_module.orig/vboxsf/utils.c
++++ vbox_module/vboxsf/utils.c
+@@ -50,7 +50,11 @@ static void sf_timespec_from_ftime(RTTIM
+     RTTimeSpecSetNano(ts, t);
+ }
+ #else /* >= 2.6.0 */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
+ static void sf_ftime_from_timespec(struct timespec *tv, RTTIMESPEC *ts)
++#else
++static void sf_ftime_from_timespec(struct timespec64 *tv, RTTIMESPEC *ts)
++#endif
+ {
+     int64_t t = RTTimeSpecGetNano(ts);
+     int64_t nsec;
+@@ -60,7 +64,11 @@ static void sf_ftime_from_timespec(struc
+     tv->tv_nsec = nsec;
+ }
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
+ static void sf_timespec_from_ftime(RTTIMESPEC *ts, struct timespec *tv)
++#else
++static void sf_timespec_from_ftime(RTTIMESPEC *ts, struct timespec64 *tv)
++#endif
+ {
+     int64_t t = (int64_t)tv->tv_nsec + (int64_t)tv->tv_sec * 1000000000;
+     RTTimeSpecSetNano(ts, t);
diff --git a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.8.bb b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.18.bb
similarity index 93%
rename from meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.8.bb
rename to meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.18.bb
index e00db4d..2a4cc38 100644
--- a/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.18.bb
@@ -13,10 +13,10 @@
 
 SRC_URI = "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \
     file://Makefile.utils \
+    file://kernel-4.18.patch \
 "
-
-SRC_URI[md5sum] = "e731ea9c5c31096ec4c2a3bfba26665c"
-SRC_URI[sha256sum] = "ee2759d47b0b4ac81b8b671c9485c87fb2db12c097b3e7e69b94c1291a8084e8"
+SRC_URI[md5sum] = "d8e291525b84569356773eef507c49ce"
+SRC_URI[sha256sum] = "ed0a7efd56c7f39fae79c7ec3321473da412ef0d7914457b66f42679d513efcf"
 
 S = "${WORKDIR}/vbox_module"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/vim/files/CVE-2017-17087.patch b/meta-openembedded/meta-oe/recipes-support/vim/files/CVE-2017-17087.patch
deleted file mode 100644
index 937b9ba..0000000
--- a/meta-openembedded/meta-oe/recipes-support/vim/files/CVE-2017-17087.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 9c11f80339372b7aa2f43153d574f2b5abb79708 Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Sun, 17 Dec 2017 23:09:35 -0800
-Subject: [PATCH] vim: patch 8.0.1263: others can read the swap file if a user
- is careless
-
-Problem:    Others can read the swap file if a user is careless with his
-            primary group.
-Solution:   If the group permission allows for reading but the world
-            permissions doesn't, make sure the group is right.
-
-Upstream-Status: Backport
-CVE: CVE-2017-17087
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- src/fileio.c  | 24 +++++++++++++++++++++++-
- src/version.c |  2 ++
- 2 files changed, 25 insertions(+), 1 deletion(-)
-
-diff --git a/src/fileio.c b/src/fileio.c
-index f54fb8465..2c7740af9 100644
---- a/src/fileio.c
-+++ b/src/fileio.c
-@@ -716,7 +716,29 @@ readfile(
- 	/* Set swap file protection bits after creating it. */
- 	if (swap_mode > 0 && curbuf->b_ml.ml_mfp != NULL
- 			  && curbuf->b_ml.ml_mfp->mf_fname != NULL)
--	    (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname, (long)swap_mode);
-+	{
-+	    char_u *swap_fname = curbuf->b_ml.ml_mfp->mf_fname;
-+
-+	    /*
-+	     * If the group-read bit is set but not the world-read bit, then
-+	     * the group must be equal to the group of the original file.  If
-+	     * we can't make that happen then reset the group-read bit.  This
-+	     * avoids making the swap file readable to more users when the
-+	     * primary group of the user is too permissive.
-+	     */
-+	    if ((swap_mode & 044) == 040)
-+	    {
-+		stat_T	swap_st;
-+
-+		if (mch_stat((char *)swap_fname, &swap_st) >= 0
-+			&& st.st_gid != swap_st.st_gid
-+			&& fchown(curbuf->b_ml.ml_mfp->mf_fd, -1, st.st_gid)
-+									 == -1)
-+		    swap_mode &= 0600;
-+	    }
-+
-+	    (void)mch_setperm(swap_fname, (long)swap_mode);
-+	}
- #endif
-     }
- 
-diff --git a/src/version.c b/src/version.c
-index a5cb078f0..5c0df475f 100644
---- a/src/version.c
-+++ b/src/version.c
-@@ -770,6 +770,8 @@ static char *(features[]) =
- static int included_patches[] =
- {   /* Add new patch number below this line */
- /**/
-+    1263,
-+/**/
-     983,
- /**/
-     982,
--- 
-2.11.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch b/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch
index 65e5f58..4720003 100644
--- a/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch
+++ b/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch
@@ -1,14 +1,23 @@
-Upstream-Status: pending
+From 5ed25c076a1fb1889a3c50dddf29f21850b59a13 Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com> 
+Date: Tue, 26 Jun 2018 17:29:09 +0800
+Subject: [PATCH] disable acl header check
 
 Don't check 'sys/acl.h' if acl support disabled for vim/vim-tiny.
 
+Upstream-Status: pending
+
 Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
-================================================
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ src/configure.ac | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
 diff --git a/src/configure.ac b/src/configure.ac
-index fb965e5..d734064 100644
+index 107c170..0ee86ad 100644
 --- a/src/configure.ac
 +++ b/src/configure.ac
-@@ -2511,7 +2511,7 @@ AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
+@@ -3220,7 +3220,7 @@ AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
  	sys/systeminfo.h locale.h sys/stream.h termios.h \
  	libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
  	utime.h sys/param.h libintl.h libgen.h \
@@ -17,11 +26,14 @@
  	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,
+@@ -3848,6 +3848,7 @@ AC_ARG_ENABLE(acl,
  	, [enable_acl="yes"])
  if test "$enable_acl" = "yes"; then
- AC_MSG_RESULT(no)
-+AC_CHECK_HEADERS(sys/acl.h)
- AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
+   AC_MSG_RESULT(no)
++  AC_CHECK_HEADERS(sys/acl.h)
+   AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
  	AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
  		  AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch b/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
index 6c620f9..37914d4 100644
--- a/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
+++ b/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
@@ -1,20 +1,24 @@
-vim: add knob whether elf.h are checked
+From 38de4bccdb8a861ffdd447f12fdab19d6d852c02 Mon Sep 17 00:00:00 2001
+From: Chong Lu <Chong.Lu@windriver.com>
+Date: Tue, 26 Jun 2018 17:34:15 +0800
+Subject: [PATCH] vim: add knob whether elf.h are checked
 
 Previously, it still was checked when there was no elf library in sysroots directory.
 Add knob to decide whether elf.h are checked or not.
 
-Upstream-status: Pending
+Upstream-Status: Pending
 
 Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
 ---
- src/configure.ac |    7 +++++++
+ src/configure.ac | 7 +++++++
  1 file changed, 7 insertions(+)
 
 diff --git a/src/configure.ac b/src/configure.ac
-index d734064..f504fa6 100644
+index 0ee86ad..64736f0 100644
 --- a/src/configure.ac
 +++ b/src/configure.ac
-@@ -2483,11 +2483,18 @@ AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
+@@ -3192,11 +3192,18 @@ AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
  	AC_MSG_RESULT(no))
  
  dnl Checks for header files.
@@ -34,5 +38,5 @@
  AC_HEADER_DIRENT
  
 -- 
-1.7.9.5
+2.7.4
 
diff --git a/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.0.0983.bb b/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.0.0983.bb
deleted file mode 100644
index bb8f2b7..0000000
--- a/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.0.0983.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-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/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.1.0347.bb b/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.1.0347.bb
new file mode 100644
index 0000000..8b1fb7b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.1.0347.bb
@@ -0,0 +1,15 @@
+require vim_${PV}.bb
+
+SUMMARY += " (with tiny features)"
+
+PROVIDES_remove = "xxd"
+ALTERNATIVE_${PN}_remove = "xxd"
+
+PACKAGECONFIG += "tiny"
+
+do_install() {
+    install -D -m 0755 ${S}/vim ${D}/${bindir}/vim.tiny
+}
+
+ALTERNATIVE_PRIORITY = "90"
+ALTERNATIVE_TARGET = "${bindir}/vim.tiny"
diff --git a/meta-openembedded/meta-oe/recipes-support/vim/vim_8.0.0983.bb b/meta-openembedded/meta-oe/recipes-support/vim/vim_8.1.0347.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-support/vim/vim_8.0.0983.bb
rename to meta-openembedded/meta-oe/recipes-support/vim/vim_8.1.0347.bb
index 44c868c..46d229e 100644
--- a/meta-openembedded/meta-oe/recipes-support/vim/vim_8.0.0983.bb
+++ b/meta-openembedded/meta-oe/recipes-support/vim/vim_8.1.0347.bb
@@ -1,17 +1,18 @@
 SUMMARY = "Vi IMproved - enhanced vi editor"
 SECTION = "console/utils"
+
+PROVIDES = "xxd"
 DEPENDS = "ncurses gettext-native"
 # vimdiff doesn't like busybox diff
 RSUGGESTS_${PN} = "diffutils"
 LICENSE = "vim"
-LIC_FILES_CHKSUM = "file://../runtime/doc/uganda.txt;md5=eea32ac1424bba14096736a494ae9045"
+LIC_FILES_CHKSUM = "file://../runtime/doc/uganda.txt;endline=287;md5=f1f82b42360005c70b8c19b0ef493f72"
 
 SRC_URI = "git://github.com/vim/vim.git \
            file://disable_acl_header_check.patch;patchdir=.. \
            file://vim-add-knob-whether-elf.h-are-checked.patch;patchdir=.. \
-           file://CVE-2017-17087.patch;patchdir=.. \
 "
-SRCREV = "3f9a1ff141412e9e85f7dff47d02946cb9be9228"
+SRCREV = "f1c118be93184e8e57e3e80b1b3383f464ed649e"
 
 S = "${WORKDIR}/git/src"
 
@@ -54,7 +55,7 @@
     vim_cv_memmove_handles_overlap=yes \
     vim_cv_stat_ignores_slash=no \
     vim_cv_terminfo=yes \
-    vim_cv_tgent=non-zero \
+    vim_cv_tgetent=non-zero \
     vim_cv_toupper_broken=no \
     vim_cv_tty_group=world \
     STRIP=/bin/true \
@@ -105,10 +106,12 @@
 # Recommend that runtime data is installed along with vim
 RRECOMMENDS_${BPN} = "${PN}-syntax ${PN}-help ${PN}-tutor ${PN}-vimrc ${PN}-common"
 
-ALTERNATIVE_${PN} = "vi vim"
+ALTERNATIVE_${PN} = "vi vim xxd"
+ALTERNATIVE_PRIORITY = "100"
 ALTERNATIVE_TARGET = "${bindir}/${BPN}.${BPN}"
 ALTERNATIVE_LINK_NAME[vi] = "${base_bindir}/vi"
 ALTERNATIVE_LINK_NAME[vim] = "${bindir}/vim"
-ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE_TARGET[xxd] = "${bindir}/xxd"
+ALTERNATIVE_LINK_NAME[xxd] = "${bindir}/xxd"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.7.0/0001-Fix-issue-599.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.7.0/0001-Fix-issue-599.patch
rename to meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.7.0/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.7.0/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch
rename to meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.7.0/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.7.0/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch
rename to meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.7.0/disable-tests.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.7.0/disable-tests.patch
rename to meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.7.0.bb b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.7.0.bb
deleted file mode 100644
index 65fc974..0000000
--- a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.7.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "C++/Boost Asio based websocket client/server library."
-SECTION = "libs/network"
-HOMEPAGE = "https://github.com/zaphoyd/websocketpp"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=4d168d763c111f4ffc62249870e4e0ea"
-DEPENDS = "openssl boost zlib"
-
-SRC_URI = "git://github.com/zaphoyd/websocketpp.git;protocol=https;branch=master"
-
-# tag 0.7.0
-SRCREV= "378437aecdcb1dfe62096ffd5d944bf1f640ccc3"
-
-SRC_URI += "file://0001-Fix-issue-599.patch \
-            file://9ddb300d874a30db35e3ad58f188944bef0bf31b.patch \
-            file://4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch \
-            file://disable-tests.patch \
- "
-
-S = "${WORKDIR}/git"
-
-inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
new file mode 100644
index 0000000..75a5f88
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "C++/Boost Asio based websocket client/server library."
+SECTION = "libs/network"
+HOMEPAGE = "https://github.com/zaphoyd/websocketpp"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=4d168d763c111f4ffc62249870e4e0ea"
+DEPENDS = "openssl boost zlib"
+
+SRC_URI = "git://github.com/zaphoyd/websocketpp.git;protocol=https;branch=master"
+
+# tag 0.8.1
+SRCREV= "c6d7e295bf5a0ab9b5f896720cc1a0e0fdc397a7"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-test/catch2/catch2/0001-Fix-convert-from-char-on-ARM-build.patch b/meta-openembedded/meta-oe/recipes-test/catch2/catch2/0001-Fix-convert-from-char-on-ARM-build.patch
new file mode 100644
index 0000000..3073775
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-test/catch2/catch2/0001-Fix-convert-from-char-on-ARM-build.patch
@@ -0,0 +1,46 @@
+From 5729874fa5059c39aa97cfa08fddf107b7a65c9e Mon Sep 17 00:00:00 2001
+From: Miguel Gaio <mgaio35@gmail.com>
+Date: Wed, 3 Oct 2018 10:22:16 +0200
+Subject: [PATCH] Fix convert from char on ARM build
+
+Some platforms set the signedness of char to unsigned (eg. ARM).
+Convert from char should not assume the signedness of char.
+
+Fix build issue with -Werror,-Wtautological-unsigned-zero-compare flags.
+
+Signed-off-by: Miguel Gaio <mgaio35@gmail.com>
+
+Upstream-Status: Accepted [Commit f1faaa9c107113692301ad8bb56084460ef1a2ff]
+
+Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
+---
+ include/internal/catch_tostring.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/include/internal/catch_tostring.cpp b/include/internal/catch_tostring.cpp
+index 4e0c027d..8cbabbf2 100644
+--- a/include/internal/catch_tostring.cpp
++++ b/include/internal/catch_tostring.cpp
+@@ -205,7 +205,7 @@ std::string StringMaker<bool>::convert(bool b) {
+     return b ? "true" : "false";
+ }
+ 
+-std::string StringMaker<char>::convert(char value) {
++std::string StringMaker<signed char>::convert(signed char value) {
+     if (value == '\r') {
+         return "'\\r'";
+     } else if (value == '\f') {
+@@ -222,8 +222,8 @@ std::string StringMaker<char>::convert(char value) {
+         return chstr;
+     }
+ }
+-std::string StringMaker<signed char>::convert(signed char c) {
+-    return ::Catch::Detail::stringify(static_cast<char>(c));
++std::string StringMaker<char>::convert(char c) {
++    return ::Catch::Detail::stringify(static_cast<signed char>(c));
+ }
+ std::string StringMaker<unsigned char>::convert(unsigned char c) {
+     return ::Catch::Detail::stringify(static_cast<char>(c));
+-- 
+2.19.1
+
diff --git a/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.4.1.bb b/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.4.1.bb
new file mode 100644
index 0000000..0183c2e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.4.1.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "A modern, C++-native, header-only, test framework for unit-tests, \
+TDD and BDD - using C++11, C++14, C++17 and later."
+AUTHOR = "Phil Nash, Martin Horenovsky and others"
+HOMEPAGE = "https://github.com/catchorg/Catch2"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+
+SRC_URI = "git://github.com/catchorg/Catch2.git \
+           file://0001-Fix-convert-from-char-on-ARM-build.patch"
+SRCREV = "9e1bdca4667295fcb16265eae00efa8423f07007"
+
+S = "${WORKDIR}/git"
+
+inherit cmake python3native
+
+# Header-only library
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+
+do_install_append() {
+    rm ${D}/${datadir}/Catch2/lldbinit
+    rm ${D}/${datadir}/Catch2/gdbinit
+    rmdir ${D}/${datadir}/Catch2/
+}
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Add-correct-printf-qualifier-for-off_t.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Add-correct-printf-qualifier-for-off_t.patch
index 192e05f..c2d679a 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Add-correct-printf-qualifier-for-off_t.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Add-correct-printf-qualifier-for-off_t.patch
@@ -1,18 +1,19 @@
-From 232daf5fca6fb52cced5e810f2601fe1a71b96d8 Mon Sep 17 00:00:00 2001
+From 613e5cfe7751068062cc92f83870e436669fc0a8 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Thu, 8 Jun 2017 16:49:50 -0700
-Subject: [PATCH 1/3] Add correct printf qualifier for off_t
+Subject: [PATCH] Add correct printf qualifier for off_t
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/bios/ebda_region/ebda_region.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
 
-Index: git/src/bios/ebda_region/ebda_region.c
-===================================================================
---- git.orig/src/bios/ebda_region/ebda_region.c
-+++ git/src/bios/ebda_region/ebda_region.c
-@@ -83,9 +83,9 @@ static int ebda_test1(fwts_framework *fw
+---
+ src/bios/ebda_region/ebda_region.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/bios/ebda_region/ebda_region.c b/src/bios/ebda_region/ebda_region.c
+index 16c39357..ad6d635c 100644
+--- a/src/bios/ebda_region/ebda_region.c
++++ b/src/bios/ebda_region/ebda_region.c
+@@ -83,9 +83,9 @@ static int ebda_test1(fwts_framework *fw)
  	if ((entry != NULL) &&
  	    (entry->type == FWTS_MEMORY_MAP_RESERVED ||
  	     entry->type == FWTS_MEMORY_MAP_ACPI)) {
@@ -24,7 +25,7 @@
  			(entry->end_address - entry->start_address) / 1024,
  			memory_map_name,
  			entry->start_address,
-@@ -93,8 +93,8 @@ static int ebda_test1(fwts_framework *fw
+@@ -93,8 +93,8 @@ static int ebda_test1(fwts_framework *fw)
  	} else
  		fwts_failed(fw, LOG_LEVEL_MEDIUM,
  			"EBDAMappedNotReserved",
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Include-poll.h-instead-of-deprecated-sys-poll.h.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Include-poll.h-instead-of-deprecated-sys-poll.h.patch
index 8ad0789..4baefe4 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Include-poll.h-instead-of-deprecated-sys-poll.h.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Include-poll.h-instead-of-deprecated-sys-poll.h.patch
@@ -1,18 +1,19 @@
-From 100a107a53d5dc9b0554252ac5dbf2c9330615e9 Mon Sep 17 00:00:00 2001
+From ed988c27efde5355c3ba9d0de8a14a4a40f798cc Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 6 Jun 2017 07:25:09 -0700
-Subject: [PATCH 1/3] Include poll.h instead of deprecated sys/poll.h
+Subject: [PATCH] Include poll.h instead of deprecated sys/poll.h
 
 Upstream-Status: Pending
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  src/lib/src/fwts_ipmi.c   | 3 ++-
  src/lib/src/fwts_pipeio.c | 2 +-
  2 files changed, 3 insertions(+), 2 deletions(-)
 
 diff --git a/src/lib/src/fwts_ipmi.c b/src/lib/src/fwts_ipmi.c
-index cbb27611..70d11cfa 100644
+index a4c8a511..e298969e 100644
 --- a/src/lib/src/fwts_ipmi.c
 +++ b/src/lib/src/fwts_ipmi.c
 @@ -18,10 +18,11 @@
@@ -29,7 +30,7 @@
  #include <linux/ipmi.h>
  
 diff --git a/src/lib/src/fwts_pipeio.c b/src/lib/src/fwts_pipeio.c
-index fd719640..bdc5b2ea 100644
+index 3b3cfaff..289564d1 100644
 --- a/src/lib/src/fwts_pipeio.c
 +++ b/src/lib/src/fwts_pipeio.c
 @@ -30,9 +30,9 @@
@@ -43,6 +44,3 @@
  #include <sys/types.h>
  #include <sys/wait.h>
  #include <errno.h>
--- 
-2.13.0
-
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Remove-Werror-from-build.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Remove-Werror-from-build.patch
new file mode 100644
index 0000000..611ccc8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Remove-Werror-from-build.patch
@@ -0,0 +1,52 @@
+From 475979cf5c1af978f4e8409666365ec75b3320ea Mon Sep 17 00:00:00 2001
+From: Benjamin Berg <bberg@redhat.com>
+Date: Mon, 21 Aug 2017 10:34:40 +0200
+Subject: [PATCH] Remove -Werror from build
+
+Upstream-Status: Pending
+
+---
+ src/Makefile.am           | 2 +-
+ src/lib/src/Makefile.am   | 2 +-
+ src/utilities/Makefile.am | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 4daa9e8f..873f23eb 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -14,7 +14,7 @@ AM_CPPFLAGS = \
+ 	`pkg-config --silence-errors --cflags json` \
+ 	`pkg-config --silence-errors --cflags json-c` \
+ 	-pthread `pkg-config --cflags glib-2.0 gio-2.0` \
+-	-Wall -Werror -Wextra
++	-Wall -Wextra
+ 
+ bin_PROGRAMS = fwts
+ 
+diff --git a/src/lib/src/Makefile.am b/src/lib/src/Makefile.am
+index fa232451..082403a2 100644
+--- a/src/lib/src/Makefile.am
++++ b/src/lib/src/Makefile.am
+@@ -24,7 +24,7 @@ AM_CPPFLAGS = \
+ 	`pkg-config --silence-errors --cflags json-c`	\
+ 	`pkg-config --cflags glib-2.0 gio-2.0` 		\
+ 	-DDATAROOTDIR=\"$(datarootdir)\"		\
+-	-Wall -Werror -Wextra
++	-Wall -Wextra
+ 
+ pkglib_LTLIBRARIES = libfwts.la
+ 
+diff --git a/src/utilities/Makefile.am b/src/utilities/Makefile.am
+index aa37de55..4d5297cc 100644
+--- a/src/utilities/Makefile.am
++++ b/src/utilities/Makefile.am
+@@ -16,7 +16,7 @@
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ #
+ 
+-AM_CPPFLAGS = -Wall -Werror -Wextra -DDATAROOTDIR=\"$(datarootdir)\" \
++AM_CPPFLAGS = -Wall -Wextra -DDATAROOTDIR=\"$(datarootdir)\" \
+ 	`pkg-config --silence-errors --cflags json` \
+ 	`pkg-config --silence-errors --cflags json-c`
+ 
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-ignore-constant-logical-operand-warning-with-clang.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-ignore-constant-logical-operand-warning-with-clang.patch
index a3cc1ff..ae3665b 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-ignore-constant-logical-operand-warning-with-clang.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-ignore-constant-logical-operand-warning-with-clang.patch
@@ -1,9 +1,10 @@
-From 953cff93c85d3cfd5cbcac56e14443dc5f6e5fbd Mon Sep 17 00:00:00 2001
+From 5bd05ad8569880985ddf6d4c06ed927d388c297f Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 19 Oct 2016 01:57:16 +0000
 Subject: [PATCH] ignore constant-logical-operand warning with clang
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  src/dmi/dmicheck/dmicheck.c            | 3 +++
  src/lib/src/fwts_acpi_tables.c         | 5 +++++
@@ -11,10 +12,10 @@
  3 files changed, 13 insertions(+)
 
 diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
-index ecd98223..7fca4a64 100644
+index 3cca9db9..60fb758f 100644
 --- a/src/dmi/dmicheck/dmicheck.c
 +++ b/src/dmi/dmicheck/dmicheck.c
-@@ -209,6 +209,8 @@ static const char *uuid_patterns[] = {
+@@ -211,6 +211,8 @@ static const char *uuid_patterns[] = {
  	"0A0A0A0A-0A0A-0A0A-0A0A-0A0A0A0A0A0A",
  	NULL,
  };
@@ -23,19 +24,19 @@
  
  static const fwts_chassis_type_map fwts_dmi_chassis_type[] = {
  	{ "Invalid",		FWTS_SMBIOS_CHASSIS_INVALID },
-@@ -245,6 +247,7 @@ static const fwts_chassis_type_map fwts_dmi_chassis_type[] = {
- 	{ "Convertible",	FWTS_SMBIOS_CHASSIS_CONVERTIBLE },
- 	{ "Detachable",		FWTS_SMBIOS_CHASSIS_DETACHABLE },
+@@ -251,6 +253,7 @@ static const fwts_chassis_type_map fwts_dmi_chassis_type[] = {
+ 	{ "Mini PC",		FWTS_SMBIOS_CHASSIS_MINI_PC },
+ 	{ "Stick PC",		FWTS_SMBIOS_CHASSIS_STICK_PC },
  };
 +#pragma clang diagnostic pop
  
  /* Remapping table from buggy version numbers to correct values */
  static const fwts_dmi_version dmi_versions[] = {
 diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c
-index 30b4060e..d5339bf7 100644
+index c7ba59be..bdd224aa 100644
 --- a/src/lib/src/fwts_acpi_tables.c
 +++ b/src/lib/src/fwts_acpi_tables.c
-@@ -394,10 +394,14 @@ static int fwts_acpi_handle_fadt(
+@@ -393,10 +393,14 @@ static int fwts_acpi_handle_fadt(
  	/* Determine FACS addr and load it.
  	 * Will ignore the missing FACS in the hardware-reduced mode.
  	 */
@@ -50,7 +51,7 @@
  	if (result != FWTS_OK) {
  		if ((result == FWTS_NULL_POINTER) &&
  				fwts_acpi_is_reduced_hardware(fadt)) {
-@@ -416,6 +420,7 @@ static int fwts_acpi_handle_fadt(
+@@ -415,6 +419,7 @@ static int fwts_acpi_handle_fadt(
  		return FWTS_ERROR;
  	}
  	return FWTS_OK;
@@ -59,7 +60,7 @@
  
  /*
 diff --git a/src/uefi/uefirtauthvar/uefirtauthvar.c b/src/uefi/uefirtauthvar/uefirtauthvar.c
-index cdfd7aa3..001e8cc8 100644
+index c2031741..7a33d19d 100644
 --- a/src/uefi/uefirtauthvar/uefirtauthvar.c
 +++ b/src/uefi/uefirtauthvar/uefirtauthvar.c
 @@ -142,6 +142,9 @@ static int uefirtauthvar_deinit(fwts_framework *fw)
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Add-C99-defined-format-for-printing-uint64_t.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Add-C99-defined-format-for-printing-uint64_t.patch
deleted file mode 100644
index 35ce883..0000000
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Add-C99-defined-format-for-printing-uint64_t.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 25f18b9ac37960dc12a3b648a5c866bd56ef2cbe Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 8 Jun 2017 16:50:23 -0700
-Subject: [PATCH 2/3] Add C99 defined format for printing uint64_t
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/opal/reserv_mem.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/opal/reserv_mem.c b/src/opal/reserv_mem.c
-index eeec2947..f0672e05 100644
---- a/src/opal/reserv_mem.c
-+++ b/src/opal/reserv_mem.c
-@@ -185,7 +185,7 @@ static int reserv_mem_limits_test(fwts_framework *fw)
- 		regions[j].start = (uint64_t)be64toh(ranges[2 * j]);
- 		regions[j].len = (uint64_t)be64toh(ranges[2 * j + 1]);
- 		fwts_log_info(fw, "Region name %80s"
--			" start: 0x%08lx, len: 0x%08lx\n",
-+			" start: 0x%08" PRIx64 ", len: 0x%08" PRIx64 "\n",
- 			regions[j].name, regions[j].start, regions[j].len);
- 	}
- 
-@@ -248,7 +248,7 @@ static int reserv_mem_limits_test(fwts_framework *fw)
- 				fwts_failed(fw, LOG_LEVEL_MEDIUM,
- 					"ImageSizeMismatch",
- 					"Mismatch in homer-image size, "
--					"expected: 0x%lx, actual: 0x%lx",
-+					"expected: 0x%" PRIx64 ", actual: 0x%" PRIx64 "",
- 					configstruct.homer, regions[j].len);
- 				ok = false;
- 			} else
-@@ -261,7 +261,7 @@ static int reserv_mem_limits_test(fwts_framework *fw)
- 				fwts_failed(fw, LOG_LEVEL_MEDIUM,
- 					"ImageSizeMismatch",
- 					"Mismatch in slw-image size, "
--					"expected: 0x%lx, actual: 0x%lx",
-+					"expected: 0x%" PRIx64 ", actual: 0x%" PRIx64 "",
- 					configstruct.slw, regions[j].len);
- 				ok = false;
- 			} else
-@@ -274,7 +274,7 @@ static int reserv_mem_limits_test(fwts_framework *fw)
- 				fwts_failed(fw, LOG_LEVEL_MEDIUM,
- 					"ImageSizeMismatch",
- 					"Mismatch in occ-common-area size, "
--					"expected: 0x%lx, actual: 0x%lx",
-+					"expected: 0x%" PRIx64", actual: 0x%" PRIx64"",
- 					configstruct.occ_common,
- 					regions[j].len);
- 				ok = false;
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Define-__SWORD_TYPE-if-not-defined-by-libc.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Define-__SWORD_TYPE-if-not-defined-by-libc.patch
index 3b83ca5..b45e46a 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Define-__SWORD_TYPE-if-not-defined-by-libc.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0002-Define-__SWORD_TYPE-if-not-defined-by-libc.patch
@@ -1,7 +1,7 @@
-From 0e89127cd02ecd5ea4506b935cb2b59eb94107d2 Mon Sep 17 00:00:00 2001
+From 1112e51d240a206bdcf253878ef1f4963b92da8a Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 6 Jun 2017 07:37:20 -0700
-Subject: [PATCH 2/3] Define __SWORD_TYPE if not defined by libc
+Subject: [PATCH] Define __SWORD_TYPE if not defined by libc
 
 __SWORD_TYPE is internal to glibc, therefore
 check and define it if needed e.g. on musl
@@ -9,12 +9,13 @@
 Upstream-Status: Pending
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  src/lib/src/fwts_uefi.c | 4 ++++
  1 file changed, 4 insertions(+)
 
 diff --git a/src/lib/src/fwts_uefi.c b/src/lib/src/fwts_uefi.c
-index 1f9d31fa..2d925f8d 100644
+index 544145fa..460b0b77 100644
 --- a/src/lib/src/fwts_uefi.c
 +++ b/src/lib/src/fwts_uefi.c
 @@ -59,6 +59,10 @@ typedef struct {
@@ -28,6 +29,3 @@
  /* File system magic numbers */
  #define PSTOREFS_MAGIC          ((__SWORD_TYPE)0x6165676C)
  #define EFIVARFS_MAGIC          ((__SWORD_TYPE)0xde5e81e4)
--- 
-2.13.0
-
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-Undefine-PAGE_SIZE.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-Undefine-PAGE_SIZE.patch
index f84fbff..1d8c620 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-Undefine-PAGE_SIZE.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-Undefine-PAGE_SIZE.patch
@@ -1,7 +1,7 @@
-From 0857269d5a053b5b4c31cfa01b6501526b24035f Mon Sep 17 00:00:00 2001
+From 244e9551ab9bbc1dfa91d19cd472ef254a94ae41 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 6 Jun 2017 07:39:28 -0700
-Subject: [PATCH 3/3] Undefine PAGE_SIZE
+Subject: [PATCH] Undefine PAGE_SIZE
 
 musl defines PAGE_SIZE and build complains
 of multiple definitions
@@ -9,12 +9,13 @@
 Upstream-Status: Pending
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  src/lib/src/fwts_acpi_tables.c | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c
-index 1d4fc705..71023ad2 100644
+index bdd224aa..58e982a6 100644
 --- a/src/lib/src/fwts_acpi_tables.c
 +++ b/src/lib/src/fwts_acpi_tables.c
 @@ -42,6 +42,7 @@
@@ -25,6 +26,3 @@
  #define PAGE_SIZE	(4096)
  
  static fwts_acpi_table_info	tables[ACPI_MAX_TABLES];
--- 
-2.13.0
-
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch
index 3cd3fbb..bebbfa4 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0003-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch
@@ -1,13 +1,14 @@
-From d0d76820efe51dd404d381fc4c46544008e757dd Mon Sep 17 00:00:00 2001
+From 1848b8f8b9be500046ca5d632789a068d6151815 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Thu, 8 Jun 2017 16:50:59 -0700
-Subject: [PATCH 3/3] use intptr_t to fix pointer-to-int-cast issues
+Subject: [PATCH] use intptr_t to fix pointer-to-int-cast issues
 
 uintptr_t is guaranteed to be wide enough that
 converting a void* to uintptr_t and back again
 will yield the original pointer value
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  src/lib/src/fwts_acpi_tables.c | 4 ++--
  src/lib/src/fwts_mmap.c        | 2 +-
@@ -15,19 +16,19 @@
  3 files changed, 5 insertions(+), 5 deletions(-)
 
 diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c
-index 832f8d66..d0006529 100644
+index 58e982a6..6522032f 100644
 --- a/src/lib/src/fwts_acpi_tables.c
 +++ b/src/lib/src/fwts_acpi_tables.c
-@@ -150,7 +150,7 @@ static fwts_acpi_table_rsdp *fwts_acpi_get_rsdp(fwts_framework *fw, void *addr,
- 	fwts_acpi_table_rsdp *rsdp = NULL;
- 	*rsdp_len = 0;
+@@ -156,7 +156,7 @@ static fwts_acpi_table_rsdp *fwts_acpi_get_rsdp(fwts_framework *fw, void *addr,
+ 		return NULL;
+ 	}
  
 -	if ((mem = fwts_mmap((off_t)addr, sizeof(fwts_acpi_table_rsdp))) == FWTS_MAP_FAILED)
 +	if ((mem = fwts_mmap((uintptr_t)addr, sizeof(fwts_acpi_table_rsdp))) == FWTS_MAP_FAILED)
  		return NULL;
  
- 	if (fwts_safe_memread(mem, sizeof(fwts_acpi_table_rsdp)) != FWTS_OK) {
-@@ -456,7 +456,7 @@ static int fwts_acpi_load_tables_from_firmware(fwts_framework *fw)
+ 	if (fwts_safe_memcpy(rsdp, mem, sizeof(fwts_acpi_table_rsdp)) != FWTS_OK) {
+@@ -455,7 +455,7 @@ static int fwts_acpi_load_tables_from_firmware(fwts_framework *fw)
  	if ((rsdp = fwts_acpi_get_rsdp(fw, rsdp_addr, &rsdp_len)) == NULL)
  		return FWTS_ERROR;
  
@@ -37,7 +38,7 @@
  	/* Load any tables from XSDT if it's valid */
  	if (rsdp->xsdt_address) {
 diff --git a/src/lib/src/fwts_mmap.c b/src/lib/src/fwts_mmap.c
-index a09f688e..9fe6329a 100644
+index e28abf87..2180b2cc 100644
 --- a/src/lib/src/fwts_mmap.c
 +++ b/src/lib/src/fwts_mmap.c
 @@ -81,7 +81,7 @@ int fwts_munmap(void *mem, const size_t size)
@@ -50,27 +51,24 @@
  	if (munmap((void *)((uint8_t *)mem - offset), size + offset) < 0)
  		return FWTS_ERROR;
 diff --git a/src/lib/src/fwts_smbios.c b/src/lib/src/fwts_smbios.c
-index 8d0ea39b..63b4bf25 100644
+index e5b3c774..c8134926 100644
 --- a/src/lib/src/fwts_smbios.c
 +++ b/src/lib/src/fwts_smbios.c
-@@ -54,7 +54,7 @@ static void *fwts_smbios_find_entry_uefi(fwts_framework *fw, fwts_smbios_entry *
- 	if ((addr = fwts_scan_efi_systab("SMBIOS")) != NULL) {
+@@ -55,7 +55,7 @@ static void *fwts_smbios_find_entry_uefi(fwts_framework *fw, fwts_smbios_entry *
  		fwts_smbios_entry *mapped_entry;
+ 		const size_t size = sizeof(fwts_smbios_entry);
  
--		if ((mapped_entry = fwts_mmap((off_t)addr, sizeof(fwts_smbios_entry))) != FWTS_MAP_FAILED) {
-+		if ((mapped_entry = fwts_mmap((uintptr_t)addr, sizeof(fwts_smbios_entry))) != FWTS_MAP_FAILED) {
- 			*entry = *mapped_entry;
- 			(void)fwts_munmap(mapped_entry, sizeof(fwts_smbios_entry));
- 			*type  = FWTS_SMBIOS;
-@@ -84,7 +84,7 @@ static void *fwts_smbios30_find_entry_uefi(fwts_framework *fw, fwts_smbios30_ent
- 	if ((addr = fwts_scan_efi_systab("SMBIOS3")) != NULL) {
+-		if ((mapped_entry = fwts_mmap((off_t)addr, size)) != FWTS_MAP_FAILED) {
++		if ((mapped_entry = fwts_mmap((uintptr_t)addr, size)) != FWTS_MAP_FAILED) {
+ 			if (fwts_safe_memcpy(entry, mapped_entry, size) == FWTS_OK) {
+ 				(void)fwts_munmap(mapped_entry, size);
+ 				*type  = FWTS_SMBIOS;
+@@ -91,7 +91,7 @@ static void *fwts_smbios30_find_entry_uefi(fwts_framework *fw, fwts_smbios30_ent
  		fwts_smbios30_entry *mapped_entry;
+ 		const size_t size = sizeof(fwts_smbios30_entry);
  
--		if ((mapped_entry = fwts_mmap((off_t)addr, sizeof(fwts_smbios30_entry))) != FWTS_MAP_FAILED) {
-+		if ((mapped_entry = fwts_mmap((uintptr_t)addr, sizeof(fwts_smbios30_entry))) != FWTS_MAP_FAILED) {
- 			*entry = *mapped_entry;
- 			(void)fwts_munmap(mapped_entry, sizeof(fwts_smbios30_entry));
- 			return addr;
--- 
-2.13.1
-
+-		if ((mapped_entry = fwts_mmap((off_t)addr, size)) != FWTS_MAP_FAILED) {
++		if ((mapped_entry = fwts_mmap((uintptr_t)addr, size)) != FWTS_MAP_FAILED) {
+ 			if (fwts_safe_memread(mapped_entry, size) == FWTS_OK) {
+ 				*entry = *mapped_entry;
+ 				(void)fwts_munmap(mapped_entry, size);
diff --git a/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb b/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb
index 87a23af..d3fb644 100644
--- a/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb
+++ b/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb
@@ -5,27 +5,27 @@
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://src/main.c;beginline=1;endline=16;md5=31da590f3e9f3bd34dcdb9e4db568519"
 
-PV = "17.03.00+git${SRCPV}"
+PV = "18.05.00+git${SRCPV}"
 
-SRCREV = "0153ea51cb648b3067a1b327eee6a075b6cfa330"
+SRCREV = "b0ec7aa2ef743d113fd8c5e57c0ca3d5edd86f0e"
 SRC_URI = "git://kernel.ubuntu.com/hwe/fwts.git \
            file://0001-ignore-constant-logical-operand-warning-with-clang.patch \
            file://0001-Include-poll.h-instead-of-deprecated-sys-poll.h.patch \
            file://0002-Define-__SWORD_TYPE-if-not-defined-by-libc.patch \
            file://0003-Undefine-PAGE_SIZE.patch \
            file://0001-Add-correct-printf-qualifier-for-off_t.patch \
-           file://0002-Add-C99-defined-format-for-printing-uint64_t.patch \
            file://0003-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch \
+           file://0001-Remove-Werror-from-build.patch \
            "
 
 S = "${WORKDIR}/git"
 
 COMPATIBLE_HOST = "(i.86|x86_64|aarch64|powerpc64).*-linux"
 
-DEPENDS = "libpcre json-c glib-2.0 dtc"
+DEPENDS = "libpcre json-c glib-2.0 dtc bison-native"
 DEPENDS_append_libc-musl = " libexecinfo"
 
-inherit autotools pkgconfig
+inherit autotools bash-completion pkgconfig
 
 CFLAGS += "-I${STAGING_INCDIR}/json-c -Wno-error=unknown-pragmas"
 LDFLAGS_append_libc-musl = " -lexecinfo"
diff --git a/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb b/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
index 1ee6573..0929090 100644
--- a/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
+++ b/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
@@ -63,3 +63,6 @@
     done
 }
 RDEPENDS_${PN} +="bash"
+
+# http://errors.yoctoproject.org/Errors/Details/186956/
+EXCLUDE_FROM_WORLD_libc-musl = "1"
diff --git a/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch b/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch
new file mode 100644
index 0000000..469791d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch
@@ -0,0 +1,31 @@
+From 7c97710bfc44d895b7111bef9c55866f00a3589c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 13 Aug 2018 11:54:27 -0700
+Subject: [PATCH] Revert "Makefile: force sync after build in case reboot loses
+ executable"
+
+This reverts commit ae6322b1baea56a589207c96e358daae8edd0a8f.
+
+Not needed for cross-builds
+
+Upstream-Status: Inappropriate [Cross compile specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index c0db72c0..5781dda6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -348,7 +348,6 @@ endif
+ stress-ng: $(OBJS)
+ 	@echo "LD $@"
+ 	@$(CC) $(CPPFLAGS) $(CFLAGS) $(OBJS) -lm $(LDFLAGS) -o $@
+-	@sync
+ 
+ makeconfig:
+ 	@if [ ! -s config ]; then \
+-- 
+2.17.0
+
diff --git a/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Several-changes-to-fix-musl-build.patch b/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Several-changes-to-fix-musl-build.patch
index d604f86..c0b3449 100644
--- a/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Several-changes-to-fix-musl-build.patch
+++ b/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Several-changes-to-fix-musl-build.patch
@@ -1,11 +1,13 @@
-From 784dcd09d3f266e271d007f4fd257e85036872ca Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linaro.org>
-Date: Tue, 17 Oct 2017 10:13:20 -0500
+From 9bcb4e170f01dbe0a9e7bf6b899c5d9b5283d4c6 Mon Sep 17 00:00:00 2001
+From: Randy MacLeod <Randy.MacLeod@windriver.com>
+Date: Sun, 11 Nov 2018 23:00:53 -0500
 Subject: [PATCH] Several changes to fix musl build
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
+Rebased patch for:
+
 stress-{context, stackmmap}.c: Set tests to non-implemented because uses
 swapcontext, musl provide the definition but not the implementation due
   to that functions are pre-POSIX and set to be deprecated.
@@ -19,20 +21,19 @@
 
 Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
 Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
+Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
 
 Upstream-status: Pending
-
 ---
  cache.c            |  4 ++++
  stress-madvise.c   |  1 +
- stress-malloc.c    |  2 +-
  stress-pty.c       | 18 ------------------
  stress-resources.c |  1 -
  stress-stackmmap.c |  2 +-
- 6 files changed, 7 insertions(+), 21 deletions(-)
+ 5 files changed, 6 insertions(+), 20 deletions(-)
 
 diff --git a/cache.c b/cache.c
-index fbf7674..936c1ff 100644
+index e8a0f791..4c7bb486 100644
 --- a/cache.c
 +++ b/cache.c
 @@ -28,6 +28,10 @@ typedef struct {
@@ -47,10 +48,10 @@
  #define SYS_CPU_PREFIX               "/sys/devices/system/cpu"
  #define GLOB_PATTERN SYS_CPU_PREFIX  "/cpu[0-9]*"
 diff --git a/stress-madvise.c b/stress-madvise.c
-index 9e71e11..ddf8d2d 100644
+index b2e3497f..77e43a91 100644
 --- a/stress-madvise.c
 +++ b/stress-madvise.c
-@@ -147,6 +147,7 @@ static int stress_random_advise(const args_t *args)
+@@ -146,6 +146,7 @@ static int stress_random_advise(const args_t *args)
  #if defined(MADV_SOFT_OFFLINE)
  	if (advise == MADV_SOFT_OFFLINE) {
  		static int soft_offline_count;
@@ -58,21 +59,8 @@
  
  		/* ..and minimize number of soft offline pages */
  		if ((soft_offline_count >= NUM_SOFT_OFFLINE_MAX) ||
-diff --git a/stress-malloc.c b/stress-malloc.c
-index a46b8c6..427827a 100644
---- a/stress-malloc.c
-+++ b/stress-malloc.c
-@@ -99,7 +99,7 @@ int stress_malloc(const args_t *args)
- 			malloc_max = MIN_MALLOC_MAX;
- 	}
- 
--#if defined(__GNUC__) && defined(__linux__)
-+#if defined(__GNUC__) && defined(__linux__) && defined(M_MMAP_THRESHOLD)
- 	if (get_setting("malloc-threshold", &malloc_threshold))
- 		(void)mallopt(M_MMAP_THRESHOLD, (int)malloc_threshold);
- #endif
 diff --git a/stress-pty.c b/stress-pty.c
-index 1bd1fbd..b1fe573 100644
+index 4dd88ab9..c79a7021 100644
 --- a/stress-pty.c
 +++ b/stress-pty.c
 @@ -26,7 +26,6 @@
@@ -83,7 +71,7 @@
  #include <termios.h>
  
  typedef struct {
-@@ -108,7 +107,6 @@ int stress_pty(const args_t *args)
+@@ -111,7 +110,6 @@ static int stress_pty(const args_t *args)
  		 */
  		for (i = 0; i < n; i++) {
  			struct termios ios;
@@ -91,7 +79,7 @@
  			struct winsize ws;
  			int arg;
  
-@@ -130,22 +128,6 @@ int stress_pty(const args_t *args)
+@@ -133,22 +131,6 @@ static int stress_pty(const args_t *args)
  			if (ioctl(ptys[i].slave, TCSETSF, &ios) < 0)
  				pr_fail_err("ioctl TCSETSF on slave pty");
  #endif
@@ -115,10 +103,10 @@
  			if (ioctl(ptys[i].slave, TIOCGLCKTRMIOS, &ios) < 0)
  				pr_fail_err("ioctl TIOCGLCKTRMIOS on slave pty");
 diff --git a/stress-resources.c b/stress-resources.c
-index 958c99a..af79abd 100644
+index f3dcfb38..86f9a5ba 100644
 --- a/stress-resources.c
 +++ b/stress-resources.c
-@@ -31,7 +31,6 @@
+@@ -28,7 +28,6 @@
  #include <sys/inotify.h>
  #endif
  #if defined(__linux__)
@@ -127,7 +115,7 @@
  #endif
  #if defined(HAVE_LIB_PTHREAD) && defined(__linux__)
 diff --git a/stress-stackmmap.c b/stress-stackmmap.c
-index 9c83a69..2984f09 100644
+index c2f4c31d..54308777 100644
 --- a/stress-stackmmap.c
 +++ b/stress-stackmmap.c
 @@ -24,7 +24,7 @@
@@ -139,3 +127,6 @@
  
  #include <ucontext.h>
  
+-- 
+2.17.0
+
diff --git a/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0002-stress-fcntl-fix-build-for-musl.patch b/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0002-stress-fcntl-fix-build-for-musl.patch
deleted file mode 100644
index ed3287e..0000000
--- a/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0002-stress-fcntl-fix-build-for-musl.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From faadbc147394cea9278bc2494f33e3521d88e742 Mon Sep 17 00:00:00 2001
-From: Tim Orling <timothy.t.orling@linux.intel.com>
-Date: Tue, 9 Jan 2018 18:38:45 -0800
-Subject: [PATCH] stress-fcntl: fix build for musl
-
-Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
-
-Upstream-status: Pending
-
----
- stress-fcntl.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/stress-fcntl.c b/stress-fcntl.c
-index 2ea867b..e91b345 100644
---- a/stress-fcntl.c
-+++ b/stress-fcntl.c
-@@ -415,6 +415,7 @@ ofd_lock_abort:	{ /* Nowt */ }
- #if (defined(F_GET_FILE_RW_HINT) && defined(F_SET_FILE_RW_HINT)) | \
-     (defined(F_GET_RW_HINT) && defined(F_SET_RW_HINT))
- 	{
-+		int ret;
- 		size_t i;
- 		unsigned long hint;
- 		static const unsigned long hints[] = {
diff --git a/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.14.bb b/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.45.bb
similarity index 74%
rename from meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.14.bb
rename to meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.45.bb
index 7fab430..3e8f2d4 100644
--- a/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.14.bb
+++ b/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.45.bb
@@ -6,13 +6,14 @@
 DEPENDS = "zlib libaio"
 
 SRC_URI = "http://kernel.ubuntu.com/~cking/tarballs/${BPN}/${BP}.tar.xz \
-           file://0002-stress-fcntl-fix-build-for-musl.patch \
-          "
+           file://0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch \
+           "
 SRC_URI_append_libc-musl = " \
     file://0001-Several-changes-to-fix-musl-build.patch \
     "
-SRC_URI[md5sum] = "1f8b6c2c2830704d2a2814c16082d48e"
-SRC_URI[sha256sum] = "02cac34a5cb041197af60c1867844c6cbb089a6d10a38cdcf7b8f27bfaa6ef8f"
+
+SRC_URI[md5sum] = "b03744c2eb68bf7e9a300e78e397f348"
+SRC_URI[sha256sum] = "0741e3004bf590bb7af3db979a46fe89bee7aaad6065cd1d87d0b7fa49046cb2"
 
 UPSTREAM_CHECK_URI ?= "http://kernel.ubuntu.com/~cking/tarballs/${BPN}/"
 UPSTREAM_CHECK_REGEX ?= "(?P<pver>\d+(\.\d+)+)\.tar"