diff --git a/import-layers/meta-openembedded/meta-oe/classes/breakpad.bbclass b/import-layers/meta-openembedded/meta-oe/classes/breakpad.bbclass
index b3abf27..36f11ff 100644
--- a/import-layers/meta-openembedded/meta-oe/classes/breakpad.bbclass
+++ b/import-layers/meta-openembedded/meta-oe/classes/breakpad.bbclass
@@ -10,11 +10,11 @@
 BREAKPAD_BIN ?= ""
 
 python () {
-    breakpad_bin = d.getVar("BREAKPAD_BIN", True)
+    breakpad_bin = d.getVar("BREAKPAD_BIN")
 
     if not breakpad_bin:
-       PN = d.getVar("PN", True)
-       FILE = os.path.basename(d.getVar("FILE", True))
+       PN = d.getVar("PN")
+       FILE = os.path.basename(d.getVar("FILE"))
        bb.error("To build %s, see breakpad.bbclass for instructions on \
                  setting up your Breakpad configuration" % PN)
        raise ValueError('BREAKPAD_BIN not defined in %s' % PN)
diff --git a/import-layers/meta-openembedded/meta-oe/classes/gitpkgv.bbclass b/import-layers/meta-openembedded/meta-oe/classes/gitpkgv.bbclass
index 8cd4bfd..2d9680a 100644
--- a/import-layers/meta-openembedded/meta-oe/classes/gitpkgv.bbclass
+++ b/import-layers/meta-openembedded/meta-oe/classes/gitpkgv.bbclass
@@ -52,14 +52,14 @@
     import bb
     from pipes import quote
 
-    src_uri = d.getVar('SRC_URI', 1).split()
+    src_uri = d.getVar('SRC_URI').split()
     fetcher = bb.fetch2.Fetch(src_uri, d)
     ud = fetcher.ud
 
     #
     # If SRCREV_FORMAT is set respect it for tags
     #
-    format = d.getVar('SRCREV_FORMAT', True)
+    format = d.getVar('SRCREV_FORMAT')
     if not format:
         names = []
         for url in ud.values():
@@ -110,9 +110,9 @@
                             d, quiet=True).strip()
                         ver = gitpkgv_drop_tag_prefix(output)
                     except Exception:
-                        ver = "0.0-%s-g%s" % (commits, rev[:7])
+                        ver = "0.0-%s-g%s" % (commits, vars['rev'][:7])
                 else:
-                    ver = "%s+%s" % (commits, rev[:7])
+                    ver = "%s+%s" % (commits, vars['rev'][:7])
 
                 format = format.replace(name, ver)
 
diff --git a/import-layers/meta-openembedded/meta-oe/classes/gitver.bbclass b/import-layers/meta-openembedded/meta-oe/classes/gitver.bbclass
index 9154143..380374a 100644
--- a/import-layers/meta-openembedded/meta-oe/classes/gitver.bbclass
+++ b/import-layers/meta-openembedded/meta-oe/classes/gitver.bbclass
@@ -23,7 +23,7 @@
 def get_git_pv(d, tagadjust=None):
     import os
 
-    srcdir = d.getVar("EXTERNALSRC", True) or d.getVar("S", True)
+    srcdir = d.getVar("EXTERNALSRC") or d.getVar("S")
     gitdir = os.path.abspath(os.path.join(srcdir, ".git"))
     try:
         ver = gitrev_run("git describe --tags", gitdir)
@@ -45,11 +45,11 @@
 def get_git_hash(d):
     import os
 
-    srcdir = d.getVar("EXTERNALSRC", True) or d.getVar("S", True)
+    srcdir = d.getVar("EXTERNALSRC") or d.getVar("S")
     gitdir = os.path.abspath(os.path.join(srcdir, ".git"))
     try:
-        return gitrev_run("git rev-parse HEAD", gitdir)
-
+        rev = gitrev_run("git rev-list HEAD -1")
+        return rev[:7]
     except Exception as exc:
         bb.fatal(str(exc))
 
@@ -79,6 +79,6 @@
         mark_dependency(d, tagdir)
 
 python () {
-    srcdir = d.getVar("EXTERNALSRC", True) or d.getVar("S", True)
+    srcdir = d.getVar("EXTERNALSRC") or d.getVar("S")
     mark_recipe_dependencies(srcdir, d)
 }
