summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2023-11-24 22:35:48 +0800
committerruki <[email protected]>2023-11-24 22:35:48 +0800
commit19b444e7d0f05b1efa7a52b9d8c001be7cba14c2 (patch)
tree838bad36ea100442e6f62fbd0e682d38c2700490
parentafbbacc9085b29e39cc13e00d5673202a70f7645 (diff)
improve xmakesrc xpack
-rw-r--r--core/xpack.lua36
-rw-r--r--xmake/plugins/pack/main.lua48
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