summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-05-21 09:02:51 +0800
committerruki <[email protected]>2022-05-21 09:02:51 +0800
commit4ec442e9ff51e1a628d68a6a8c144aa6e8fc6f6b (patch)
tree9a570ac9db40fcaaefa363d5c1cd87ad73d5a4ba
parentc0a8eb13c2f309ee965d75afac6d7eb05c73fa9f (diff)
connect and distconnect remote cache
-rw-r--r--xmake/modules/private/service/connect_service.lua7
-rw-r--r--xmake/modules/private/service/disconnect_service.lua7
-rw-r--r--xmake/modules/private/service/remote_cache/client.lua11
-rw-r--r--xmake/modules/private/service/remote_cache/server_session.lua3
-rw-r--r--xmake/modules/private/service/service.lua10
-rw-r--r--xmake/modules/private/service/stop_service.lua22
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