# WARNING!
#
# These modifications to os-release disable the bitbake parse
# cache (for the os-release recipe only).  Before copying
# and pasting into another recipe ensure it is understood
# what that means!

OS_RELEASE_ROOTPATH ?= "${COREBASE}"

def run_git(d, cmd):
    try:
        oeroot = d.getVar('OS_RELEASE_ROOTPATH', True)
        return bb.process.run(("export PSEUDO_DISABLED=1; " +
                               "git --work-tree %s --git-dir %s/.git %s")
            % (oeroot, oeroot, cmd))[0].strip('\n')
    except Exception as e:
        bb.warn("Unexpected exception from 'git' call: %s" % e)
        pass

# DISTRO_VERSION can be overridden by a bbappend or config, so it must be a
# weak override.  But, when a variable is weakly overridden the definition
# and not the contents are used in the task-hash (for sstate reuse).  We need
# a strong variable in the vardeps chain for do_compile so that we get the
# contents of the 'git describe --dirty' call.  Create a strong/immediate
# indirection via PHOSPHOR_OS_RELEASE_DISTRO_VERSION.
PHOSPHOR_OS_RELEASE_DISTRO_VERSION := "${@run_git(d, 'describe --dirty')}"
DISTRO_VERSION ??= "${PHOSPHOR_OS_RELEASE_DISTRO_VERSION}"

VERSION = "${@'-'.join(d.getVar('VERSION_ID').split('-')[0:2])}"

OPENBMC_TARGET_MACHINE = "${MACHINE}"

OS_RELEASE_FIELDS:append = " BUILD_ID OPENBMC_TARGET_MACHINE EXTENDED_VERSION"

# Ensure the git commands run every time bitbake is invoked.
BB_DONT_CACHE = "1"

# Make os-release available to other recipes.
SYSROOT_DIRS:append = " ${sysconfdir}"
