diff options
| author | ruki <[email protected]> | 2022-05-21 09:02:51 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-05-21 09:02:51 +0800 |
| commit | 4ec442e9ff51e1a628d68a6a8c144aa6e8fc6f6b (patch) | |
| tree | 9a570ac9db40fcaaefa363d5c1cd87ad73d5a4ba | |
| parent | c0a8eb13c2f309ee965d75afac6d7eb05c73fa9f (diff) | |
connect and distconnect remote cache
6 files changed, 45 insertions, 15 deletions
diff --git a/xmake/modules/private/service/connect_service.lua b/xmake/modules/private/service/connect_service.lua index 8559c66c6..c6e0167ab 100644 --- a/xmake/modules/private/service/connect_service.lua +++ b/xmake/modules/private/service/connect_service.lua @@ -23,12 +23,17 @@ import("core.base.option") import("core.base.scheduler") import("private.service.client_config", {alias = "config"}) import("private.service.remote_build.client", {alias = "remote_build_client"}) +import("private.service.remote_cache.client", {alias = "remote_cache_client"}) import("private.service.distcc_build.client", {alias = "distcc_build_client"}) function _connect_remote_build_server(...) remote_build_client(...):connect() end +function _connect_remote_cache_server(...) + remote_cache_client(...):connect() +end + function _connect_distcc_build_server(...) distcc_build_client(...):connect() end @@ -39,6 +44,8 @@ function main(...) table.insert(connectors, _connect_remote_build_server) elseif option.get("distcc") then table.insert(connectors, _connect_distcc_build_server) + elseif option.get("ccache") then + table.insert(connectors, _connect_remote_cache_server) else if config.get("remote_build") then table.insert(connectors, _connect_remote_build_server) diff --git a/xmake/modules/private/service/disconnect_service.lua b/xmake/modules/private/service/disconnect_service.lua index 3ee503dfa..9f8a07146 100644 --- a/xmake/modules/private/service/disconnect_service.lua +++ b/xmake/modules/private/service/disconnect_service.lua @@ -24,11 +24,16 @@ import("core.base.scheduler") import("private.service.client_config", {alias = "config"}) import("private.service.remote_build.client", {alias = "remote_build_client"}) import("private.service.distcc_build.client", {alias = "distcc_build_client"}) +import("private.service.remote_cache.client", {alias = "remote_cache_client"}) function _disconnect_remote_build_server(...) remote_build_client(...):disconnect() end +function _disconnect_remote_cache_server(...) + remote_cache_client(...):disconnect() +end + function _disconnect_distcc_build_server(...) distcc_build_client(...):disconnect() end @@ -39,6 +44,8 @@ function main(...) table.insert(disconnectors, _disconnect_remote_build_server) elseif option.get("distcc") then table.insert(disconnectors, _disconnect_distcc_build_server) + elseif option.get("ccache") then + table.insert(disconnectors, _disconnect_remote_cache_server) else if config.get("remote_build") then table.insert(disconnectors, _disconnect_remote_build_server) diff --git a/xmake/modules/private/service/remote_cache/client.lua b/xmake/modules/private/service/remote_cache/client.lua index 78c6945f8..d58bdd9b5 100644 --- a/xmake/modules/private/service/remote_cache/client.lua +++ b/xmake/modules/private/service/remote_cache/client.lua @@ -52,12 +52,6 @@ function remote_cache_client:init() else raise("we need enter a project directory with xmake.lua first!") end - - -- init filesync - local filesync = new_filesync(self:projectdir(), path.join(self:workdir(), "manifest.txt")) - filesync:ignorefiles_add(".git/**") - filesync:ignorefiles_add(".xmake/**") - self._FILESYNC = filesync end -- get class @@ -123,11 +117,6 @@ function remote_cache_client:connect() status.connected = ok status.session_id = session_id self:status_save() - - -- sync files - if ok then - self:sync() - end end -- disconnect server diff --git a/xmake/modules/private/service/remote_cache/server_session.lua b/xmake/modules/private/service/remote_cache/server_session.lua index 5611f73b4..f65393cbc 100644 --- a/xmake/modules/private/service/remote_cache/server_session.lua +++ b/xmake/modules/private/service/remote_cache/server_session.lua @@ -54,9 +54,6 @@ function server_session:open() return end - -- ensure source directory - self:_ensure_sourcedir() - -- update status local status = self:status() status.connected = true diff --git a/xmake/modules/private/service/service.lua b/xmake/modules/private/service/service.lua index 192adc539..2f0fb4e75 100644 --- a/xmake/modules/private/service/service.lua +++ b/xmake/modules/private/service/service.lua @@ -23,12 +23,17 @@ import("core.base.option") import("core.base.scheduler") import("private.service.server_config", {alias = "config"}) import("private.service.remote_build.server", {alias = "remote_build_server"}) +import("private.service.remote_cache.server", {alias = "remote_cache_server"}) import("private.service.distcc_build.server", {alias = "distcc_build_server"}) function _start_remote_build_server(...) remote_build_server(...):runloop() end +function _start_remote_cache_server(...) + remote_cache_server(...):runloop() +end + function _start_distcc_build_server(...) distcc_build_server(...):runloop() end @@ -42,10 +47,15 @@ function main(daemon, ...) table.insert(starters, _start_remote_build_server) elseif option.get("distcc") then table.insert(starters, _start_distcc_build_server) + elseif option.get("ccache") then + table.insert(starters, _start_remote_cache_server) else if config.get("remote_build") then table.insert(starters, _start_remote_build_server) end + if config.get("remote_cache") then + table.insert(starters, _start_remote_cache_server) + end if config.get("distcc_build") then table.insert(starters, _start_distcc_build_server) end diff --git a/xmake/modules/private/service/stop_service.lua b/xmake/modules/private/service/stop_service.lua index 6e0971885..46f3d5ca1 100644 --- a/xmake/modules/private/service/stop_service.lua +++ b/xmake/modules/private/service/stop_service.lua @@ -21,6 +21,7 @@ -- imports import("core.base.option") import("private.service.remote_build.server", {alias = "remote_build_server"}) +import("private.service.remote_cache.server", {alias = "remote_cache_server"}) import("private.service.distcc_build.server", {alias = "distcc_build_server"}) function _stop_remote_build_server(...) @@ -42,6 +43,25 @@ function _stop_remote_build_server(...) end end +function _stop_remote_cache_server(...) + local pidfile = remote_cache_server(...):pidfile() + if pidfile and os.isfile(pidfile) then + local pid = io.readfile(pidfile) + if pid then + pid = pid:trim() + try { function () + if is_host("windows") then + os.run("taskkill /f /t /pid %s", pid) + else + os.run("kill -9 %s", pid) + end + print("service[%s]: stopped", pid) + end} + end + os.rm(pidfile) + end +end + function _stop_distcc_build_server(...) local pidfile = distcc_build_server(...):pidfile() if pidfile and os.isfile(pidfile) then @@ -62,7 +82,7 @@ function _stop_distcc_build_server(...) end function main(...) - local stoppers = {_stop_remote_build_server, _stop_distcc_build_server} + local stoppers = {_stop_remote_build_server, _stop_remote_cache_server, _stop_distcc_build_server} for _, stop_server in ipairs(stoppers) do stop_server(...) end |
