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(...) |
||||
local packages = {} |
||||
for _, dir in ipairs(os.dirs(path.join("packages", "*", "*"))) do |
||||
local package = path.filename(dir) |
||||
local key = package:sub(1, 1) |
||||
packages[key] = packages[key] or {} |
||||
table.insert(packages[key], package) |
||||
for plat, pkgs in pairs(packages()) do |
||||
cprint("${magenta}%s${clear}:", plat) |
||||
for _, pkg in ipairs(pkgs) do |
||||
if pkg.generic then |
||||
cprint(" ${yellow}->${clear} %s", pkg.name) |
||||
else |
||||
cprint(" ${yellow}->${clear} %s (%s)", pkg.name, table.concat(pkg.archs, ", ")) |
||||
end |
||||
end |
||||
end |
||||
print(packages) |
||||
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