|
@@ -1,59 +1,19 @@
|
|
-- imports
|
|
-- imports
|
|
import("core.package.package")
|
|
import("core.package.package")
|
|
import("core.platform.platform")
|
|
import("core.platform.platform")
|
|
|
|
+import("private.core.base.select_script")
|
|
|
|
|
|
-- is supported platform and architecture?
|
|
-- is supported platform and architecture?
|
|
function is_supported(instance, plat, arch, opt)
|
|
function is_supported(instance, plat, arch, opt)
|
|
|
|
|
|
-- ignore template package
|
|
-- ignore template package
|
|
- if instance.is_template and instance:is_template() then
|
|
|
|
|
|
+ if instance:is_template() then
|
|
return false
|
|
return false
|
|
end
|
|
end
|
|
|
|
|
|
-- get script
|
|
-- get script
|
|
local script = instance:get("install")
|
|
local script = instance:get("install")
|
|
- local result = nil
|
|
|
|
- if type(script) == "function" then
|
|
|
|
- result = script
|
|
|
|
- elseif type(script) == "table" then
|
|
|
|
-
|
|
|
|
- -- get plat and arch
|
|
|
|
- local plat = plat or ""
|
|
|
|
- local arch = arch or ""
|
|
|
|
-
|
|
|
|
- -- match pattern
|
|
|
|
- --
|
|
|
|
- -- `@linux`
|
|
|
|
- -- `@linux|x86_64`
|
|
|
|
- -- `@macosx,linux`
|
|
|
|
- -- `android@macosx,linux`
|
|
|
|
- -- `android|armeabi-v7a@macosx,linux`
|
|
|
|
- -- `android|armeabi-v7a@macosx,linux|x86_64`
|
|
|
|
- -- `android|armeabi-v7a@linux|x86_64`
|
|
|
|
- --
|
|
|
|
- for _pattern, _script in pairs(script) do
|
|
|
|
- local hosts = {}
|
|
|
|
- local hosts_spec = false
|
|
|
|
- _pattern = _pattern:gsub("@(.+)", function (v)
|
|
|
|
- for _, host in ipairs(v:split(',')) do
|
|
|
|
- hosts[host] = true
|
|
|
|
- hosts_spec = true
|
|
|
|
- end
|
|
|
|
- return ""
|
|
|
|
- end)
|
|
|
|
- if _pattern:trim() == "" and opt and opt.onlyhost then
|
|
|
|
- _pattern = os.subhost()
|
|
|
|
- end
|
|
|
|
- if not _pattern:startswith("__") and (not hosts_spec or hosts[os.subhost() .. '|' .. os.subarch()] or hosts[os.subhost()])
|
|
|
|
- and (_pattern:trim() == "" or (plat .. '|' .. arch):find('^' .. _pattern .. '$') or plat:find('^' .. _pattern .. '$')) then
|
|
|
|
- result = _script
|
|
|
|
- break
|
|
|
|
- end
|
|
|
|
- end
|
|
|
|
-
|
|
|
|
- -- get generic script
|
|
|
|
- result = result or script["__generic__"]
|
|
|
|
- end
|
|
|
|
|
|
+ local result = select_script(script, {plat = plat, arch = arch})
|
|
return result
|
|
return result
|
|
end
|
|
end
|
|
|
|
|