add genlist.lua

pull/18/head
ruki 6 years ago
parent e1c95d5902
commit 5af8900a45
No known key found for this signature in database
GPG Key ID: 33341DF9719963FA
  1. 53
      PKGLIST.md
  2. 48
      scripts/genlist.lua
  3. 18
      scripts/list.lua
  4. 74
      scripts/packages.lua

@ -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…
Cancel
Save