summaryrefslogtreecommitdiff
path: root/xmake/modules/private/service/remote_build/server_session.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/modules/private/service/remote_build/server_session.lua')
-rw-r--r--xmake/modules/private/service/remote_build/server_session.lua19
1 files changed, 17 insertions, 2 deletions
diff --git a/xmake/modules/private/service/remote_build/server_session.lua b/xmake/modules/private/service/remote_build/server_session.lua
index 7031c5095..fa9d7fd24 100644
--- a/xmake/modules/private/service/remote_build/server_session.lua
+++ b/xmake/modules/private/service/remote_build/server_session.lua
@@ -37,10 +37,15 @@ local server_session = server_session or object()
function server_session:init(server, session_id)
self._ID = session_id
self._SERVER = server
+
local filesync = new_filesync(self:sourcedir(), path.join(self:workdir(), "manifest.txt"))
filesync:ignorefiles_add(".git/**")
filesync:ignorefiles_add(".xmake/**")
self._FILESYNC = filesync
+
+ local xmake_filesync = new_filesync(self:xmake_sourcedir(), path.join(self:workdir(), "xmakesrc_manifest.txt"))
+ xmake_filesync:ignorefiles_add(".git/**")
+ self._XMAKE_FILESYNC = xmake_filesync
end
-- get server session id
@@ -101,7 +106,7 @@ function server_session:diff(respmsg)
self:_ensure_sourcedir()
-- do snapshot
- local filesync = self:_filesync()
+ local filesync = body.xmakesrc and self:_xmake_filesync() or self:_filesync()
local manifest_server = assert(filesync:snapshot(), "server manifest not found!")
local manifest_client = assert(body.manifest, "client manifest not found!")
@@ -146,7 +151,7 @@ function server_session:sync(respmsg)
local body = respmsg:body()
local stream = self:stream()
local manifest = assert(body.manifest, "manifest not found!")
- local filesync = self:_filesync()
+ local filesync = body.xmakesrc and self:_xmake_filesync() or self:_filesync()
local sourcedir = self:sourcedir()
local archivedir = os.tmpfile() .. ".dir"
vprint("%s: sync files in %s ..", self, self:sourcedir())
@@ -297,11 +302,21 @@ function server_session:sourcedir()
return path.join(self:workdir(), "source")
end
+-- get xmake sourcedir directory
+function server_session:xmake_sourcedir()
+ return path.join(self:workdir(), "xmake_source")
+end
+
-- get filesync
function server_session:_filesync()
return self._FILESYNC
end
+-- get filesync for xmakesrc
+function server_session:_xmake_filesync()
+ return self._XMAKE_FILESYNC
+end
+
-- ensure source directory
function server_session:_ensure_sourcedir()
local sourcedir = self:sourcedir()