diff --git a/import-layers/meta-openembedded/meta-oe/classes/machine_kernel_pr.bbclass b/import-layers/meta-openembedded/meta-oe/classes/machine_kernel_pr.bbclass
index 463b64d..e48bd01 100644
--- a/import-layers/meta-openembedded/meta-oe/classes/machine_kernel_pr.bbclass
+++ b/import-layers/meta-openembedded/meta-oe/classes/machine_kernel_pr.bbclass
@@ -1,6 +1,6 @@
 python __anonymous () {
 
-    machine_kernel_pr = d.getVar('MACHINE_KERNEL_PR', True)
+    machine_kernel_pr = d.getVar('MACHINE_KERNEL_PR')
 
     if machine_kernel_pr:
         d.setVar('PR', machine_kernel_pr)
diff --git a/import-layers/meta-openembedded/meta-oe/classes/meson.bbclass b/import-layers/meta-openembedded/meta-oe/classes/meson.bbclass
new file mode 100644
index 0000000..c33174a
--- /dev/null
+++ b/import-layers/meta-openembedded/meta-oe/classes/meson.bbclass
@@ -0,0 +1,100 @@
+inherit python3native
+
+DEPENDS_append = " meson-native ninja-native"
+
+# As Meson enforces out-of-tree builds we can just use cleandirs
+B = "${WORKDIR}/build"
+do_configure[cleandirs] = "${B}"
+
+# Where the meson.build build configuration is
+MESON_SOURCEPATH = "${S}"
+
+# These variables in the environment override the *native* tools, not the cross.
+export CC = "${BUILD_CC}"
+export CXX = "${BUILD_CXX}"
+export LD = "${BUILD_LD}"
+export AR = "${BUILD_AR}"
+
+def noprefix(var, d):
+    return d.getVar(var, True).replace(d.getVar('prefix', True) + '/', '', 1)
+
+MESONOPTS = " --prefix ${prefix} \
+              --bindir ${@noprefix('bindir', d)} \
+              --sbindir ${@noprefix('sbindir', d)} \
+              --datadir ${@noprefix('datadir', d)} \
+              --libdir ${@noprefix('libdir', d)} \
+              --libexecdir ${@noprefix('libexecdir', d)} \
+              --includedir ${@noprefix('includedir', d)} \
+              --mandir ${@noprefix('mandir', d)} \
+              --infodir ${@noprefix('infodir', d)} \
+              --localedir ${@noprefix('localedir', d)} \
+              --sysconfdir ${sysconfdir} \
+              --localstatedir ${localstatedir} \
+              --sharedstatedir ${sharedstatedir}"
+
+MESON_C_ARGS = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
+
+MESON_HOST_ENDIAN = "${@bb.utils.contains('SITEINFO_ENDIANNESS', 'be', 'big', 'little', d)}"
+MESON_TARGET_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'big', 'little', d)}"
+
+EXTRA_OEMESON += "${PACKAGECONFIG_CONFARGS}"
+
+MESON_CROSS_FILE = ""
+MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross"
+
+def meson_array(var, d):
+    return "', '".join(d.getVar(var, True).split()).join(("'", "'"))
+
+addtask write_config before do_configure
+do_write_config[vardeps] += "MESON_C_ARGS TOOLCHAIN_OPTIONS"
+do_write_config() {
+    # This needs to be Py to split the args into single-element lists
+    cat >${WORKDIR}/meson.cross <<EOF
+[binaries]
+c = '${HOST_PREFIX}gcc'
+cpp = '${HOST_PREFIX}g++'
+ar = '${HOST_PREFIX}ar'
+ld = '${HOST_PREFIX}ld'
+strip = '${HOST_PREFIX}strip'
+readelf = '${HOST_PREFIX}readelf'
+pkgconfig = 'pkg-config'
+
+[properties]
+c_args = [${@meson_array('MESON_C_ARGS', d)}]
+cpp_args = [${@meson_array('TOOLCHAIN_OPTIONS', d)}]
+c_link_args = [${@meson_array('TOOLCHAIN_OPTIONS', d)}]
+cpp_link_args = [${@meson_array('TOOLCHAIN_OPTIONS', d)}]
+
+[host_machine]
+system = '${HOST_OS}'
+cpu_family = '${HOST_ARCH}'
+cpu = '${HOST_ARCH}'
+endian = '${MESON_HOST_ENDIAN}'
+
+[target_machine]
+system = '${TARGET_OS}'
+cpu_family = '${TARGET_ARCH}'
+cpu = '${TARGET_ARCH}'
+endian = '${MESON_TARGET_ENDIAN}'
+EOF
+}
+
+CONFIGURE_FILES = "meson.build"
+
+meson_do_configure() {
+    if ! meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}" ${MESON_CROSS_FILE} ${EXTRA_OEMESON}; then
+        cat ${B}/meson-logs/meson-log.txt
+        bbfatal_log meson failed
+    fi
+}
+
+do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+"
+meson_do_compile() {
+    ninja ${PARALLEL_MAKE}
+}
+
+meson_do_install() {
+    DESTDIR='${D}' ninja ${PARALLEL_MAKEINST} install
+}
+
+EXPORT_FUNCTIONS do_configure do_compile do_install
diff --git a/import-layers/meta-openembedded/meta-oe/classes/socorro-syms.bbclass b/import-layers/meta-openembedded/meta-oe/classes/socorro-syms.bbclass
index 3f6ae63..cc435ab 100644
--- a/import-layers/meta-openembedded/meta-oe/classes/socorro-syms.bbclass
+++ b/import-layers/meta-openembedded/meta-oe/classes/socorro-syms.bbclass
@@ -21,10 +21,10 @@
 
 python symbol_file_preprocess() {
 
-    package_dir = d.getVar("PKGD", True)
-    breakpad_bin = d.getVar("BREAKPAD_BIN", True)
+    package_dir = d.getVar("PKGD")
+    breakpad_bin = d.getVar("BREAKPAD_BIN")
     if not breakpad_bin:
-        package_name = d.getVar("PN", True)
+        package_name = d.getVar("PN")
         bb.error("Package %s depends on Breakpad via socorro-syms. See "
             "breakpad.bbclass for instructions on setting up the Breakpad "
             "configuration." % package_name)
@@ -106,7 +106,7 @@
         # child of the build directory TOPDIR.
         git_root_dir = run_command(
             "git rev-parse --show-toplevel", os.path.dirname(source_file_path))
-        if not git_root_dir.startswith(d.getVar("TOPDIR", True)):
+        if not git_root_dir.startswith(d.getVar("TOPDIR")):
             return None
 
         return git_repository_path(source_file_path)
