diff options
| author | Martin Ridgers <[email protected]> | 2022-01-19 14:52:45 +0100 |
|---|---|---|
| committer | Martin Ridgers <[email protected]> | 2022-01-20 10:22:07 +0100 |
| commit | 2f96366c3f789252c821c1f65f9e01b860b6912a (patch) | |
| tree | 3634d313ccc179d4008efd001d5641a871f608b7 /bundle.lua | |
| parent | Added copyright headers to xmake.lua scripts (diff) | |
| download | zen-2f96366c3f789252c821c1f65f9e01b860b6912a.tar.xz zen-2f96366c3f789252c821c1f65f9e01b860b6912a.zip | |
Moved 'xmake bundle' implementation into bundle.lua
This appears to be necessary in order to be able to split the bundling
code up into functions. Functions implemented in xmake.lua files are not
persistented in the global table by the time task.on_run() is called
Diffstat (limited to 'bundle.lua')
| -rw-r--r-- | bundle.lua | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/bundle.lua b/bundle.lua new file mode 100644 index 000000000..81e292034 --- /dev/null +++ b/bundle.lua @@ -0,0 +1,87 @@ +-- Copyright Epic Games, Inc. All Rights Reserved. + +local function bundle_windows() + import("core.base.option") + import("detect.tools.find_zip") + import("detect.tools.find_7z") + import("detect.sdks.find_vcpkgdir") + + local zip_cmd = find_7z() + if not zip_cmd then + raise("unable to find zip tool") + end + + local dirs = { + vcpkg = { + root = find_vcpkgdir(), + tools = "" + }, + sentry = { + root = "" + }, + package = { + root = "" + } + } + + if dirs.vcpkg.root == nil or dirs.vcpkg.root == "" then + raise("unable to find vcpkg root directory" ); + end + + dirs.vcpkg.tools = dirs.vcpkg.root.."/installed/x64-windows-static/tools" + dirs.sentry.root = dirs.vcpkg.tools.."/sentry-native" + + dirs.package_root = "./build/packages/z" + + local external_files = { + dirs.sentry.root.."/crashpad_handler.exe" + } + + dirs.package.root = "./build/packages/z" + + dirs.package.zenserver = { + root = dirs.package.root.."/zenserver", + windows = dirs.package.root.."/zenserver/windows/x64/release/bin" + } + + local config = "-c -m release -a x64" + if option.get("withtrace") then + config = config.." --zentrace=yes" + end + + print(os.exec("xmake config "..config)) + print(os.exec("xmake build zenserver")) + print(os.exec("xmake package -f local zenserver")) + + -- copy extenral file(s) + for _,file in ipairs(external_files) do + printf("copy '%s' -> '%s'\n", file, dirs.package.zenserver.windows) + os.cp(file, dirs.package.zenserver.windows.."/") + end + + -- create zip file + local bundle_name = "zenserver-win64.zip" + if option.get("withtrace") then + bundle_name = "zenserver-trace-win64.zip" + end + + local bundle_path = dirs.package.zenserver.root.."/"..bundle_name + + local zip_args = {} + table.insert(zip_args, "a") + table.insert(zip_args, bundle_path) + table.insert(zip_args, dirs.package.zenserver.windows.."/*.*") + + print(string.format("creating bundle '%s' from '%s'\n",bundle_path, dirs.package.zenserver.windows.."/")) + os.runv(zip_cmd, zip_args) + + print(string.format("bundle '%s' ok!", bundle_name)) +end + +function main() + if is_host("windows") then + return bundle_windows() + end + + raise("'xmake bundle' not currently supported on this platform") +end |