parent
e1c95d5902
commit
5af8900a45
4 changed files with 186 additions and 7 deletions
@ -0,0 +1,53 @@ |
|||||||
|
## All Packages |
||||||
|
|
||||||
|
|linux(arch)|windows(arch)|iphoneos(arch)|macosx(arch)|android(arch)| |
||||||
|
|-----|-------|--------|------|-------| |
||||||
|
|autoconf(*)|bzip2(*)|cmake(*)|autoconf(*)|cmake(*)|| |
||||||
|
|automake(*)|cairo(*)|doctest(*)|automake(*)|doctest(*)|| |
||||||
|
|bzip2(*)|cmake(*)|libjpeg(*)|bzip2(*)|libjpeg(*)|| |
||||||
|
|cairo(*)|doctest(*)|lua(*)|cairo(*)|lua(*)|| |
||||||
|
|cjson(*)|expat(*)|nlohmann_json(*)|cjson(*)|nlohmann_json(*)|| |
||||||
|
|cmake(*)|freeglut(*)|tbox(*)|cmake(*)|tbox(*)|| |
||||||
|
|doctest(*)|freetype(*)|zlib(*)|doctest(*)|zlib(*)|| |
||||||
|
|expat(*)|glew(*)||expat(*)||| |
||||||
|
|ffmpeg(*)|go(*)||ffmpeg(*)||| |
||||||
|
|fontconfig(*)|libjpeg(*)||fontconfig(*)||| |
||||||
|
|freeglut(*)|libpng(*)||freetype(*)||| |
||||||
|
|freetype(*)|libsdl(*)||glew(*)||| |
||||||
|
|glew(*)|libuv(*)||go(*)||| |
||||||
|
|go(*)|lua(*)||gperf(*)||| |
||||||
|
|gperf(*)|luajit(*)||json-c(*)||| |
||||||
|
|json-c(*)|make(*)||libev(*)||| |
||||||
|
|libev(*)|nlohmann_json(*)||libiconv(*)||| |
||||||
|
|libiconv(*)|patch(*)||libjpeg(*)||| |
||||||
|
|libjpeg(*)|pcre(*)||libmill(*)||| |
||||||
|
|libmill(*)|pixman(*)||libpng(*)||| |
||||||
|
|libpng(*)|python(*)||libsdl(*)||| |
||||||
|
|libsdl(*)|sqlite3(*)||libtask(*)||| |
||||||
|
|libtask(*)|tbox(*)||libtool(*)||| |
||||||
|
|libtool(*)|zlib(*)||libuv(*)||| |
||||||
|
|libuv(*)|||libxml2(*)||| |
||||||
|
|libxml2(*)|||lua(*)||| |
||||||
|
|lua(*)|||luajit(*)||| |
||||||
|
|luajit(*)|||make(*)||| |
||||||
|
|make(*)|||mbedtls(*)||| |
||||||
|
|mbedtls(*)|||mysql(*)||| |
||||||
|
|mysql(*)|||nasm(*)||| |
||||||
|
|nasm(*)|||ncurses(*)||| |
||||||
|
|ncurses(*)|||nlohmann_json(*)||| |
||||||
|
|nlohmann_json(*)|||openssl(*)||| |
||||||
|
|openssl(*)|||patch(*)||| |
||||||
|
|patch(*)|||pcre(*)||| |
||||||
|
|pcre(*)|||pcre2(*)||| |
||||||
|
|pcre2(*)|||pixman(*)||| |
||||||
|
|pixman(*)|||pkg-config(*)||| |
||||||
|
|pkg-config(*)|||python(*)||| |
||||||
|
|python(*)|||sqlite3(*)||| |
||||||
|
|sqlite3(*)|||tbox(*)||| |
||||||
|
|tbox(*)|||util-linux(*)||| |
||||||
|
|util-linux(*)|||x264(*)||| |
||||||
|
|x264(*)|||x265(*)||| |
||||||
|
|x265(*)|||xz(*)||| |
||||||
|
|xz(*)|||yasm(*)||| |
||||||
|
|yasm(*)|||zlib(*)||| |
||||||
|
|zlib(*)|||||| |
@ -0,0 +1,48 @@ |
|||||||
|
import("packages", {alias = "get_packages"}) |
||||||
|
|
||||||
|
function main(...) |
||||||
|
|
||||||
|
-- get packages |
||||||
|
local packages = get_packages() |
||||||
|
local tables = {} |
||||||
|
local col = 1 |
||||||
|
local row_max = 0 |
||||||
|
for _, pkgs in pairs(packages) do |
||||||
|
for row, pkg in ipairs(pkgs) do |
||||||
|
tables[row] = tables[row] or {} |
||||||
|
tables[row][col] = pkg |
||||||
|
end |
||||||
|
if #pkgs > row_max then |
||||||
|
row_max = #pkgs |
||||||
|
end |
||||||
|
col = col + 1 |
||||||
|
end |
||||||
|
|
||||||
|
-- generate markdown table |
||||||
|
local packages_md = "## All Packages\n\n" |
||||||
|
for plat, _ in pairs(packages) do |
||||||
|
packages_md = packages_md .. "|" .. plat .. "(arch)" |
||||||
|
end |
||||||
|
packages_md = packages_md .. "|\n" |
||||||
|
for plat, _ in pairs(packages) do |
||||||
|
packages_md = packages_md .. "|" .. (plat:gsub('.', '-')) |
||||||
|
end |
||||||
|
packages_md = packages_md .. "|\n" |
||||||
|
for y = 1, row_max do |
||||||
|
for x = 1, col do |
||||||
|
local pkg = tables[y][x] |
||||||
|
local info = "" |
||||||
|
if pkg then |
||||||
|
if pkg.generic then |
||||||
|
info = pkg.name .. "(*)" |
||||||
|
else |
||||||
|
info = pkg.name .. "(" .. table.concat(pkg.archs, ",") .. ")" |
||||||
|
end |
||||||
|
end |
||||||
|
packages_md = packages_md .. "|" .. info |
||||||
|
end |
||||||
|
packages_md = packages_md .. "|\n" |
||||||
|
end |
||||||
|
print(packages_md) |
||||||
|
io.writefile(path.join(os.scriptdir(), "..", "PKGLIST.md"), packages_md) |
||||||
|
end |
@ -1,10 +1,14 @@ |
|||||||
|
import("packages") |
||||||
|
|
||||||
function main(...) |
function main(...) |
||||||
local packages = {} |
for plat, pkgs in pairs(packages()) do |
||||||
for _, dir in ipairs(os.dirs(path.join("packages", "*", "*"))) do |
cprint("${magenta}%s${clear}:", plat) |
||||||
local package = path.filename(dir) |
for _, pkg in ipairs(pkgs) do |
||||||
local key = package:sub(1, 1) |
if pkg.generic then |
||||||
packages[key] = packages[key] or {} |
cprint(" ${yellow}->${clear} %s", pkg.name) |
||||||
table.insert(packages[key], package) |
else |
||||||
|
cprint(" ${yellow}->${clear} %s (%s)", pkg.name, table.concat(pkg.archs, ", ")) |
||||||
|
end |
||||||
|
end |
||||||
end |
end |
||||||
print(packages) |
|
||||||
end |
end |
||||||
|
@ -0,0 +1,74 @@ |
|||||||
|
-- imports |
||||||
|
import("core.package.package") |
||||||
|
import("core.platform.platform") |
||||||
|
|
||||||
|
-- is supported platform and architecture? |
||||||
|
function _is_supported(instance, plat, arch) |
||||||
|
|
||||||
|
-- get script |
||||||
|
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 script for special plat and arch |
||||||
|
local pattern = plat .. '|' .. arch |
||||||
|
for _pattern, _script in pairs(script) do |
||||||
|
if not _pattern:startswith("__") and pattern:find('^' .. _pattern .. '$') then |
||||||
|
result = _script |
||||||
|
break |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
-- match script for special plat |
||||||
|
if result == nil then |
||||||
|
for _pattern, _script in pairs(script) do |
||||||
|
if not _pattern:startswith("__") and plat:find('^' .. _pattern .. '$') then |
||||||
|
result = _script |
||||||
|
break |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
-- get generic script |
||||||
|
result = result or script["__generic__"] |
||||||
|
end |
||||||
|
return result |
||||||
|
end |
||||||
|
|
||||||
|
-- the main entry |
||||||
|
function main(...) |
||||||
|
local packages = {} |
||||||
|
local plat = os.host() |
||||||
|
for _, packagedir in ipairs(os.dirs(path.join("packages", "*", "*"))) do |
||||||
|
local packagename = path.filename(packagedir) |
||||||
|
local packagefile = path.join(packagedir, "xmake.lua") |
||||||
|
local instance = package.load_from_repository(packagename, nil, packagedir, packagefile) |
||||||
|
if instance then |
||||||
|
for _, plat in ipairs({"windows", "linux", "macosx", "iphoneos", "android"}) do |
||||||
|
local archs = platform.archs(plat) |
||||||
|
if archs then |
||||||
|
local package_archs = {} |
||||||
|
for _, arch in ipairs(archs) do |
||||||
|
if _is_supported(instance, plat, arch) then |
||||||
|
table.insert(package_archs, arch) |
||||||
|
end |
||||||
|
end |
||||||
|
if #package_archs > 0 then |
||||||
|
packages[plat] = packages[plat] or {} |
||||||
|
table.insert(packages[plat], {name = instance:name(), archs = package_archs, generic = #package_archs == #archs}) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
for _, packages_plat in pairs(packages) do |
||||||
|
table.sort(packages_plat, function(a, b) return a.name < b.name end) |
||||||
|
end |
||||||
|
return packages |
||||||
|
end |
Loading…
Reference in new issue