package("qtifw") set_kind("binary") set_homepage("https://doc.qt.io/qtinstallerframework/") set_description("The Qt Installer Framework provides a set of tools and utilities to create installers for the supported desktop Qt platforms: Linux, Microsoft Windows, and macOS.") set_license("GPL-3") add_versions("4.6.0", "dummy") add_deps("aqt") on_fetch(function (package, opt) if opt.system then return import("lib.detect.find_tool")("binarycreator", {check = "--help"}) end end) on_install("@windows", "@msys", "@macosx", function (package) local host if is_host("windows", "msys") then host = "windows" elseif is_host("linux") then host = "linux" elseif is_host("macosx") then host = "mac" else raise("unhandled host " .. os.host()) end local target = "desktop" local version = package:version() local installdir = package:installdir() local qtifw_version = "qt.tools.ifw." .. version:major() .. version:minor() if is_host("windows") and (not is_subhost("msys")) then os.vrunv("aqt", {"install-tool", "-O", installdir, host, target, "tools_ifw", qtifw_version, "--external", "7z"}) else os.vrunv("aqt", {"install-tool", "-O", installdir, host, target, "tools_ifw", qtifw_version}) end os.mv(path.join(installdir, "Tools", "*", version:major() .. "." .. version:minor(), "*"), installdir) os.rmdir(path.join(installdir, "Tools")) end) on_test(function (package) local function assertbin(name) if is_host("windows") then name = name .. ".exe" end local exec = path.join(package:installdir(), "bin", name) assert(os.isexec(exec), name .. " not found!") end os.vrun("binarycreator --help") os.vrun("archivegen --help") os.vrun("devtool --help") assertbin("repogen") end)