def install_deltaupdate_files()

in tools/selfhost/bootstrap.py [0:0]


def install_deltaupdate_files(script_dir):
    """Installs deltaupdate tools from the bundle"""

    print("Installing DeltaUpdate DeltaProcessor and DiffGen tools ...")

    # Install .net core 5 runtime for DiffGen Tools

    print("DiffGen - Installing .NET core 5 runtime ...")

    print("DiffGen .netcore5 - download packages-microsoft-prod.deb")
    ret_code = run_cmd("wget https://packages.microsoft.com/config/ubuntu/"
                       "18.04/packages-microsoft-prod.deb "
                       "-O packages-microsoft-prod.deb"
                       )
    if ret_code != 0:
        return ret_code

    print("DiffGen .netcore5 - dpkg install packages-microsoft-prod.deb")
    ret_code = run_cmd("dpkg -i packages-microsoft-prod.deb")
    if ret_code != 0:
        return ret_code

    print("DiffGen .netcore5 - apt update")
    ret_code = run_cmd("apt-get update")
    if ret_code != 0:
        return ret_code

    print("DiffGen .netcore5 - apt install apt-transport-https")
    ret_code = run_cmd("apt-get install -y apt-transport-https")
    if ret_code != 0:
        return ret_code

    print("DiffGen .netcore5 - apt update")
    ret_code = run_cmd("apt-get update")
    if ret_code != 0:
        return ret_code

    print("DiffGen .netcore5 - apt install aspnetcore-runtime-5.0")
    ret_code = run_cmd("apt-get install -y aspnetcore-runtime-5.0")
    if ret_code != 0:
        return ret_code

    # unzip
    filename = 'deltaupdate_files.zip'
    zip_file = os.path.join(script_dir, filename)

    global content_dir

    print(f"DiffGen - Ensure unzip APT pkg is installed ...")

    ret_code = run_cmd(f"apt-get -y install unzip")
    if ret_code != 0:
        return ret_code

    if not os.path.exists(content_dir):
        print(f"creating {content_dir} ...")
        ret_code = run_cmd(f"mkdir -p {content_dir}")
        if ret_code != 0:
            return ret_code

    print(f"DiffGen - copy {zip_file} to {content_dir} ...")

    ret_code = run_cmd(f"cp {zip_file} {content_dir}")
    if ret_code != 0:
        return ret_code

    print(f"DiffGen - unzip {content_dir}/{filename} ...")

    ret_code = run_cmd(f"cd {content_dir} && unzip ./{filename}")
    if ret_code != 0:
        return ret_code

    # install delta processor library
    #

    print("DeltaProcessor - Setup Ubuntu Toolchain PPA for newer glibc ...")

    ret_code = run_cmd("sudo apt-get -y install software-properties-common")
    if ret_code != 0:
        return ret_code

    ret_code = run_cmd(
        "sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test"
        )
    if ret_code != 0:
        return ret_code

    print("DeltaProcessor - Installing gcc-9 g++-9 Dependencies "
          "for loading libadudiffapi.so ..."
          )

    ret_code = run_cmd("apt-get -y install gcc-9 g++-9")
    if ret_code != 0:
        return ret_code

    lib_filename = 'libadudiffapi.so'
    delta_processor_lib_filepath = os.path.join(
        content_dir,
        'DeltaProcessor_x64',
        lib_filename
        )

    print("installing Delta processor library "
          f"{delta_processor_lib_filepath} ...")

    ret_code = run_cmd(
        f"cp {delta_processor_lib_filepath} /usr/local/lib/ "
        f"&& ldconfig /usr/local/lib/{lib_filename}"
        )
    if ret_code != 0:
        return ret_code

    print("unzip DiffGenTool ...")
    ret_code = run_cmd(
        "cd /tmp/deltaupdates/FIT_DiffGenTool "
        "&& unzip diffgen-tool.Release.x64-linux.zip"
        )
    if ret_code != 0:
        return ret_code

    print("Make DiffGen binaries executable ...")

    ret_code = run_cmd(
        "cd /tmp/deltaupdates/FIT_DiffGenTool/"
        "diffgen-tool.Release.x64-linux "
        "&& chmod 755 applydiff bsdiff bspatch compress_files.py DiffGenTool "
        "dumpdiff dumpextfs recompress_and_sign_tool.py "
        "recompress_tool.py sign_tool.py zstd_compress_file"
        )
    if ret_code != 0:
        return ret_code

    return 0