diff options
| author | ruki <[email protected]> | 2023-11-24 22:35:48 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2023-11-24 22:35:48 +0800 |
| commit | 19b444e7d0f05b1efa7a52b9d8c001be7cba14c2 (patch) | |
| tree | 838bad36ea100442e6f62fbd0e682d38c2700490 | |
| parent | afbbacc9085b29e39cc13e00d5673202a70f7645 (diff) | |
improve xmakesrc xpack
| -rw-r--r-- | core/xpack.lua | 36 | ||||
| -rw-r--r-- | xmake/plugins/pack/main.lua | 48 |
2 files changed, 49 insertions, 35 deletions
diff --git a/core/xpack.lua b/core/xpack.lua index b8dcdc5c5..19c4ca0e7 100644 --- a/core/xpack.lua +++ b/core/xpack.lua @@ -77,30 +77,32 @@ xpack_component("LongPath") end) xpack("xmakesrc") - set_formats("zip", "targz", "runself") + set_formats("srczip", "srctargz", "runself") set_basename("xmake-v$(version)") before_package(function (package) import("devel.git") - local rootdir = path.join(os.tmpfile(package:name()) .. ".dir", "repo") - os.tryrm(rootdir) - os.cp(path.directory(os.projectdir()), rootdir) + local rootdir = path.join(os.tmpfile(package:basename()) .. ".dir", "repo") + if not os.isdir(rootdir) then + os.tryrm(rootdir) + os.cp(path.directory(os.projectdir()), rootdir) - git.clean({repodir = rootdir, force = true, all = true}) - git.reset({repodir = rootdir, hard = true}) - if os.isfile(path.join(rootdir, ".gitmodules")) then - git.submodule.clean({repodir = rootdir, force = true, all = true}) - git.submodule.reset({repodir = rootdir, hard = true}) + git.clean({repodir = rootdir, force = true, all = true}) + git.reset({repodir = rootdir, hard = true}) + if os.isfile(path.join(rootdir, ".gitmodules")) then + git.submodule.clean({repodir = rootdir, force = true, all = true}) + git.submodule.reset({repodir = rootdir, hard = true}) + end end local prefixdir = "xmake-" .. package:version() local extraconf = {rootdir = rootdir, prefixdir = prefixdir} - package:add("installfiles", path.join(rootdir, "core/**|src/pdcurses/**|src/luajit/**|src/tbox/tbox/src/demo/**"), extraconf) - package:add("installfiles", path.join(rootdir, "xmake/**"), extraconf) - package:add("installfiles", path.join(rootdir, "*.md"), extraconf) - package:add("installfiles", path.join(rootdir, "configure"), extraconf) - package:add("installfiles", path.join(rootdir, "scripts/*.sh"), extraconf) - package:add("installfiles", path.join(rootdir, "scripts/man/**"), extraconf) - package:add("installfiles", path.join(rootdir, "scripts/debian/**"), extraconf) - package:add("installfiles", path.join(rootdir, "scripts/msys/**"), extraconf) + package:add("sourcefiles", path.join(rootdir, "core/**|src/pdcurses/**|src/luajit/**|src/tbox/tbox/src/demo/**"), extraconf) + package:add("sourcefiles", path.join(rootdir, "xmake/**"), extraconf) + package:add("sourcefiles", path.join(rootdir, "*.md"), extraconf) + package:add("sourcefiles", path.join(rootdir, "configure"), extraconf) + package:add("sourcefiles", path.join(rootdir, "scripts/*.sh"), extraconf) + package:add("sourcefiles", path.join(rootdir, "scripts/man/**"), extraconf) + package:add("sourcefiles", path.join(rootdir, "scripts/debian/**"), extraconf) + package:add("sourcefiles", path.join(rootdir, "scripts/msys/**"), extraconf) end) diff --git a/xmake/plugins/pack/main.lua b/xmake/plugins/pack/main.lua index f89c84835..c9576774f 100644 --- a/xmake/plugins/pack/main.lua +++ b/xmake/plugins/pack/main.lua @@ -26,6 +26,28 @@ import("private.service.remote_build.action", {alias = "remote_build_action"}) import("actions.build.main", {rootdir = os.programdir(), alias = "build_action"}) import("xpack") +-- get packages +function _get_packages() + + -- get need formats + local formats_need = option.get("formats") + if formats_need then + formats_need = formats_need:split(",") + if formats_need[1] == "all" then + formats_need = nil + end + end + + local packages = {} + for _, package in ipairs(xpack.packages()) do + if not formats_need or table.contains(formats_need, package:format()) then + table.insert(packages, package) + end + end + return packages +end + +-- load package function _load_package(package) -- ensure build and output directories @@ -39,47 +61,37 @@ function _load_package(package) end end +-- pack the given package function _on_package(package) import(package:format())(package) end function _pack_package(package) - -- get need formats - local formats_need = option.get("formats") - if formats_need then - formats_need = formats_need:split(",") - if formats_need[1] == "all" then - formats_need = nil - end - end - -- do pack local scripts = { package:script("package_before"), package:script("package", _on_package), package:script("package_after") } - if not formats_need or table.contains(formats_need, package:format()) then - _load_package(package) - for i = 1, 3 do - local script = scripts[i] - if script ~= nil then - script(package) - end + _load_package(package) + for i = 1, 3 do + local script = scripts[i] + if script ~= nil then + script(package) end end end function _pack_packages() - for _, package in ipairs(xpack.packages()) do + for _, package in ipairs(_get_packages()) do _pack_package(package) end end function _build_targets() local targetnames = {} - for _, package in ipairs(xpack.packages()) do + for _, package in ipairs(_get_packages()) do if package:from_binary() then local targets = package:get("targets") if targets then |
