SUMMARY = "Phosphor hwmon configuration generator"
DESCRIPTION = "Generate phosphor-hwmon configuration from an MRW."
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
DEPENDS += "mrw-perl-tools-native mrw-native"
PR = "r1"

inherit allarch
inherit mrw-xml

do_compile:append() {
    ${STAGING_BINDIR_NATIVE}/perl-native/perl \
        ${STAGING_BINDIR_NATIVE}/hwmon.pl \
        -x ${mrw_datadir}/${MRW_XML} \
        -d ${WORKDIR}/mrw-config-files
}
do_install[postfuncs] += "install_conf_files"

def find_conf_files(dir):
    from fnmatch import fnmatch
    myfiles = []
    #These conf files generated by hwmon.pl are in
    #subdirectories which we need to preserve the path to.
    for root, dirs, files in os.walk(dir):
        for name in files:
            if fnmatch(name, "*.conf"):
                myfiles.append(os.path.join(root, name))
    return  myfiles
python install_conf_files() {
    from shutil import copy
    conf_file_dir = os.path.join(
        d.getVar("WORKDIR", True),
        'mrw-config-files')
    files = find_conf_files(conf_file_dir)
    install_dir = os.path.join(d.getVar("D", True),
                               "etc", "default", "obmc", "hwmon")
    dir_len = len(conf_file_dir)
    for f in files:
        dest = os.path.join(install_dir, f[dir_len + 1:])
        parent = os.path.dirname(dest)
        if not os.path.exists(parent):
            os.makedirs(parent)
        copy(f, dest)
}
