mirror of
https://github.com/ONLYOFFICE/build_tools.git
synced 2026-04-07 14:06:31 +08:00
Compare commits
106 Commits
feature/li
...
v9.2.0.80
| Author | SHA1 | Date | |
|---|---|---|---|
| dd148a105e | |||
| acf75749c2 | |||
| 354e4a6a04 | |||
| b85fb9c07c | |||
| 40b95455a0 | |||
| 62ab1f9935 | |||
| dd26863a2b | |||
| c02a387a64 | |||
| 0fd6852fe8 | |||
| 0dbf009c6b | |||
| 44b6d2d64f | |||
| b2ce2bbcad | |||
| 133192df35 | |||
| c45cf77747 | |||
| 9f898d6873 | |||
| 61bf2d9413 | |||
| 0c8b3e5919 | |||
| 6fd500e55d | |||
| 10f7dcee17 | |||
| 2fcdef2e00 | |||
| 2ec27065f8 | |||
| 4f804ba0e6 | |||
| 7fb05a51f9 | |||
| 30e3202fd5 | |||
| b6b09d17f4 | |||
| 8a70f3d14a | |||
| aaa5096526 | |||
| 668aa88c6e | |||
| ec544ca9ab | |||
| 17ee00a04c | |||
| bc4daa9546 | |||
| 099003b250 | |||
| 4ca5e4bcb5 | |||
| ee4469885e | |||
| 1350955f67 | |||
| de36280085 | |||
| 0399ea1cb1 | |||
| 41ed9824ab | |||
| 842df5ffd0 | |||
| d0e3f36313 | |||
| 18605dc68f | |||
| 5004a30908 | |||
| 33e41ed704 | |||
| 1f4c88a489 | |||
| 283977f014 | |||
| e71e0bee74 | |||
| fe9847f246 | |||
| f79bfd099b | |||
| 3ec9b4dba5 | |||
| 0c7348fc89 | |||
| 97b615c36a | |||
| 59f95f52ce | |||
| ba04810793 | |||
| aea03d8554 | |||
| 09247281ef | |||
| 7b31d85c7c | |||
| 3ad5b9d05d | |||
| 894f23b292 | |||
| 125d0112e4 | |||
| b46d6075e4 | |||
| c535c411da | |||
| 599db1f8be | |||
| 10ff21a974 | |||
| c60dc81694 | |||
| 6de1859441 | |||
| 70a50da160 | |||
| 3ca2efeb30 | |||
| 496594e77f | |||
| 8ebc7dba86 | |||
| 7da1a18753 | |||
| c16242f25f | |||
| 2f43d90ab9 | |||
| 6f242eee81 | |||
| f19a406ad2 | |||
| cfe69c6bcd | |||
| dcbeec9562 | |||
| 954e3b1ee8 | |||
| d5666b1152 | |||
| c4fa19a1c8 | |||
| 7d9444a727 | |||
| 3646a2560a | |||
| 2f877e0a4c | |||
| 434d6cc33c | |||
| 31386ad676 | |||
| 0d917471a7 | |||
| 4d91ac47ec | |||
| 44e346210b | |||
| 2ffc1b9347 | |||
| 7a58da1af1 | |||
| f703663342 | |||
| af9db63711 | |||
| 7e9d9051aa | |||
| 73b41a5588 | |||
| 1ab43f0551 | |||
| 79c4fa5042 | |||
| 944caac250 | |||
| 7fe4ade155 | |||
| 3d51a5e648 | |||
| d6af99141d | |||
| 568e84275c | |||
| 152b524197 | |||
| 5a403cb3ac | |||
| d435dd496b | |||
| 252a5c306d | |||
| fc9d060a78 | |||
| 6c700fe492 |
17
Dockerfile
17
Dockerfile
@ -1,17 +1,30 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ENV TZ=Etc/UTC
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
RUN echo 'keyboard-configuration keyboard-configuration/layoutcode string us' | debconf-set-selections && \
|
||||
echo 'keyboard-configuration keyboard-configuration/modelcode string pc105' | debconf-set-selections
|
||||
|
||||
RUN apt-get -y update && \
|
||||
apt-get -y install tar \
|
||||
sudo
|
||||
sudo \
|
||||
wget
|
||||
|
||||
RUN wget https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-x86_64.tar.gz && \
|
||||
tar -xzf cmake-3.30.0-linux-x86_64.tar.gz -C /opt && \
|
||||
ln -s /opt/cmake-3.30.0-linux-x86_64/bin/cmake /usr/local/bin/cmake && \
|
||||
ln -s /opt/cmake-3.30.0-linux-x86_64/bin/ctest /usr/local/bin/ctest && \
|
||||
rm cmake-3.30.0-linux-x86_64.tar.gz
|
||||
|
||||
ADD . /build_tools
|
||||
WORKDIR /build_tools
|
||||
|
||||
RUN mkdir -p /opt/python3 && \
|
||||
tar -xzf /build_tools/tools/linux/python3.tar.gz -C /opt/python3 --strip-components=1
|
||||
wget -P /opt/python3/ https://github.com/ONLYOFFICE-data/build_tools_data/raw/refs/heads/master/python/python3.tar.gz && \
|
||||
tar -xzf /opt/python3/python3.tar.gz -C /opt/python3 --strip-components=1
|
||||
|
||||
ENV PATH="/opt/python3/bin:${PATH}"
|
||||
|
||||
|
||||
@ -42,7 +42,8 @@ parser.add_option("--vs-version", action="store", type="string", dest="vs-versio
|
||||
parser.add_option("--vs-path", action="store", type="string", dest="vs-path", default="", help="path to vcvarsall")
|
||||
parser.add_option("--siteUrl", action="store", type="string", dest="siteUrl", default="127.0.0.1", help="site url")
|
||||
parser.add_option("--multiprocess", action="store", type="string", dest="multiprocess", default="1", help="provides ability to specify single process for make")
|
||||
parser.add_option("--custom-sysroot", action="store", type="string", dest="custom-sysroot", default="0", help="provides ability to use custom sysroot (ubuntu 16.04) to build c++ core. If value is \"1\", then the sysroot from tools/linux/sysroot will be used, and if it is not there, it will download it and unpack it. You can also set value as the path to the your own sysroot (rarely used). Only for linux")
|
||||
parser.add_option("--sysroot", action="store", type="string", dest="sysroot", default="0", help="provides ability to use sysroot (ubuntu 16.04) to build c++ code. If value is \"1\", then the sysroot from tools/linux/sysroot will be used, and if it is not there, it will download it and unpack it. You can also set value as the path to the your own sysroot (rarely used). Only for linux")
|
||||
parser.add_option("--qemu-win-arm64-dir", action="store", type="string", dest="qemu-win-arm64-dir", default="", help="dir to qemu virtual machine for win_arm64 cross build. It should contains start.bat. More info in tools/win/qemu.")
|
||||
|
||||
(options, args) = parser.parse_args(arguments)
|
||||
configOptions = vars(options)
|
||||
|
||||
3
make.py
3
make.py
@ -19,8 +19,6 @@ import make_common
|
||||
import develop
|
||||
import argparse
|
||||
|
||||
base.check_python()
|
||||
|
||||
parser = argparse.ArgumentParser(description="options")
|
||||
parser.add_argument("--build-only-branding", action="store_true")
|
||||
args = parser.parse_args()
|
||||
@ -30,6 +28,7 @@ if (args.build_only_branding):
|
||||
|
||||
# parse configuration
|
||||
config.parse()
|
||||
base.check_python()
|
||||
|
||||
base_dir = base.get_script_dir(__file__)
|
||||
|
||||
|
||||
151
scripts/base.py
151
scripts/base.py
@ -16,6 +16,7 @@ import json
|
||||
|
||||
__file__script__path__ = os.path.dirname( os.path.realpath(__file__))
|
||||
icu_ver = "74"
|
||||
icu_ver_old = "58" # for win_xp support
|
||||
|
||||
# common functions --------------------------------------
|
||||
def get_script_dir(file=""):
|
||||
@ -697,9 +698,12 @@ def get_prefix_cross_compiler_arm64():
|
||||
return ""
|
||||
|
||||
def get_gcc_version():
|
||||
gcc_path = "gcc"
|
||||
if config.option("sysroot") != "":
|
||||
gcc_path = config.option("sysroot") + "/usr/bin/gcc"
|
||||
gcc_version_major = 4
|
||||
gcc_version_minor = 0
|
||||
gcc_version_str = run_command("gcc -dumpfullversion -dumpversion")['stdout']
|
||||
gcc_version_str = run_command(gcc_path + " -dumpfullversion -dumpversion")['stdout']
|
||||
if (gcc_version_str != ""):
|
||||
try:
|
||||
gcc_ver = gcc_version_str.split(".")
|
||||
@ -904,9 +908,24 @@ def _check_icu_common(dir, out):
|
||||
return isExist
|
||||
|
||||
def qt_copy_icu(out):
|
||||
tests = [get_env("QT_DEPLOY") + "/../lib", "/lib", "/lib/x86_64-linux-gnu", "/lib64", "/lib64/x86_64-linux-gnu"]
|
||||
tests += ["/usr/lib", "/usr/lib/x86_64-linux-gnu", "/usr/lib64", "/usr/lib64/x86_64-linux-gnu"]
|
||||
tests += ["/lib/i386-linux-gnu", "/usr/lib/i386-linux-gnu"]
|
||||
tests = [get_env("QT_DEPLOY") + "/../lib"]
|
||||
prefix = ""
|
||||
postfixes = [""]
|
||||
|
||||
# TODO add for linux arm desktop build
|
||||
if config.option("sysroot") != "":
|
||||
prefix = config.option("sysroot")
|
||||
else:
|
||||
prefix = ""
|
||||
|
||||
postfixes += ["/x86_64-linux-gnu"]
|
||||
postfixes += ["/i386-linux-gnu"]
|
||||
|
||||
for postfix in postfixes:
|
||||
tests += [prefix + "/lib" + postfix]
|
||||
tests += [prefix + "/lib64" + postfix]
|
||||
tests += [prefix + "/usr/lib" + postfix]
|
||||
tests += [prefix + "/usr/lib64" + postfix]
|
||||
|
||||
for test in tests:
|
||||
if (_check_icu_common(test, out)):
|
||||
@ -995,7 +1014,7 @@ def generate_doctrenderer_config(path, root, product, vendor = "", dictionaries
|
||||
file.close()
|
||||
return
|
||||
|
||||
def generate_plist_framework_folder(file, platform):
|
||||
def generate_plist(file, platform):
|
||||
bundle_id_url = "com.onlyoffice."
|
||||
if ("" != get_env("PUBLISHER_BUNDLE_ID")):
|
||||
bundle_id_url = get_env("PUBLISHER_BUNDLE_ID")
|
||||
@ -1046,7 +1065,29 @@ def generate_plist_framework_folder(file, platform):
|
||||
fileInfo.close()
|
||||
return
|
||||
|
||||
def generate_plist(path, platform, max_depth=512):
|
||||
def generate_xcprivacy(file, platform):
|
||||
content = \
|
||||
"""<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
\t<key>NSPrivacyTracking</key>
|
||||
\t<false/>
|
||||
\t<key>NSPrivacyCollectedDataTypes</key>
|
||||
\t<array/>
|
||||
\t<key>NSPrivacyTrackingDomains</key>
|
||||
\t<array/>
|
||||
\t<key>NSPrivacyAccessedAPITypes</key>
|
||||
\t<array/>
|
||||
</dict>
|
||||
</plist>"""
|
||||
fileDst = os.path.join(file, "PrivacyInfo.xcprivacy")
|
||||
fileInfo = codecs.open(fileDst, "w", "utf-8")
|
||||
fileInfo.write(content)
|
||||
fileInfo.close()
|
||||
return
|
||||
|
||||
def for_each_framework(path, platform, callbacks, max_depth=512):
|
||||
if not config.check_option("config", "bundle_dylibs"):
|
||||
return
|
||||
if max_depth == 0:
|
||||
@ -1058,9 +1099,10 @@ def generate_plist(path, platform, max_depth=512):
|
||||
for file in glob.glob(src_folder):
|
||||
if (is_dir(file)):
|
||||
if file.endswith(".framework"):
|
||||
generate_plist_framework_folder(file, platform)
|
||||
for callback in callbacks:
|
||||
callback(file, platform)
|
||||
else:
|
||||
generate_plist(file, platform, max_depth - 1)
|
||||
for_each_framework(file, platform, callbacks, max_depth - 1)
|
||||
return
|
||||
|
||||
def correct_bundle_identifier(bundle_identifier):
|
||||
@ -1308,25 +1350,24 @@ def mac_correct_rpath_x2t(dir):
|
||||
mac_correct_rpath_library("DocxRenderer", ["UnicodeConverter", "kernel", "graphics"])
|
||||
mac_correct_rpath_library("IWorkFile", ["UnicodeConverter", "kernel"])
|
||||
mac_correct_rpath_library("HWPFile", ["UnicodeConverter", "kernel", "graphics"])
|
||||
cmd("chmod", ["-v", "+x", "./x2t"])
|
||||
cmd("install_name_tool", ["-add_rpath", "@executable_path", "./x2t"], True)
|
||||
mac_correct_rpath_binary("./x2t", mac_icu_libs + ["UnicodeConverter", "kernel", "kernel_network", "graphics", "PdfFile", "XpsFile", "OFDFile", "DjVuFile", "HtmlFile2", "Fb2File", "EpubFile", "doctrenderer", "DocxRenderer", "IWorkFile", "HWPFile"])
|
||||
|
||||
def correct_core_executable(name, libs):
|
||||
cmd("chmod", ["-v", "+x", name])
|
||||
cmd("install_name_tool", ["-add_rpath", "@executable_path", name], True)
|
||||
mac_correct_rpath_binary(name, mac_icu_libs + libs)
|
||||
return
|
||||
|
||||
correct_core_executable("x2t", ["UnicodeConverter", "kernel", "kernel_network", "graphics", "PdfFile", "XpsFile", "OFDFile", "DjVuFile", "HtmlFile2", "Fb2File", "EpubFile", "doctrenderer", "DocxRenderer", "IWorkFile", "HWPFile"])
|
||||
if is_file("./allfontsgen"):
|
||||
cmd("chmod", ["-v", "+x", "./allfontsgen"])
|
||||
cmd("install_name_tool", ["-add_rpath", "@executable_path", "./allfontsgen"], True)
|
||||
mac_correct_rpath_binary("./allfontsgen", mac_icu_libs + ["UnicodeConverter", "kernel", "graphics"])
|
||||
correct_core_executable("allfontsgen", ["UnicodeConverter", "kernel", "graphics"])
|
||||
if is_file("./allthemesgen"):
|
||||
cmd("chmod", ["-v", "+x", "./allthemesgen"])
|
||||
cmd("install_name_tool", ["-add_rpath", "@executable_path", "./allthemesgen"], True)
|
||||
mac_correct_rpath_binary("./allthemesgen", mac_icu_libs + ["UnicodeConverter", "kernel", "graphics", "kernel_network", "doctrenderer", "PdfFile", "XpsFile", "OFDFile", "DjVuFile", "DocxRenderer"])
|
||||
correct_core_executable("allthemesgen", ["UnicodeConverter", "kernel", "graphics", "kernel_network", "doctrenderer", "PdfFile", "XpsFile", "OFDFile", "DjVuFile", "DocxRenderer"])
|
||||
if is_file("./pluginsmanager"):
|
||||
cmd("chmod", ["-v", "+x", "./pluginsmanager"])
|
||||
cmd("install_name_tool", ["-add_rpath", "@executable_path", "./pluginsmanager"], True)
|
||||
mac_correct_rpath_binary("./pluginsmanager", mac_icu_libs + ["UnicodeConverter", "kernel", "kernel_network"])
|
||||
correct_core_executable("pluginsmanager", ["UnicodeConverter", "kernel", "kernel_network"])
|
||||
if is_file("./vboxtester"):
|
||||
cmd("chmod", ["-v", "+x", "./vboxtester"])
|
||||
cmd("install_name_tool", ["-add_rpath", "@executable_path", "./vboxtester"], True)
|
||||
mac_correct_rpath_binary("./vboxtester", mac_icu_libs + ["UnicodeConverter", "kernel", "kernel_network"])
|
||||
correct_core_executable("vboxtester", ["UnicodeConverter", "kernel", "kernel_network"])
|
||||
if is_file("./x2ttester"):
|
||||
correct_core_executable("x2ttester", ["UnicodeConverter", "kernel", "graphics"])
|
||||
os.chdir(cur_dir)
|
||||
return
|
||||
|
||||
@ -1846,6 +1887,23 @@ def check_module_version(actual_version, clear_func):
|
||||
clear_func()
|
||||
return
|
||||
|
||||
|
||||
def set_sysroot_env():
|
||||
global ENV_BEFORE_SYSROOT
|
||||
ENV_BEFORE_SYSROOT = dict(os.environ)
|
||||
if "linux" == host_platform() and config.option("sysroot") != "":
|
||||
os.environ['PATH'] = config.option("sysroot") + "/usr/bin:" + get_env("PATH")
|
||||
os.environ['LD_LIBRARY_PATH'] = config.get_custom_sysroot_lib()
|
||||
os.environ['CC'] = config.get_custom_sysroot_bin() + "/gcc"
|
||||
os.environ['CXX'] = config.get_custom_sysroot_bin() + "/g++"
|
||||
os.environ['CFLAGS'] = "--sysroot=" + config.option("sysroot")
|
||||
os.environ['CXXFLAGS'] = "--sysroot=" + config.option("sysroot")
|
||||
check_python()
|
||||
|
||||
def restore_sysroot_env():
|
||||
os.environ.clear()
|
||||
os.environ.update(ENV_BEFORE_SYSROOT)
|
||||
|
||||
def check_python():
|
||||
if ("linux" != host_platform()):
|
||||
return
|
||||
@ -1912,20 +1970,47 @@ def get_autobuild_version(product, platform="", branch="", build=""):
|
||||
download_addon = download_branch + "/" + download_build + "/" + product + "-" + download_platform + ".7z"
|
||||
return "http://repo-doc-onlyoffice-com.s3.amazonaws.com/archive/" + download_addon
|
||||
|
||||
def is_use_create_artifacts_qemu_any_platform():
|
||||
if config.check_option("platform", "win_arm64") and not is_os_arm():
|
||||
return True
|
||||
return False
|
||||
|
||||
def is_use_create_artifacts_qemu(platform):
|
||||
if platform == "win_arm64" and not is_os_arm():
|
||||
return True
|
||||
return False
|
||||
|
||||
def create_artifacts_qemu_any_platform():
|
||||
if not is_use_create_artifacts_qemu_any_platform():
|
||||
return
|
||||
if config.check_option("platform", "win_arm64"):
|
||||
create_artifacts_qemu_win_arm()
|
||||
return;
|
||||
|
||||
def create_artifacts_qemu_win_arm():
|
||||
if config.option("qemu-win-arm64-dir") == "":
|
||||
print("For deploying win_arm64 on non arm host you should provide qemu-win-arm64-dir. More info in tools/win/qemu/README.md")
|
||||
return
|
||||
|
||||
old_curr_dir = os.path.abspath(os.curdir)
|
||||
qemu_dir = os.path.abspath(config.option("qemu-win-arm64-dir"))
|
||||
|
||||
os.chdir(qemu_dir)
|
||||
start_qemu_bat_path = f"start.bat"
|
||||
cmd(start_qemu_bat_path, [])
|
||||
os.chdir(old_curr_dir)
|
||||
|
||||
def create_x2t_js_cache(dir, product, platform):
|
||||
# mac
|
||||
if is_file(dir + "/libdoctrenderer.dylib") or is_dir(dir + "/doctrenderer.framework"):
|
||||
doctrenderer_lib = "libdoctrenderer.dylib" if is_file(dir + "/libdoctrenderer.dylib") else "doctrenderer.framework/doctrenderer"
|
||||
if os.path.getsize(dir + "/" + doctrenderer_lib) < 5*1024*1024:
|
||||
return
|
||||
|
||||
|
||||
if ((platform == "linux_arm64") and not is_os_arm()):
|
||||
cmd_in_dir_qemu(platform, dir, "./x2t", ["-create-js-snapshots"], True)
|
||||
return
|
||||
|
||||
if platform == "win_arm64": # copying sdkjs later
|
||||
return
|
||||
|
||||
cmd_in_dir(dir, "./x2t", ["-create-js-snapshots"], True)
|
||||
return
|
||||
|
||||
@ -1940,11 +2025,19 @@ def deploy_icu(core_dir, dst_dir, platform):
|
||||
copy_file(src_dir + "/icudt" + icu_ver + "l.dat", dst_dir + "/icudt" + icu_ver + "l.dat")
|
||||
return
|
||||
|
||||
isXp = False
|
||||
if platform.endswith("xp"):
|
||||
isXp = True
|
||||
platform = platform[0:-3]
|
||||
src_dir = core_dir + "/Common/3dParty/icu/" + platform + "/build"
|
||||
|
||||
if (0 == platform.find("win")):
|
||||
copy_file(src_dir + "/icudt" + icu_ver + ".dll", dst_dir + "/icudt" + icu_ver + ".dll")
|
||||
copy_file(src_dir + "/icuuc" + icu_ver + ".dll", dst_dir + "/icuuc" + icu_ver + ".dll")
|
||||
icu_ver_win = icu_ver
|
||||
if isXp:
|
||||
icu_ver_win = icu_ver_old
|
||||
src_dir += "/xp"
|
||||
copy_file(src_dir + "/icudt" + icu_ver_win + ".dll", dst_dir + "/icudt" + icu_ver_win + ".dll")
|
||||
copy_file(src_dir + "/icuuc" + icu_ver_win + ".dll", dst_dir + "/icuuc" + icu_ver_win + ".dll")
|
||||
|
||||
if (0 == platform.find("linux")):
|
||||
copy_file(src_dir + "/libicudata.so." + icu_ver, dst_dir + "/libicudata.so." + icu_ver)
|
||||
|
||||
@ -52,6 +52,7 @@ def make():
|
||||
base.cmd_in_dir(server_dir + "/DocService", "pkg", [".", "-t", pkg_target, "--options", "max_old_space_size=4096", "-o", "docservice"])
|
||||
base.cmd_in_dir(server_dir + "/FileConverter", "pkg", [".", "-t", pkg_target, "-o", "converter"])
|
||||
base.cmd_in_dir(server_dir + "/Metrics", "pkg", [".", "-t", pkg_target, "-o", "metrics"])
|
||||
base.cmd_in_dir(server_dir + "/AdminPanel/server", "pkg", [".", "-t", pkg_target, "-o", "adminpanel"])
|
||||
|
||||
example_dir = base.get_script_dir() + "/../../document-server-integration/web/documentserver-example/nodejs"
|
||||
base.delete_dir(example_dir + "/node_modules")
|
||||
|
||||
@ -56,10 +56,12 @@ def parse():
|
||||
if ("mac" == host_platform) and check_option("platform", "mac_arm64") and not base.is_os_arm():
|
||||
if not check_option("platform", "mac_64"):
|
||||
options["platform"] = "mac_64 " + options["platform"]
|
||||
|
||||
if ("windows" == host_platform) and check_option("platform", "win_arm64") and not base.is_os_arm():
|
||||
if not check_option("platform", "win_64"):
|
||||
options["platform"] = "win_64 " + options["platform"]
|
||||
|
||||
if (False):
|
||||
# use qemu on deploy for emulation
|
||||
if ("windows" == host_platform) and check_option("platform", "win_arm64") and not base.is_os_arm():
|
||||
if not check_option("platform", "win_64"):
|
||||
options["platform"] = "win_64 " + options["platform"]
|
||||
|
||||
if ("linux" == host_platform) and check_option("platform", "linux_arm64") and not base.is_os_arm():
|
||||
if not check_option("platform", "linux_64"):
|
||||
@ -81,6 +83,27 @@ def parse():
|
||||
|
||||
if ("windows" == host_platform) and ("2019" == option("vs-version")):
|
||||
extend_option("config", "vs2019")
|
||||
|
||||
# sysroot setup
|
||||
if "linux" != host_platform and "sysroot" in options:
|
||||
options["sysroot"] = ""
|
||||
|
||||
if "linux" == host_platform and "sysroot" in options:
|
||||
if options["sysroot"] == "0":
|
||||
options["sysroot"] = ""
|
||||
elif options["sysroot"] == "1":
|
||||
dst_dir = os.path.abspath(base.get_script_dir(__file__) + '/../tools/linux/sysroot')
|
||||
custom_sysroot = dst_dir + '/sysroot_ubuntu_1604'
|
||||
options["sysroot"] = custom_sysroot
|
||||
if not os.path.isdir(custom_sysroot):
|
||||
print("Sysroot is not found, downloading...")
|
||||
sysroot_url = 'https://github.com/ONLYOFFICE-data/build_tools_data/raw/refs/heads/master/sysroot/sysroot_ubuntu_1604.tar.xz'
|
||||
base.download(sysroot_url, dst_dir + '/sysroot_ubuntu_1604.tar.xz')
|
||||
os.mkdir(custom_sysroot)
|
||||
print("Unpacking...")
|
||||
base.cmd2('tar', ['-xf', dst_dir + '/sysroot_ubuntu_1604.tar.xz', '-C', dst_dir])
|
||||
if os.path.exists(dst_dir + '/sysroot_ubuntu_1604.tar.xz'):
|
||||
os.remove(dst_dir + '/sysroot_ubuntu_1604.tar.xz')
|
||||
|
||||
if is_cef_107():
|
||||
extend_option("config", "cef_version_107")
|
||||
@ -108,29 +131,8 @@ def parse():
|
||||
if not "sdkjs-plugin-server" in options:
|
||||
options["sdkjs-plugin-server"] = "default"
|
||||
|
||||
# custom-sysroot setup
|
||||
if "linux" != host_platform and "custom-sysroot" in options:
|
||||
options["custom-sysroot"] = ""
|
||||
|
||||
if "linux" == host_platform and "custom-sysroot" in options:
|
||||
if options["custom-sysroot"] == "0":
|
||||
options["custom-sysroot"] = ""
|
||||
elif options["custom-sysroot"] == "1":
|
||||
dst_dir = os.path.abspath(base.get_script_dir(__file__) + '/../tools/linux/sysroot')
|
||||
custom_sysroot = dst_dir + '/sysroot_ubuntu_1604'
|
||||
options["custom-sysroot"] = custom_sysroot
|
||||
if not os.path.isdir(custom_sysroot):
|
||||
print("Custom sysroot is not found, downloading...")
|
||||
sysroot_url = 'https://github.com/ONLYOFFICE-data/build_tools_data/raw/refs/heads/master/sysroot/sysroot_ubuntu_1604.tar.xz'
|
||||
base.download(sysroot_url, dst_dir + '/sysroot_ubuntu_1604.tar.xz')
|
||||
os.mkdir(custom_sysroot)
|
||||
print("Unpacking...")
|
||||
base.cmd2('tar', ['-xf', dst_dir + '/sysroot_ubuntu_1604.tar.xz', '-C', dst_dir])
|
||||
if os.path.exists(dst_dir + '/sysroot_ubuntu_1604.tar.xz'):
|
||||
os.remove(dst_dir + '/sysroot_ubuntu_1604.tar.xz')
|
||||
|
||||
if not "arm64-toolchain-bin" in options:
|
||||
if not "custom-sysroot" in options:
|
||||
if not "sysroot" in options:
|
||||
options["arm64-toolchain-bin"] = "/usr/bin"
|
||||
else:
|
||||
options["arm64-toolchain-bin"] = get_custom_sysroot_bin()
|
||||
@ -235,12 +237,12 @@ def is_mobile_platform():
|
||||
return False
|
||||
|
||||
def get_custom_sysroot_bin():
|
||||
return option("custom-sysroot") + "/usr/bin"
|
||||
return option("sysroot") + "/usr/bin"
|
||||
|
||||
# todo 32bit support?
|
||||
def get_custom_sysroot_lib():
|
||||
if base.is_os_64bit():
|
||||
return option("custom-sysroot") + "/usr/lib/x86_64-linux-gnu"
|
||||
return option("sysroot") + "/usr/lib/x86_64-linux-gnu"
|
||||
|
||||
def parse_defaults():
|
||||
defaults_path = base.get_script_dir() + "/../defaults"
|
||||
|
||||
@ -71,13 +71,6 @@ else:
|
||||
"arch" : "darwin-x86_64"
|
||||
}
|
||||
|
||||
def get_android_ndk_version():
|
||||
#return "26.2.11394342"
|
||||
return "21.1.6352462"
|
||||
|
||||
def get_android_ndk_version_major():
|
||||
return int(get_android_ndk_version().split(".")[0])
|
||||
|
||||
def get_options_dict_as_array(opts):
|
||||
value = []
|
||||
for key in opts:
|
||||
|
||||
@ -99,7 +99,7 @@ def make():
|
||||
correct_install_includes_win(base_dir, "win_arm64")
|
||||
|
||||
if config.check_option("platform", "linux_64") and not base.is_dir("../build/linux_64"):
|
||||
if config.option("custom-sysroot") == "":
|
||||
if config.option("sysroot") == "":
|
||||
addon_config = []
|
||||
addon_compile = []
|
||||
if "1" == config.option("use-clang"):
|
||||
|
||||
@ -9,11 +9,24 @@ import qmake
|
||||
|
||||
def make(src_dir, modules, build_platform="android", qmake_addon=""):
|
||||
old_cur = os.getcwd()
|
||||
old_env = dict(os.environ)
|
||||
b2_addon = ""
|
||||
|
||||
print("boost-headers...")
|
||||
base.cmd("./bootstrap.sh", ["--with-libraries=system"])
|
||||
base.cmd("./b2", ["--prefix=./../build/" + build_platform, "headers", "install"])
|
||||
|
||||
|
||||
# for b2 checks
|
||||
if config.option("sysroot") != "":
|
||||
base.set_sysroot_env()
|
||||
b2_addon = "cflags=\"--sysroot=" + config.option("sysroot") + "\""
|
||||
b2_addon = "cxxflags=\"--sysroot=" + config.option("sysroot") + "\""
|
||||
b2_addon = "linkflags=\"--sysroot=" + config.option("sysroot") + "\""
|
||||
|
||||
base.cmd("./bootstrap.sh", ["--with-libraries=system"])
|
||||
base.cmd("./b2", ["--prefix=./../build/" + build_platform, "headers", "install", b2_addon])
|
||||
|
||||
if config.option("sysroot") != "":
|
||||
base.restore_sysroot_env()
|
||||
|
||||
for module in modules:
|
||||
print("boost-module: " + module + " ...")
|
||||
module_dir = src_dir + "/libs/" + module
|
||||
@ -40,6 +53,8 @@ def make(src_dir, modules, build_platform="android", qmake_addon=""):
|
||||
base.save_as_script(module_dir + "/" + module + ".pro", pro_file_content)
|
||||
os.chdir(module_dir)
|
||||
qmake.make_all_platforms(module_dir + "/" + module + ".pro", qmake_addon)
|
||||
|
||||
|
||||
os.environ.clear()
|
||||
os.environ.update(old_env)
|
||||
os.chdir(old_cur)
|
||||
return
|
||||
|
||||
@ -5,6 +5,13 @@ sys.path.append('../..')
|
||||
import config
|
||||
import base
|
||||
import os
|
||||
import glob
|
||||
|
||||
def clear_module():
|
||||
for child in glob.glob("./*"):
|
||||
if base.is_dir(child):
|
||||
base.delete_dir(child)
|
||||
return
|
||||
|
||||
def make():
|
||||
print("[fetch & build]: cef")
|
||||
@ -13,6 +20,7 @@ def make():
|
||||
old_cur = os.getcwd()
|
||||
os.chdir(base_dir)
|
||||
|
||||
base.check_module_version("2", clear_module)
|
||||
platforms = ["win_64", "win_32", "win_64_xp", "win_32_xp", "linux_64", "linux_32", "mac_64", "mac_arm64", "win_arm64"]
|
||||
|
||||
for platform in platforms:
|
||||
|
||||
@ -23,6 +23,29 @@ ANDROID_CMAKE_TOOLCHAIN_FILE = base.get_env("ANDROID_NDK_ROOT") + "/build/cmake/
|
||||
# linux arm64 cmake toolchain
|
||||
LINUX_ARM64_CMAKE_TOOLCHAIN_FILE = base.get_script_dir() + "/../tools/linux/arm/cross_arm64/linux-arm64.toolchain.cmake"
|
||||
|
||||
LINUX_CUSTOM_SYSROOT_TOOLCHAIN_FILE = base.get_script_dir() + "/../tools/linux/sysroot/custom-sysroot.toolchain.cmake"
|
||||
|
||||
OLD_ENV = dict()
|
||||
|
||||
# get custom sysroot vars as str
|
||||
def setup_custom_sysroot_env() -> str:
|
||||
env_vars = []
|
||||
env_vars += ['LD_LIBRARY_PATH=\"' + config.get_custom_sysroot_lib() + "\""]
|
||||
env_vars += ['PATH=\"' + config.option("sysroot") + "/usr/bin:" + base.get_env("PATH") + "\""]
|
||||
env_vars += ['CC=\"' + config.get_custom_sysroot_bin() + "/gcc\""]
|
||||
env_vars += ['CXX=\"' + config.get_custom_sysroot_bin() + "/g++\""]
|
||||
env_vars += ['AR=\"' + config.get_custom_sysroot_bin() + "/ar\""]
|
||||
env_vars += ['RABLIB=\"' + config.get_custom_sysroot_bin() + "/ranlib\""]
|
||||
env_vars += ['CFLAGS=\"' + "--sysroot=" + config.option("sysroot") + "\""]
|
||||
env_vars += ['CXXFLAGS=\"' + "--sysroot=" + config.option("sysroot") + "\""]
|
||||
env_vars += ['LDFLAGS=\"' + "--sysroot=" + config.option("sysroot") + "\""]
|
||||
|
||||
env_str = ""
|
||||
for env_var in env_vars:
|
||||
env_str += env_var + " "
|
||||
|
||||
return env_str
|
||||
|
||||
def get_vs_version():
|
||||
vs_version = "14 2015"
|
||||
if config.option("vs-version") == "2019":
|
||||
@ -69,6 +92,8 @@ def build_with_cmake(platform, cmake_args, build_type):
|
||||
cmake_args_ext += ["-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0", "-DCMAKE_OSX_ARCHITECTURES=arm64"]
|
||||
elif platform == "linux_arm64":
|
||||
cmake_args += ["-DCMAKE_TOOLCHAIN_FILE=" + LINUX_ARM64_CMAKE_TOOLCHAIN_FILE]
|
||||
elif config.option("sysroot") != "":
|
||||
cmake_args += ["-DCMAKE_TOOLCHAIN_FILE=" + LINUX_CUSTOM_SYSROOT_TOOLCHAIN_FILE] # force use custom CXXFLAGS with Release/Debug build
|
||||
# IOS
|
||||
elif "ios" in platform:
|
||||
cmake_args_ext = [
|
||||
@ -101,11 +126,15 @@ def build_with_cmake(platform, cmake_args, build_type):
|
||||
elif platform == "android_x86_64":
|
||||
cmake_args_ext += get_cmake_args_android("x86_64", "21")
|
||||
|
||||
# env setup for custom sysroot
|
||||
env_str = setup_custom_sysroot_env() if config.option("sysroot") != "" else ""
|
||||
|
||||
# run cmake
|
||||
base.cmd("cmake", cmake_args + cmake_args_ext)
|
||||
base.cmd(env_str + "cmake", cmake_args + cmake_args_ext)
|
||||
|
||||
# build
|
||||
if "Unix Makefiles" in cmake_args_ext:
|
||||
base.cmd("make", ["-j4"])
|
||||
base.cmd(env_str + "make", ["-j4"])
|
||||
else:
|
||||
base.cmd("cmake", ["--build", ".", "--config", build_type])
|
||||
return
|
||||
@ -185,6 +214,7 @@ def make_x265(base_dir, build_type):
|
||||
"-DENABLE_CLI=OFF", # do not build standalone CLI app
|
||||
"-DENABLE_SHARED=OFF", # do not build shared libs
|
||||
"-DENABLE_ASSEMBLY=OFF", # disable assembly optimizations
|
||||
"-DENABLE_LIBNUMA=OFF", # disable libnuma usage (affects Linux only)
|
||||
]
|
||||
|
||||
# lib build function
|
||||
|
||||
@ -9,11 +9,11 @@ import os
|
||||
import glob
|
||||
import icu_android
|
||||
|
||||
def fetch_icu(major, minor):
|
||||
def fetch_icu(major, minor, target_dir="icu"):
|
||||
if (base.is_dir("./icu2")):
|
||||
base.delete_dir_with_access_error("icu2")
|
||||
base.delete_dir_with_access_error("icu2")
|
||||
base.cmd("git", ["clone", "--depth", "1", "--branch", "release-" + major + "-" + minor, "https://github.com/unicode-org/icu.git", "./icu2"])
|
||||
base.copy_dir("./icu2/icu4c", "./icu")
|
||||
base.copy_dir("./icu2/icu4c", target_dir)
|
||||
base.delete_dir_with_access_error("icu2")
|
||||
return
|
||||
|
||||
@ -44,9 +44,17 @@ def make():
|
||||
|
||||
icu_major = "74"
|
||||
icu_minor = "2"
|
||||
|
||||
|
||||
if not base.is_dir("icu"):
|
||||
fetch_icu(icu_major, icu_minor)
|
||||
fetch_icu(icu_major, icu_minor)
|
||||
|
||||
# old version for win_xp
|
||||
icu_major_old = "58"
|
||||
icu_minor_old = "3"
|
||||
|
||||
if config.check_option("platform", "win_64_xp") or config.check_option("platform", "win_32_xp"):
|
||||
if not base.is_dir("icu58"):
|
||||
fetch_icu(icu_major_old, icu_minor_old, "icu58")
|
||||
|
||||
if ("windows" == base.host_platform()):
|
||||
platformToolset = "v140"
|
||||
@ -57,52 +65,61 @@ def make():
|
||||
need_platforms.append("win_64")
|
||||
if (-1 != config.option("platform").find("win_32")):
|
||||
need_platforms.append("win_32")
|
||||
if (-1 != config.option("platform").find("win_arm64")):
|
||||
if (-1 != config.option("platform").find("win_arm64")):
|
||||
need_platforms.append("win_64") # for exe files
|
||||
need_platforms.append("win_arm64")
|
||||
|
||||
|
||||
def build_icu_win(source_dir, out_dir, icu_major):
|
||||
if base.is_dir(out_dir):
|
||||
return
|
||||
|
||||
compile_bat = []
|
||||
compile_bat.append("setlocal")
|
||||
|
||||
args = {
|
||||
"win_32" : {
|
||||
"msbuild_platfrom" : "Win32",
|
||||
"vcvarsall_arch" : "x86",
|
||||
"out_bin_dir" : source_dir + "/bin/",
|
||||
"out_lib_dir" : source_dir + "/lib/"
|
||||
},
|
||||
"win_64" : {
|
||||
"msbuild_platfrom" : "X64",
|
||||
"vcvarsall_arch" : "x64",
|
||||
"out_bin_dir" : source_dir + "/bin64/",
|
||||
"out_lib_dir" : source_dir + "/lib64/"
|
||||
},
|
||||
"win_arm64" : {
|
||||
"msbuild_platfrom" : "ARM64",
|
||||
"vcvarsall_arch" : "x64_arm64",
|
||||
"out_bin_dir" : source_dir + "/binARM64/",
|
||||
"out_lib_dir" : source_dir + "/libARM64/"
|
||||
}
|
||||
}
|
||||
|
||||
platform_args = args[platform]
|
||||
|
||||
compile_bat.append("call \"" + config.option("vs-path") + "/vcvarsall.bat\" " + platform_args['vcvarsall_arch'])
|
||||
compile_bat.append("call MSBuild.exe " + source_dir + "/source/allinone/allinone.sln /p:Configuration=Release /p:PlatformToolset=" + platformToolset + " /p:Platform=" + platform_args['msbuild_platfrom'])
|
||||
compile_bat.append("endlocal")
|
||||
base.run_as_bat(compile_bat)
|
||||
|
||||
base.create_dir(out_dir)
|
||||
base.copy_file(platform_args['out_bin_dir'] + "icudt" + icu_major + ".dll", out_dir)
|
||||
base.copy_file(platform_args['out_bin_dir'] + "icuuc" + icu_major + ".dll", out_dir)
|
||||
base.copy_file(platform_args['out_lib_dir'] + "icudt.lib", out_dir)
|
||||
base.copy_file(platform_args['out_lib_dir'] + "icuuc.lib", out_dir)
|
||||
|
||||
for platform in need_platforms:
|
||||
if not config.check_option("platform", platform) and not config.check_option("platform", platform + "_xp"):
|
||||
continue
|
||||
|
||||
if not base.is_dir(platform + "/build"):
|
||||
base.create_dir(platform)
|
||||
compile_bat = []
|
||||
compile_bat.append("setlocal")
|
||||
|
||||
args = {
|
||||
"win_32" : {
|
||||
"msbuild_platfrom" : "Win32",
|
||||
"vcvarsall_arch" : "x86",
|
||||
"out_bin_dir" : "icu/bin/",
|
||||
"out_lib_dir" : "icu/lib/"
|
||||
},
|
||||
"win_64" : {
|
||||
"msbuild_platfrom" : "X64",
|
||||
"vcvarsall_arch" : "x64",
|
||||
"out_bin_dir" : "icu/bin64/",
|
||||
"out_lib_dir" : "icu/lib64/"
|
||||
},
|
||||
"win_arm64" : {
|
||||
"msbuild_platfrom" : "ARM64",
|
||||
"vcvarsall_arch" : "x64_arm64",
|
||||
"out_bin_dir" : "icu/binARM64/",
|
||||
"out_lib_dir" : "icu/libARM64/"
|
||||
}
|
||||
}
|
||||
|
||||
platform_args = args[platform]
|
||||
|
||||
compile_bat.append("call \"" + config.option("vs-path") + "/vcvarsall.bat\" " + platform_args['vcvarsall_arch'])
|
||||
compile_bat.append("call MSBuild.exe icu/source/allinone/allinone.sln /p:Configuration=Release /p:PlatformToolset=" + platformToolset + " /p:Platform=" + platform_args['msbuild_platfrom'])
|
||||
compile_bat.append("endlocal")
|
||||
base.run_as_bat(compile_bat)
|
||||
|
||||
base.create_dir(platform + "/build")
|
||||
base.copy_file(platform_args['out_bin_dir'] + "icudt" + icu_major + ".dll", platform + "/build/")
|
||||
base.copy_file(platform_args['out_bin_dir'] + "icuuc" + icu_major + ".dll", platform + "/build/")
|
||||
base.copy_file(platform_args['out_lib_dir'] + "icudt.lib", platform + "/build/")
|
||||
base.copy_file(platform_args['out_lib_dir'] + "icuuc.lib", platform + "/build/")
|
||||
|
||||
if not (config.check_option("platform", "win_64_xp") or config.check_option("platform", "win_32_xp")):
|
||||
build_icu_win("icu", platform + "/build", icu_major)
|
||||
else:
|
||||
# xp
|
||||
build_icu_win("icu58", platform + "/build/xp", icu_major_old)
|
||||
|
||||
os.chdir(old_cur)
|
||||
return
|
||||
|
||||
@ -112,38 +129,35 @@ def make():
|
||||
os.chdir("icu/cross_build")
|
||||
command_configure = "./../source/runConfigureICU"
|
||||
command_compile_addon = "-static-libstdc++ -static-libgcc"
|
||||
ld_library_path_copy = ''
|
||||
if "1" == config.option("use-clang"):
|
||||
command_configure = "CXXFLAGS=-stdlib=libc++ " + command_configure
|
||||
command_compile_addon = "-stdlib=libc++"
|
||||
if "" == config.option("custom-sysroot"):
|
||||
if "" == config.option("sysroot"):
|
||||
base.cmd(command_configure, ["Linux", "--prefix=" + base_dir + "/icu/cross_build_install"])
|
||||
base.replaceInFile("./../source/icudefs.mk.in", "LDFLAGS = @LDFLAGS@ $(RPATHLDFLAGS)", "LDFLAGS = @LDFLAGS@ $(RPATHLDFLAGS) " + command_compile_addon)
|
||||
else:
|
||||
if 'LD_LIBRARY_PATH' in os.environ:
|
||||
ld_library_path_copy = os.environ['LD_LIBRARY_PATH']
|
||||
os.environ['LD_LIBRARY_PATH'] = config.get_custom_sysroot_lib()
|
||||
base.set_sysroot_env()
|
||||
base.cmd_exe("./../source/configure", ["--prefix=" + base_dir + "/icu/cross_build_install",
|
||||
"CC=" + config.get_custom_sysroot_bin() + "/gcc", "CXX=" + config.get_custom_sysroot_bin() + "/g++",
|
||||
"AR=" + config.get_custom_sysroot_bin() + "/ar", "RANLIB=" + config.get_custom_sysroot_bin() + "/ranlib",
|
||||
"CFLAGS=--sysroot=" + config.option("custom-sysroot"),
|
||||
"CXXFLAGS=--sysroot=" + config.option("custom-sysroot") + " " + command_compile_addon,
|
||||
"LDFLAGS=--sysroot=" + config.option("custom-sysroot")])
|
||||
"CFLAGS=--sysroot=" + config.option("sysroot"),
|
||||
"CXXFLAGS=--sysroot=" + config.option("sysroot") + " " + command_compile_addon,
|
||||
"LDFLAGS=--sysroot=" + config.option("sysroot")])
|
||||
|
||||
if "" == config.option("custom-sysroot"):
|
||||
if "" == config.option("sysroot"):
|
||||
base.cmd("make", ["-j4"])
|
||||
base.cmd("make", ["install"], True)
|
||||
else:
|
||||
base.cmd_exe("make", ["-j4"])
|
||||
base.cmd_exe("make", ["install"], True)
|
||||
os.environ['LD_LIBRARY_PATH'] = ld_library_path_copy
|
||||
base.restore_sysroot_env()
|
||||
|
||||
base.create_dir(base_dir + "/linux_64")
|
||||
base.create_dir(base_dir + "/linux_64/build")
|
||||
base.copy_file(base_dir + "/icu/cross_build_install/lib/libicudata.so." + icu_major + "." + icu_minor, base_dir + "/linux_64/build/libicudata.so." + icu_major)
|
||||
base.copy_file(base_dir + "/icu/cross_build_install/lib/libicuuc.so." + icu_major + "." + icu_minor, base_dir + "/linux_64/build/libicuuc.so." + icu_major)
|
||||
base.copy_dir(base_dir + "/icu/cross_build_install/include", base_dir + "/linux_64/build/include")
|
||||
|
||||
|
||||
if config.check_option("platform", "linux_arm64") and not base.is_dir(base_dir + "/linux_arm64") and not base.is_os_arm():
|
||||
base.create_dir(base_dir + "/icu/linux_arm64")
|
||||
os.chdir(base_dir + "/icu/linux_arm64")
|
||||
@ -173,6 +187,6 @@ def make():
|
||||
if (-1 != config.option("platform").find("ios")):
|
||||
if not base.is_dir("build"):
|
||||
base.bash("./icu_ios")
|
||||
|
||||
|
||||
os.chdir(old_cur)
|
||||
return
|
||||
|
||||
@ -87,9 +87,7 @@ def make():
|
||||
# -------------------------------------------------------------------------------------------------------
|
||||
return
|
||||
|
||||
if (-1 != config.option("platform").find("linux")) and not base.is_dir("../build/linux_64"):
|
||||
ld_library_path_copy = ''
|
||||
|
||||
if (-1 != config.option("platform").find("linux")) and not base.is_dir("../build/linux_64"):
|
||||
base.cmd("./config", ["enable-md2", "no-shared", "no-asm", "--prefix=" + old_cur_dir + "/build/linux_64", "--openssldir=" + old_cur_dir + "/build/linux_64"])
|
||||
if "1" == config.option("use-clang"):
|
||||
base.replaceInFile("./Makefile", "CC=$(CROSS_COMPILE)gcc", "CC=$(CROSS_COMPILE)clang")
|
||||
@ -97,27 +95,24 @@ def make():
|
||||
base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3", "CFLAGS=-Wall -O3 -fvisibility=hidden")
|
||||
base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3", "CXXFLAGS=-Wall -O3 -fvisibility=hidden -stdlib=libc++")
|
||||
base.replaceInFile("./Makefile", "LDFLAGS=", "LDFLAGS=-stdlib=libc++")
|
||||
elif config.option("custom-sysroot") == "":
|
||||
elif config.option("sysroot") == "":
|
||||
base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3", "CFLAGS=-Wall -O3 -fvisibility=hidden")
|
||||
base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3", "CXXFLAGS=-Wall -O3 -fvisibility=hidden")
|
||||
else:
|
||||
if 'LD_LIBRARY_PATH' in os.environ:
|
||||
ld_library_path_copy = os.environ['LD_LIBRARY_PATH']
|
||||
os.environ['LD_LIBRARY_PATH'] = config.get_custom_sysroot_lib()
|
||||
base.replaceInFile("./Makefile", "CROSS_COMPILE=", "CROSS_COMPILE=" + config.get_custom_sysroot_bin() + "/")
|
||||
base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3", "CFLAGS=-Wall -O3 -fvisibility=hidden --sysroot=" + config.option("custom-sysroot"),)
|
||||
base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3", "CXXFLAGS=-Wall -O3 -fvisibility=hidden --sysroot=" + config.option("custom-sysroot"))
|
||||
base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3", "CFLAGS=-Wall -O3 -fvisibility=hidden --sysroot=" + config.option("sysroot"))
|
||||
base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3", "CXXFLAGS=-Wall -O3 -fvisibility=hidden --sysroot=" + config.option("sysroot"))
|
||||
|
||||
if config.option("custom-sysroot") == "":
|
||||
if config.option("sysroot") == "":
|
||||
base.cmd("make", [])
|
||||
base.cmd("make", ["install"])
|
||||
base.cmd("make", ["clean"], True)
|
||||
else:
|
||||
base.set_sysroot_env()
|
||||
base.cmd_exe("make", [])
|
||||
base.cmd_exe("make", ["install"])
|
||||
base.cmd_exe("make", ["clean"], True)
|
||||
os.environ['LD_LIBRARY_PATH'] = ld_library_path_copy
|
||||
# TODO: support x86
|
||||
base.restore_sysroot_env()
|
||||
|
||||
if (-1 != config.option("platform").find("linux_arm64")) and not base.is_dir("../build/linux_arm64"):
|
||||
if ("x86_64" != platform.machine()):
|
||||
|
||||
@ -8,6 +8,11 @@ import os
|
||||
import subprocess
|
||||
import glob
|
||||
|
||||
def clean():
|
||||
if base.is_dir("socket.io-client-cpp"):
|
||||
base.delete_dir_with_access_error("socket.io-client-cpp")
|
||||
return
|
||||
|
||||
def correct_namespace(dir):
|
||||
folder = dir
|
||||
if ("/" != folder[-1:]):
|
||||
@ -25,6 +30,12 @@ def correct_namespace(dir):
|
||||
|
||||
def make():
|
||||
base_dir = base.get_script_dir() + "/../../core/Common/3dParty/socketio"
|
||||
|
||||
old_cur = os.getcwd()
|
||||
os.chdir(base_dir)
|
||||
base.common_check_version("socketio", "1", clean)
|
||||
os.chdir(old_cur)
|
||||
|
||||
if not base.is_dir(base_dir + "/socket.io-client-cpp"):
|
||||
base.cmd_in_dir(base_dir, "git", ["clone", "https://github.com/socketio/socket.io-client-cpp.git"])
|
||||
base.cmd_in_dir(base_dir + "/socket.io-client-cpp", "git", ["checkout", "da779141a7379cc30c870d48295033bc16a23c66"])
|
||||
@ -37,6 +48,7 @@ def make():
|
||||
base.apply_patch(base_dir + "/socket.io-client-cpp/src/internal/sio_client_impl.cpp", base_dir + "/patches/sio_client_impl_fail.patch")
|
||||
base.apply_patch(base_dir + "/socket.io-client-cpp/src/internal/sio_client_impl.cpp", base_dir + "/patches/sio_client_impl_open.patch")
|
||||
base.apply_patch(base_dir + "/socket.io-client-cpp/src/internal/sio_client_impl.cpp", base_dir + "/patches/sio_client_impl_close_timeout.patch")
|
||||
base.apply_patch(base_dir + "/socket.io-client-cpp/src/internal/sio_client_impl.cpp", base_dir + "/patches/sio_client_impl_encode.patch")
|
||||
|
||||
# no tls realization (remove if socket.io fix this)
|
||||
dst_dir = base_dir + "/socket.io-client-cpp/src_no_tls"
|
||||
|
||||
@ -47,7 +47,7 @@ def is_use_clang():
|
||||
gcc_version = base.get_gcc_version()
|
||||
|
||||
is_clang = "false"
|
||||
if config.option("custom-sysroot") == "" and (gcc_version >= 6000 or "1" == config.option("use-clang")):
|
||||
if config.option("sysroot") == "" and (gcc_version >= 6000 or "1" == config.option("use-clang")):
|
||||
is_clang = "true"
|
||||
|
||||
print("gcc version: " + str(gcc_version) + ", use clang:" + is_clang)
|
||||
@ -235,8 +235,7 @@ def make_xp():
|
||||
base.replaceInFile("depot_tools/cipd.ps1", "windows-386", "windows-amd64")
|
||||
|
||||
# old variant
|
||||
#path_to_python2 = "/depot_tools/win_tools-2_7_13_chromium7_bin/python/bin"
|
||||
path_to_python2 = "/depot_tools/bootstrap-2@3_8_10_chromium_23_bin/python/bin"
|
||||
path_to_python2 = "/depot_tools/bootstrap-2@3_11_8_chromium_35_bin/python/bin"
|
||||
os.environ["PATH"] = os.pathsep.join([base_dir + "/depot_tools",
|
||||
base_dir + path_to_python2,
|
||||
config.option("vs-path") + "/../Common7/IDE",
|
||||
|
||||
@ -7,6 +7,25 @@ import base
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
def clean():
|
||||
if base.is_dir("depot_tools"):
|
||||
base.delete_dir_with_access_error("depot_tools")
|
||||
base.delete_dir("depot_tools")
|
||||
if base.is_dir("v8"):
|
||||
base.delete_dir_with_access_error("v8")
|
||||
base.delete_dir("v8")
|
||||
if base.is_exist("./.gclient"):
|
||||
base.delete_file("./.gclient")
|
||||
if base.is_exist("./.gclient_entries"):
|
||||
base.delete_file("./.gclient_entries")
|
||||
if base.is_exist("./.gclient_previous_sync_commits"):
|
||||
base.delete_file("./.gclient_previous_sync_commits")
|
||||
if base.is_exist("./.gcs_entries"):
|
||||
base.delete_file("./.gcs_entries")
|
||||
if base.is_exist("./.cipd"):
|
||||
base.delete_dir("./.cipd")
|
||||
return
|
||||
|
||||
def change_bootstrap():
|
||||
base.move_file("./depot_tools/bootstrap/manifest.txt", "./depot_tools/bootstrap/manifest.txt.bak")
|
||||
content = "# changed by build_tools\n\n"
|
||||
@ -16,7 +35,11 @@ def change_bootstrap():
|
||||
content += "infra/3pp/tools/cpython/${platform} version:2@2.7.18.chromium.39\n\n"
|
||||
|
||||
content += "@Subdir python3\n"
|
||||
content += "infra/3pp/tools/cpython3/${platform} version:2@3.8.10.chromium.23\n\n"
|
||||
|
||||
if ("windows" == base.host_platform()):
|
||||
content += "infra/3pp/tools/cpython3/${platform} version:2@3.11.8.chromium.35\n\n"
|
||||
else:
|
||||
content += "infra/3pp/tools/cpython3/${platform} version:2@3.8.10.chromium.23\n\n"
|
||||
|
||||
content += "@Subdir git\n"
|
||||
content += "infra/3pp/tools/git/${platform} version:2@2.41.0.chromium.11\n"
|
||||
@ -60,7 +83,7 @@ def make_args(args, platform, is_64=True, is_debug=False):
|
||||
|
||||
linux_clang = False
|
||||
if platform == "linux":
|
||||
if "" != config.option("custom-sysroot"):
|
||||
if "" != config.option("sysroot"):
|
||||
args_copy.append("use_sysroot=false")
|
||||
args_copy.append("is_clang=false")
|
||||
else:
|
||||
@ -74,6 +97,9 @@ def make_args(args, platform, is_64=True, is_debug=False):
|
||||
if (platform == "windows"):
|
||||
args_copy.append("is_clang=false")
|
||||
|
||||
if (platform == "mac") and base.is_os_arm():
|
||||
args_copy.append("host_cpu=\\\"x64\\\"")
|
||||
|
||||
if linux_clang != True:
|
||||
args_copy.append("use_custom_libcxx=false")
|
||||
|
||||
@ -142,6 +168,8 @@ def make():
|
||||
if not base.is_dir(base_dir):
|
||||
base.create_dir(base_dir)
|
||||
|
||||
base.common_check_version("v8", "1", clean)
|
||||
|
||||
if ("mac" == base.host_platform()):
|
||||
base.cmd("git", ["config", "--global", "http.postBuffer", "157286400"], True)
|
||||
|
||||
@ -206,23 +234,24 @@ def make():
|
||||
"treat_warnings_as_errors=false"]
|
||||
|
||||
if config.check_option("platform", "linux_64"):
|
||||
ld_library_path_copy = ''
|
||||
if config.option("custom-sysroot") != "":
|
||||
if 'LD_LIBRARY_PATH' in os.environ:
|
||||
ld_library_path_copy = os.environ['LD_LIBRARY_PATH']
|
||||
os.environ['LD_LIBRARY_PATH'] = config.get_custom_sysroot_lib()
|
||||
|
||||
if config.option("sysroot") != "":
|
||||
src_replace = "config(\"compiler\") {\n asmflags = []\n cflags = []\n cflags_c = []\n cflags_cc = []\n cflags_objc = []\n cflags_objcc = []\n ldflags = []"
|
||||
dst_replace = "config(\"compiler\") {\n asmflags = []\n cflags = [\"--sysroot=" + config.option("custom-sysroot") + "\"]" + "\n cflags_c = []\n cflags_cc = [\"--sysroot=" + config.option("custom-sysroot") + "\"]" + "\n cflags_objc = []\n cflags_objcc = []\n ldflags = [\"--sysroot=" + config.option("custom-sysroot") + "\"]"
|
||||
dst_replace = "config(\"compiler\") {\n asmflags = []\n cflags = [\"--sysroot=" + config.option("sysroot") + "\"]" + "\n cflags_c = []\n cflags_cc = [\"--sysroot=" + config.option("sysroot") + "\"]" + "\n cflags_objc = []\n cflags_objcc = []\n ldflags = [\"--sysroot=" + config.option("sysroot") + "\"]"
|
||||
base.replaceInFile("build/config/compiler/BUILD.gn", src_replace, dst_replace)
|
||||
|
||||
src_replace = "gcc_toolchain(\"x64\") {\n cc = \"gcc\"\n cxx = \"g++\""
|
||||
dst_replace = "gcc_toolchain(\"x64\") {\n cc = \""+ config.get_custom_sysroot_bin() + "/gcc\"\n cxx = \"" + config.get_custom_sysroot_bin() + "/g++\""
|
||||
base.replaceInFile("build/toolchain/linux/BUILD.gn", src_replace, dst_replace)
|
||||
|
||||
old_env = dict(os.environ)
|
||||
base.set_sysroot_env()
|
||||
base.cmd2("gn", ["gen", "out.gn/linux_64", make_args(gn_args, "linux")], False)
|
||||
base.cmd2("ninja", ["-C", "out.gn/linux_64"], False)
|
||||
base.restore_sysroot_env()
|
||||
else:
|
||||
base.cmd2("gn", ["gen", "out.gn/linux_64", make_args(gn_args, "linux")], False)
|
||||
base.cmd2("ninja", ["-C", "out.gn/linux_64"], False)
|
||||
|
||||
base.cmd2("gn", ["gen", "out.gn/linux_64", make_args(gn_args, "linux")], False)
|
||||
base.cmd2("ninja", ["-C", "out.gn/linux_64"], False)
|
||||
os.environ['LD_LIBRARY_PATH'] = ld_library_path_copy
|
||||
|
||||
if config.check_option("platform", "linux_32"):
|
||||
base.cmd2("gn", ["gen", "out.gn/linux_32", make_args(gn_args, "linux", False)])
|
||||
|
||||
@ -22,4 +22,6 @@ def make():
|
||||
deploy_mobile.make()
|
||||
if config.check_option("module", "osign"):
|
||||
deploy_osign.make()
|
||||
if base.is_use_create_artifacts_qemu_any_platform():
|
||||
base.create_artifacts_qemu_any_platform()
|
||||
return
|
||||
|
||||
@ -58,7 +58,7 @@ def make():
|
||||
# base.generate_check_linux_system(git_dir + "/build_tools", root_dir)
|
||||
|
||||
# icu
|
||||
base.deploy_icu(core_dir, root_dir, platform)
|
||||
base.deploy_icu(core_dir, root_dir, native_platform)
|
||||
|
||||
# doctrenderer
|
||||
if isWindowsXP:
|
||||
@ -108,13 +108,13 @@ def make():
|
||||
|
||||
# correct ios frameworks
|
||||
if ("ios" == platform):
|
||||
base.generate_plist(root_dir, "ios")
|
||||
base.for_each_framework(root_dir, "ios", callbacks=[base.generate_plist, base.generate_xcprivacy])
|
||||
|
||||
if (0 == platform.find("linux")):
|
||||
base.linux_correct_rpath_docbuilder(root_dir)
|
||||
|
||||
if (0 == platform.find("mac")):
|
||||
base.generate_plist(root_dir, "mac", max_depth=1)
|
||||
base.for_each_framework(root_dir, "mac", callbacks=[base.generate_plist], max_depth=1)
|
||||
base.mac_correct_rpath_x2t(root_dir)
|
||||
base.mac_correct_rpath_docbuilder(root_dir)
|
||||
|
||||
@ -127,11 +127,6 @@ def make():
|
||||
base.copy_dir(git_dir + "/core-fonts/openoffice", root_dir + "/fonts/openoffice")
|
||||
base.copy_file(git_dir + "/core-fonts/ASC.ttf", root_dir + "/fonts/ASC.ttf")
|
||||
|
||||
if native_platform == "win_arm64":
|
||||
base.delete_dir(root_dir + "/sdkjs")
|
||||
base.copy_dir(root_dir_win64 + "/sdkjs", root_dir + "/sdkjs")
|
||||
return
|
||||
|
||||
# delete unnecessary builder files
|
||||
def delete_files(files):
|
||||
for file in files:
|
||||
|
||||
@ -69,17 +69,13 @@ def make():
|
||||
|
||||
# correct mac frameworks
|
||||
if (0 == platform.find("mac")):
|
||||
base.generate_plist(archive_dir, "mac", max_depth=1)
|
||||
base.for_each_framework(archive_dir, "mac", callbacks=[base.generate_plist], max_depth=1)
|
||||
base.mac_correct_rpath_x2t(archive_dir)
|
||||
|
||||
# js cache
|
||||
base.generate_doctrenderer_config(archive_dir + "/DoctRenderer.config", "./", "builder", "", "./dictionaries")
|
||||
base.create_x2t_js_cache(archive_dir, "core", platform)
|
||||
base.delete_file(archive_dir + "/DoctRenderer.config")
|
||||
|
||||
# just copy sdkjs to avoid executing arm64 x2t on non-arm system
|
||||
if native_platform == "win_arm64" :
|
||||
base.delete_dir(archive_dir + "/sdkjs")
|
||||
base.copy_dir(archive_dir + "/../../../win_64/" + branding + "/core/sdkjs", archive_dir + "/sdkjs")
|
||||
|
||||
# dictionaries
|
||||
base.copy_dictionaries(git_dir + "/dictionaries", archive_dir + "/dictionaries", True, False)
|
||||
|
||||
@ -82,7 +82,7 @@ def make():
|
||||
# base.generate_check_linux_system(git_dir + "/build_tools", root_dir + "/converter")
|
||||
|
||||
# icu
|
||||
base.deploy_icu(core_dir, root_dir + "/converter", platform)
|
||||
base.deploy_icu(core_dir, root_dir + "/converter", native_platform)
|
||||
|
||||
# doctrenderer
|
||||
if isWindowsXP:
|
||||
@ -117,6 +117,20 @@ def make():
|
||||
else:
|
||||
base.copy_files(core_dir + "/Common/3dParty/cef/" + native_platform + "/" + build_dir_name + "/*", root_dir)
|
||||
|
||||
if (0 == platform.find("mac")):
|
||||
dir_base_old = os.getcwd()
|
||||
os.chdir(root_dir + "/Chromium Embedded Framework.framework")
|
||||
base.create_dir("Versions")
|
||||
base.create_dir("Versions/A")
|
||||
base.move_file("Chromium Embedded Framework", "Versions/A/Chromium Embedded Framework")
|
||||
base.move_dir("Resources", "Versions/A/Resources")
|
||||
base.move_dir("Libraries", "Versions/A/Libraries")
|
||||
base.cmd("ln", ["-s", "Versions/A/Chromium Embedded Framework", "Chromium Embedded Framework"])
|
||||
base.cmd("ln", ["-s", "Versions/A/Resources", "Resources"])
|
||||
base.cmd("ln", ["-s", "Versions/A/Libraries", "Libraries"])
|
||||
base.cmd("ln", ["-s", "A", "Versions/Current"])
|
||||
os.chdir(dir_base_old);
|
||||
|
||||
isUseQt = True
|
||||
if (0 == platform.find("mac")) or (0 == platform.find("ios")):
|
||||
isUseQt = False
|
||||
@ -230,6 +244,19 @@ def make():
|
||||
#base.copy_dir(git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/encrypt/ui/engine/database/{9AB4BBA8-A7E5-48D5-B683-ECE76A020BB1}", root_dir + "/editors/sdkjs-plugins/{9AB4BBA8-A7E5-48D5-B683-ECE76A020BB1}")
|
||||
base.copy_sdkjs_plugin(git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins", root_dir + "/editors/sdkjs-plugins", "sendto", True)
|
||||
|
||||
isUseAgent = True
|
||||
if isWindowsXP:
|
||||
isUseAgent = False
|
||||
|
||||
if (isUseAgent):
|
||||
agent_plugin_dir = git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/ai-agent"
|
||||
if (False):
|
||||
base.cmd_in_dir(agent_plugin_dir, "npm", ["install"], True)
|
||||
base.cmd_in_dir(agent_plugin_dir, "npm", ["run", "build"], True)
|
||||
base.copy_dir(agent_plugin_dir + "/{9DC93CDB-B576-4F0C-B55E-FCC9C48DD777}", root_dir + "/editors/sdkjs-plugins/{9DC93CDB-B576-4F0C-B55E-FCC9C48DD777}")
|
||||
else:
|
||||
base.copy_dir(agent_plugin_dir + "/deploy/{9DC93CDB-B576-4F0C-B55E-FCC9C48DD777}", root_dir + "/editors/sdkjs-plugins/{9DC93CDB-B576-4F0C-B55E-FCC9C48DD777}")
|
||||
|
||||
base.copy_file(base_dir + "/js/" + branding + "/desktop/index.html", root_dir + "/index.html")
|
||||
base.create_dir(root_dir + "/editors/webext")
|
||||
base.copy_file(base_dir + "/js/" + branding + "/desktop/noconnect.html", root_dir + "/editors/webext/noconnect.html")
|
||||
@ -240,11 +267,6 @@ def make():
|
||||
else:
|
||||
base.copy_dir(git_dir + "/desktop-apps/common/loginpage/providers", root_dir + "/providers")
|
||||
|
||||
# license
|
||||
if (0 == platform.find("mac")):
|
||||
base.create_dir(root_dir + "/license")
|
||||
base.copy_file(git_dir + "/desktop-apps/common/package/license/opensource/EULA.html", root_dir + "/license/EULA.html")
|
||||
|
||||
isUseJSC = False
|
||||
if (0 == platform.find("mac")):
|
||||
doctrenderer_lib = "libdoctrenderer.dylib"
|
||||
@ -266,12 +288,12 @@ def make():
|
||||
|
||||
is_host_not_arm = False
|
||||
host_platform = ""
|
||||
if (platform == "mac_arm64" or platform == "win_arm64") and not base.is_os_arm():
|
||||
|
||||
# TODO: fix this on mac_arm64 (qemu)
|
||||
# on windows we are using qemu
|
||||
if (platform == "mac_arm64") and not base.is_os_arm():
|
||||
is_host_not_arm = True
|
||||
if platform == "mac_arm64":
|
||||
host_platform = "mac_64"
|
||||
elif platform == "win_arm64":
|
||||
host_platform = "win_64"
|
||||
host_platform = "mac_64"
|
||||
|
||||
# all themes generate ----
|
||||
base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir + "/converter", "allfontsgen")
|
||||
@ -279,29 +301,31 @@ def make():
|
||||
|
||||
if (0 == platform.find("mac")):
|
||||
# gen plists with max_depth 2 because frameworks are only located in root_dir and converter subdirectory
|
||||
base.generate_plist(root_dir, "mac", max_depth=2)
|
||||
base.for_each_framework(root_dir, "mac", callbacks=[base.generate_plist], max_depth=2)
|
||||
base.mac_correct_rpath_desktop(root_dir)
|
||||
|
||||
if is_host_not_arm:
|
||||
sdkjs_dir = root_dir + "/editors/sdkjs"
|
||||
end_find_platform = sdkjs_dir.rfind("/" + platform + "/")
|
||||
sdkjs_dir_64 = sdkjs_dir[0:end_find_platform] + "/" + host_platform + "/" + sdkjs_dir[end_find_platform+11:]
|
||||
str1 = "/" + platform + "/"
|
||||
str2 = "/" + host_platform + "/"
|
||||
sdkjs_dir_host = sdkjs_dir.replace(str1, str2)
|
||||
base.delete_dir(sdkjs_dir)
|
||||
base.copy_dir(sdkjs_dir_64, sdkjs_dir)
|
||||
base.copy_dir(sdkjs_dir_host, sdkjs_dir)
|
||||
else:
|
||||
themes_params = []
|
||||
if ("" != config.option("themesparams")):
|
||||
themes_params = ["--params=\"" + config.option("themesparams") + "\""]
|
||||
base.cmd_exe(root_dir + "/converter/allfontsgen", ["--use-system=\"1\"", "--input=\"" + root_dir + "/fonts\"", "--input=\"" + git_dir + "/core-fonts\"", "--allfonts=\"" + root_dir + "/converter/AllFonts.js\"", "--selection=\"" + root_dir + "/converter/font_selection.bin\""])
|
||||
base.cmd_exe(root_dir + "/converter/allthemesgen", ["--converter-dir=\"" + root_dir + "/converter\"", "--src=\"" + root_dir + "/editors/sdkjs/slide/themes\"", "--allfonts=\"AllFonts.js\"", "--output=\"" + root_dir + "/editors/sdkjs/common/Images\""] + themes_params)
|
||||
base.cmd_exe(root_dir + "/converter/allfontsgen", ["--use-system=\"1\"", "--input=\"" + root_dir + "/fonts\"", "--input=\"" + git_dir + "/core-fonts\"", "--allfonts=\"" + root_dir + "/converter/AllFonts.js\"", "--selection=\"" + root_dir + "/converter/font_selection.bin\""], True)
|
||||
base.cmd_exe(root_dir + "/converter/allthemesgen", ["--converter-dir=\"" + root_dir + "/converter\"", "--src=\"" + root_dir + "/editors/sdkjs/slide/themes\"", "--allfonts=\"AllFonts.js\"", "--output=\"" + root_dir + "/editors/sdkjs/common/Images\""] + themes_params, True)
|
||||
base.delete_file(root_dir + "/converter/AllFonts.js")
|
||||
base.delete_file(root_dir + "/converter/font_selection.bin")
|
||||
base.delete_file(root_dir + "/converter/fonts.log")
|
||||
|
||||
base.delete_exe(root_dir + "/converter/allfontsgen")
|
||||
base.delete_exe(root_dir + "/converter/allthemesgen")
|
||||
if not base.is_use_create_artifacts_qemu(platform):
|
||||
base.delete_exe(root_dir + "/converter/allfontsgen")
|
||||
base.delete_exe(root_dir + "/converter/allthemesgen")
|
||||
|
||||
if not isUseJSC:
|
||||
base.delete_file(root_dir + "/editors/sdkjs/slide/sdk-all.cache")
|
||||
|
||||
return
|
||||
return
|
||||
@ -80,7 +80,7 @@ def make():
|
||||
|
||||
# correct ios frameworks
|
||||
if ("ios" == platform):
|
||||
base.generate_plist(root_dir, "ios")
|
||||
base.for_each_framework(root_dir, "ios", callbacks=[base.generate_plist, base.generate_xcprivacy])
|
||||
deploy_fonts(git_dir, root_dir)
|
||||
base.copy_dictionaries(git_dir + "/dictionaries", root_dir + "/dictionaries", True, False)
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@ def make():
|
||||
|
||||
# correct ios frameworks
|
||||
if ("ios" == platform):
|
||||
base.generate_plist(root_dir, "ios")
|
||||
base.for_each_framework(root_dir, "ios", callbacks=[base.generate_plist, base.generate_xcprivacy])
|
||||
|
||||
for native_platform in platforms:
|
||||
if native_platform == "android":
|
||||
|
||||
@ -58,6 +58,14 @@ def make():
|
||||
base.create_dir(build_server_dir + '/Metrics/node_modules/modern-syslog/build/Release')
|
||||
base.copy_file(server_dir + "/Metrics/node_modules/modern-syslog/build/Release/core.node", build_server_dir + "/Metrics/node_modules/modern-syslog/build/Release/core.node")
|
||||
|
||||
# AdminPanel server part
|
||||
base.create_dir(build_server_dir + '/AdminPanel/server')
|
||||
base.copy_exe(server_dir + "/AdminPanel/server", build_server_dir + '/AdminPanel/server', "adminpanel")
|
||||
|
||||
# AdminPanel client part
|
||||
base.create_dir(build_server_dir + '/AdminPanel/client/build')
|
||||
base.copy_dir(server_dir + '/AdminPanel/client/build', build_server_dir + '/AdminPanel/client/build')
|
||||
|
||||
qt_dir = base.qt_setup(native_platform)
|
||||
platform = native_platform
|
||||
|
||||
@ -104,7 +112,7 @@ def make():
|
||||
|
||||
# correct mac frameworks
|
||||
if (0 == platform.find("mac")):
|
||||
base.generate_plist(converter_dir, "mac", max_depth=1)
|
||||
base.for_each_framework(converter_dir, "mac", callbacks=[base.generate_plist], max_depth=1)
|
||||
|
||||
# js
|
||||
js_dir = root_dir
|
||||
|
||||
@ -3,14 +3,14 @@
|
||||
platformPrefixes = {
|
||||
"windows_x64": "win_64",
|
||||
"windows_x86": "win_32",
|
||||
"windows_arm64": "win_arm64",
|
||||
"windows_x64_xp": "win_64_xp",
|
||||
"windows_x86_xp": "win_32_xp",
|
||||
"darwin_x86_64": "mac_64",
|
||||
"darwin_arm64": "mac_arm64",
|
||||
"darwin_x86_64": "mac_64",
|
||||
"darwin_x86_64_v8": "mac_64",
|
||||
"linux_x86_64": "linux_64",
|
||||
"linux_aarch64": "linux_arm64",
|
||||
"linux_x86_64_cef": "linux_64",
|
||||
}
|
||||
|
||||
out_dir = "build_tools/out"
|
||||
|
||||
@ -44,7 +44,8 @@ def make_windows():
|
||||
"windows_x64": "x64",
|
||||
"windows_x64_xp": "x64",
|
||||
"windows_x86": "x86",
|
||||
"windows_x86_xp": "x86"
|
||||
"windows_x86_xp": "x86",
|
||||
"windows_arm64": "arm64"
|
||||
}[common.platform]
|
||||
xp = common.platform.endswith("_xp")
|
||||
|
||||
@ -61,16 +62,16 @@ def make_windows():
|
||||
if not xp:
|
||||
make_prepare()
|
||||
make_zip()
|
||||
make_inno()
|
||||
if branding.onlyoffice:
|
||||
make_inno()
|
||||
make_inno("standalone")
|
||||
make_inno("update")
|
||||
make_advinst()
|
||||
make_advinst()
|
||||
|
||||
make_prepare("commercial")
|
||||
make_zip("commercial")
|
||||
make_inno("commercial")
|
||||
make_advinst("commercial")
|
||||
make_prepare("commercial")
|
||||
make_zip("commercial")
|
||||
make_inno("commercial")
|
||||
make_advinst("commercial")
|
||||
else:
|
||||
make_prepare("xp")
|
||||
make_zip("xp")
|
||||
@ -86,7 +87,8 @@ def make_prepare(edition = "opensource"):
|
||||
args = [
|
||||
"-Version", package_version,
|
||||
"-Arch", arch,
|
||||
"-Target", edition
|
||||
"-Target", edition,
|
||||
"-CompanyName", branding.company_name
|
||||
]
|
||||
if common.sign:
|
||||
args += ["-Sign"]
|
||||
@ -104,7 +106,8 @@ def make_zip(edition = "opensource"):
|
||||
args = [
|
||||
"-Version", package_version,
|
||||
"-Arch", arch,
|
||||
"-Target", edition
|
||||
"-Target", edition,
|
||||
"-CompanyName", branding.company_name
|
||||
]
|
||||
# if common.sign:
|
||||
# args += ["-Sign"]
|
||||
|
||||
@ -100,12 +100,15 @@ def make(platform, project, qmake_config_addon="", is_no_errors=False):
|
||||
if "1" == config.option("use-clang"):
|
||||
build_params.append("-spec")
|
||||
build_params.append("linux-clang-libc++")
|
||||
if "" != config.option("custom-sysroot"):
|
||||
os.environ['LD_LIBRARY_PATH'] = config.get_custom_sysroot_lib()
|
||||
os.environ['QMAKE_CUSTOM_SYSROOT'] = config.option("custom-sysroot")
|
||||
base.cmd_exe(qmake_app, build_params) # calls cmd_exe to pass os.env
|
||||
else:
|
||||
base.cmd(qmake_app, build_params)
|
||||
|
||||
if "" != config.option("sysroot"):
|
||||
os.environ['QMAKE_CUSTOM_SYSROOT'] = config.option("sysroot")
|
||||
os.environ['PKG_CONFIG_PATH'] = config.get_custom_sysroot_lib() + "/pkgconfig"
|
||||
|
||||
base.cmd_exe(qmake_app, build_params)
|
||||
|
||||
if "" != config.option("sysroot"):
|
||||
base.set_sysroot_env()
|
||||
|
||||
base.correct_makefile_after_qmake(platform, makefile)
|
||||
if ("1" == config.option("clean")):
|
||||
|
||||
@ -5,7 +5,8 @@ import argparse
|
||||
import re
|
||||
import platform
|
||||
|
||||
root = '../../../../..'
|
||||
script_path = os.path.abspath(__file__)
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(script_path), '../../../../..'))
|
||||
|
||||
# Configuration files
|
||||
configs = [
|
||||
@ -23,6 +24,8 @@ editors_maps = {
|
||||
}
|
||||
|
||||
def generate(output_dir, md=False):
|
||||
os.chdir(os.path.dirname(script_path))
|
||||
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
|
||||
@ -13,6 +13,10 @@ editors = {
|
||||
"forms": "form-api"
|
||||
}
|
||||
|
||||
|
||||
script_path = os.path.abspath(__file__)
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(script_path), '../../../../..'))
|
||||
|
||||
missing_examples = []
|
||||
used_enumerations = set()
|
||||
|
||||
@ -550,6 +554,8 @@ def process_doclets(data, output_dir, editor_name):
|
||||
missing_examples.append(os.path.relpath(enum_file_path, output_dir))
|
||||
|
||||
def generate(output_dir):
|
||||
os.chdir(os.path.dirname(script_path))
|
||||
|
||||
print('Generating Markdown documentation...')
|
||||
|
||||
generate_docs_json.generate(output_dir + 'tmp_json', md=True)
|
||||
@ -576,7 +582,7 @@ if __name__ == "__main__":
|
||||
type=str,
|
||||
help="Destination directory for the generated documentation",
|
||||
nargs='?', # Indicates the argument is optional
|
||||
default="../../../../../api.onlyoffice.com/site/docs/office-api/usage-api/" # Default value
|
||||
default=f"{root}/api.onlyoffice.com/site/docs/office-api/usage-api/" # Default value
|
||||
)
|
||||
args = parser.parse_args()
|
||||
generate(args.destination)
|
||||
|
||||
@ -21,7 +21,9 @@ editors_names = {
|
||||
"forms": "Forms"
|
||||
}
|
||||
|
||||
root = '../../../../..'
|
||||
script_path = os.path.abspath(__file__)
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(script_path), '../../../../..'))
|
||||
|
||||
missing_examples = []
|
||||
|
||||
def load_json(file_path):
|
||||
@ -199,6 +201,8 @@ def process_doclets(doclets, output_entries, editor_name, model):
|
||||
output_entries.append(create_entry(system_message, comment, assistant_message, model))
|
||||
|
||||
def generate(output_dir, model):
|
||||
os.chdir(os.path.dirname(script_path))
|
||||
|
||||
print('Generating documentation JSONL dataset...')
|
||||
|
||||
shutil.rmtree(output_dir, ignore_errors=True)
|
||||
@ -228,7 +232,7 @@ if __name__ == "__main__":
|
||||
type=str,
|
||||
help="Destination directory for the generated documentation",
|
||||
nargs='?', # Indicates the argument is optional
|
||||
default="../../../../../office-js-api/dataset" # Default value
|
||||
default=f"{root}/office-js-api/dataset" # Default value
|
||||
)
|
||||
parser.add_argument(
|
||||
"model",
|
||||
|
||||
@ -13,9 +13,12 @@ configs = [
|
||||
"./config/events/forms.json"
|
||||
]
|
||||
|
||||
root = '../../../../..'
|
||||
script_path = os.path.abspath(__file__)
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(script_path), '../../../../..'))
|
||||
|
||||
def generate(output_dir, md=False):
|
||||
os.chdir(os.path.dirname(script_path))
|
||||
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
|
||||
@ -14,6 +14,9 @@ editors = {
|
||||
"forms": "form-api"
|
||||
}
|
||||
|
||||
script_path = os.path.abspath(__file__)
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(script_path), '../../../../..'))
|
||||
|
||||
missing_examples = []
|
||||
used_enumerations = set()
|
||||
|
||||
@ -372,6 +375,8 @@ def process_events(data, editor_dir):
|
||||
write_markdown_file(os.path.join(events_dir, "Events.md"), generate_events_summary(events))
|
||||
|
||||
def generate_events(output_dir):
|
||||
os.chdir(os.path.dirname(script_path))
|
||||
|
||||
if output_dir.endswith('/'):
|
||||
output_dir = output_dir[:-1]
|
||||
tmp = os.path.join(output_dir, 'tmp_json')
|
||||
@ -391,7 +396,7 @@ if __name__ == "__main__":
|
||||
parser.add_argument(
|
||||
"destination",
|
||||
nargs="?",
|
||||
default="../../../../../api.onlyoffice.com/site/docs/plugin-and-macros/interacting-with-editors/",
|
||||
default=f"{root}/api.onlyoffice.com/site/docs/plugin-and-macros/interacting-with-editors/",
|
||||
help="Output directory"
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
@ -13,9 +13,12 @@ configs = [
|
||||
"./config/methods/forms.json"
|
||||
]
|
||||
|
||||
root = '../../../../..'
|
||||
script_path = os.path.abspath(__file__)
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(script_path), '../../../../..'))
|
||||
|
||||
def generate(output_dir, md=False):
|
||||
os.chdir(os.path.dirname(script_path))
|
||||
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
|
||||
@ -13,6 +13,9 @@ editors = {
|
||||
"forms": "form-api"
|
||||
}
|
||||
|
||||
script_path = os.path.abspath(__file__)
|
||||
root = os.path.abspath(os.path.join(os.path.dirname(script_path), '../../../../..'))
|
||||
|
||||
missing_examples = []
|
||||
used_enumerations = set()
|
||||
|
||||
@ -614,6 +617,8 @@ def process_doclets(data, output_dir, editor_name):
|
||||
missing_examples.append(os.path.relpath(enum_file_path, output_dir))
|
||||
|
||||
def generate(output_dir):
|
||||
os.chdir(os.path.dirname(script_path))
|
||||
|
||||
print('Generating Markdown documentation...')
|
||||
|
||||
if output_dir[-1] == '/':
|
||||
@ -637,7 +642,7 @@ if __name__ == "__main__":
|
||||
type=str,
|
||||
help="Destination directory for the generated documentation",
|
||||
nargs='?', # Indicates the argument is optional
|
||||
default="../../../../../api.onlyoffice.com/site/docs/plugin-and-macros/interacting-with-editors/" # Default value
|
||||
default=f"{root}/api.onlyoffice.com/site/docs/plugin-and-macros/interacting-with-editors/" # Default value
|
||||
)
|
||||
args = parser.parse_args()
|
||||
generate(args.destination)
|
||||
|
||||
@ -71,7 +71,10 @@ if not base.is_file("./node_js_setup_14.x"):
|
||||
|
||||
if not base.is_dir("./qt_build"):
|
||||
print("install qt...")
|
||||
install_qt_prebuild()
|
||||
if base.get_env("DO_NOT_USE_PREBUILD_QT") == "1":
|
||||
install_qt()
|
||||
else:
|
||||
install_qt_prebuild()
|
||||
|
||||
branch = get_branch_name("../..")
|
||||
|
||||
|
||||
@ -43,7 +43,8 @@ def install_deps():
|
||||
"libncurses6",
|
||||
"curl",
|
||||
"libxkbcommon-dev",
|
||||
"libxkbcommon-x11-dev"]
|
||||
"libxkbcommon-x11-dev",
|
||||
"libnotify-dev"]
|
||||
|
||||
for package in packages:
|
||||
base.cmd("sudo", ["apt-get", "install", "-y", package], True)
|
||||
|
||||
@ -29,7 +29,37 @@ def download_sysroot():
|
||||
|
||||
bash_chroot('apt update -y', tmp_sysroot_ubuntu_dir)
|
||||
bash_chroot('apt upgrade -y', tmp_sysroot_ubuntu_dir)
|
||||
bash_chroot('apt install -y build-essential curl libpthread-stubs0-dev zlib1g-dev', tmp_sysroot_ubuntu_dir)
|
||||
|
||||
apt_libs = ["build-essential"]
|
||||
apt_libs += ["libpthread-stubs0-dev"]
|
||||
apt_libs += ["zlib1g-dev"]
|
||||
apt_libs += ["curl"]
|
||||
apt_libs += ["libc6-dev"]
|
||||
apt_libs += ["glib-2.0-dev"]
|
||||
apt_libs += ["libglu1-mesa-dev"]
|
||||
apt_libs += ["libgtk-3-dev"]
|
||||
apt_libs += ["libpulse-dev"]
|
||||
apt_libs += ["libasound2-dev"]
|
||||
apt_libs += ["libatspi2.0-dev"]
|
||||
apt_libs += ["libcups2-dev"]
|
||||
apt_libs += ["libdbus-1-dev"]
|
||||
apt_libs += ["libicu-dev"]
|
||||
apt_libs += ["libgstreamer1.0-dev"]
|
||||
apt_libs += ["libgstreamer-plugins-base1.0-dev"]
|
||||
apt_libs += ["libx11-xcb-dev"]
|
||||
apt_libs += ["libxcb*"]
|
||||
apt_libs += ["libxi-dev"]
|
||||
apt_libs += ["libxrender-dev"]
|
||||
apt_libs += ["libxss-dev"]
|
||||
apt_libs += ["libxkbcommon-dev"]
|
||||
apt_libs += ["libxkbcommon-x11-dev"]
|
||||
apt_libs += ["libnotify-dev"]
|
||||
apt_libs += ["gtk+-3.0-dev"]
|
||||
|
||||
apt_libs_str = ""
|
||||
for apt_lib in apt_libs:
|
||||
apt_libs_str += apt_lib + " "
|
||||
bash_chroot('apt install -y ' + apt_libs_str, tmp_sysroot_ubuntu_dir)
|
||||
|
||||
# # downloading arm toolchain
|
||||
arm_toolchain_url = 'https://releases.linaro.org/components/toolchain/binaries/5.4-2017.05/aarch64-linux-gnu/'
|
||||
|
||||
4
tools/linux/sysroot/custom-sysroot.toolchain.cmake
Normal file
4
tools/linux/sysroot/custom-sysroot.toolchain.cmake
Normal file
@ -0,0 +1,4 @@
|
||||
set(CMAKE_C_FLAGS $ENV{CFLAGS})
|
||||
set(CMAKE_CXX_FLAGS $ENV{CXXFLAGS})
|
||||
set(CMAKE_C_LINKER_FLAGS $ENV{LDFLAGS})
|
||||
set(CMAKE_CXX_LINKER_FLAGS $ENV{LDFLAGS})
|
||||
@ -4,46 +4,42 @@ import uuid
|
||||
|
||||
# change symbolic link to relative paths
|
||||
def fix_symlinks(top_dir='./sysroot_ubuntu_1604'):
|
||||
top_dir += '/usr/lib/x86_64-linux-gnu'
|
||||
for root, dirs, files in os.walk(top_dir):
|
||||
for name in files:
|
||||
path = os.path.join(root, name)
|
||||
if not os.path.islink(path):
|
||||
continue
|
||||
|
||||
try:
|
||||
target = os.readlink(path)
|
||||
except OSError as e:
|
||||
print(f"Error reading link '{path}': {e}", file=sys.stderr)
|
||||
continue
|
||||
|
||||
if not target.startswith('/lib/'):
|
||||
|
||||
if not target.startswith('/'):
|
||||
continue
|
||||
|
||||
new_target = "../../../lib" + target[4:]
|
||||
|
||||
new_target = top_dir + target
|
||||
new_target_rel = os.path.relpath(new_target, os.path.dirname(path))
|
||||
temp_name = f".tmp.{uuid.uuid4().hex}"
|
||||
temp_path = os.path.join(root, temp_name)
|
||||
|
||||
try:
|
||||
os.symlink(new_target, temp_path)
|
||||
os.symlink(new_target_rel, temp_path)
|
||||
except OSError as e:
|
||||
print(f"Failed to create temporary symlink for '{path}': {e}", file=sys.stderr)
|
||||
continue
|
||||
|
||||
try:
|
||||
os.replace(temp_path, path)
|
||||
print(f"Updated: {path} -> {new_target}")
|
||||
print(f"Updated: {path} -> {new_target_rel}")
|
||||
except OSError as e:
|
||||
print(f"Failed to replace symlink '{path}': {e}", file=sys.stderr)
|
||||
try:
|
||||
os.unlink(temp_path)
|
||||
except OSError:
|
||||
pass
|
||||
break # no subfolders
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) > 1:
|
||||
directory = sys.argv[1]
|
||||
else:
|
||||
directory = './sysroot_ubuntu_1604'
|
||||
fix_symlinks(directory)
|
||||
fix_symlinks(directory)
|
||||
|
||||
5
tools/win/qemu/.gitignore
vendored
Normal file
5
tools/win/qemu/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
*
|
||||
!.gitignore
|
||||
!README.md
|
||||
!automate.bat
|
||||
!start.bat
|
||||
102
tools/win/qemu/README.md
Normal file
102
tools/win/qemu/README.md
Normal file
@ -0,0 +1,102 @@
|
||||
# **Setting up QEMU Windows 11**
|
||||
|
||||
## **0. Preparing for Installation**
|
||||
|
||||
1) Install [**MSYS2**](https://www.msys2.org/). The following commands assume that the installation directory remains the default.
|
||||
2) ```pacman -S mingw-w64-x86_64-qemu```
|
||||
3) Verify installation: ```C:\msys64\mingw64\bin\qemu-system-aarch64.exe --version```
|
||||
4) Create an image: ```C:\msys64\mingw64\bin\qemu-img create win11-arm64.img 40G```
|
||||
5) Download the Windows 11 ARM64 ISO (a VPN may be required): https://www.microsoft.com/en-us/software-download/windows11arm64
|
||||
6) Download the drivers: https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md
|
||||
7) Download the bootloader: https://packages.debian.org/sid/qemu-efi-aarch64
|
||||
|
||||
```ar x qemu-efi-aarch64*.deb```
|
||||
|
||||
```tar xvf data.tar.xz```
|
||||
|
||||
```mv ./usr/share/qemu-efi-aarch64/QEMU_EFI.fd .```
|
||||
|
||||
8) Run _start.bat_
|
||||
|
||||
**Note:** If you plan to install the VM elsewhere, copy _start.bat_ to that same location.
|
||||
|
||||
---
|
||||
|
||||
## **1. Installing and Configuring QEMU**
|
||||
|
||||
1. To install QEMU and run a Windows ARM64 virtual machine, follow this tutorial:
|
||||
[Windows ARM64 VM using qemu-system](https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28914909194/windows-arm64+VM+using+qemu-system).
|
||||
During installation, there may be no “Back” button (as was my case); if so, you need to set the required registry variables beforehand.
|
||||
It is strongly recommended to select the **Pro** version — functionality is not guaranteed on the Home edition.
|
||||
2. Installing connection drivers is essential; details are provided at the end of the tutorial. Other drivers are optional.
|
||||
|
||||
---
|
||||
|
||||
## **2. Creating a Shared Folder**
|
||||
|
||||
To share files between the host Windows and the guest OS, create a folder, for example **D:\shared**.
|
||||
The _shared_ folder can also be a working repository folder; in that case, replace _shared_ with your folder name later on.
|
||||
|
||||
1. Right-click the folder → **Properties**.
|
||||
2. Go to **Sharing** → **Share**.
|
||||
3. In the list, select **Everyone** (or a specific user), click **Add**, grant **Read/Write** permissions, and then click **Share**.
|
||||
|
||||
You may also need to allow guest connections both on the host and in the guest OS. Instructions are available [here](https://learn.microsoft.com/en-us/windows-server/storage/file-server/enable-insecure-guest-logons-smb2-and-smb3?tabs=powershell).
|
||||
Now the folder is accessible from the guest machine.
|
||||
|
||||
---
|
||||
|
||||
## **3. Verification**
|
||||
|
||||
After starting the virtual machine, open **Command Prompt** or **PowerShell** **without** administrator rights and run:
|
||||
|
||||
```
|
||||
net use Z: \\10.0.2.2\shared /user:guest ""
|
||||
dir Z:
|
||||
```
|
||||
|
||||
These commands should complete without errors and display a list of directories and files in the shared folder.
|
||||
|
||||
---
|
||||
|
||||
## **4. Installing VC_redist**
|
||||
|
||||
Additional packages are required for running software. You can download them inside the guest machine, but that may take a long time, so it’s recommended to download them on the host, place them in the shared folder, and install them from there.
|
||||
|
||||
Download from:
|
||||
https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170 (choose ARM64 version).
|
||||
|
||||
To install from the command line after connecting the shared folder:
|
||||
|
||||
```
|
||||
.\Z:\VC_redist.arm64.exe
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **5. Setting Up Automatic Script Execution via Task Scheduler**
|
||||
|
||||
Before creating a task, remove the password from your user account so that the system logs in automatically when the VM starts.
|
||||
|
||||
### **Creating the Task**
|
||||
|
||||
1. Open **Task Scheduler** → **Create Task...**
|
||||
2. **General** tab:
|
||||
- Name: Automate
|
||||
- Run only when user is logged on
|
||||
- Run with highest privileges
|
||||
3. **Triggers** tab:
|
||||
- New → **At log on**
|
||||
4. **Actions** tab:
|
||||
- Action: **Start a program**
|
||||
- Program/script:
|
||||
`\\10.0.2.2\shared\build_tools\tools\win\qemu\automate.bat`
|
||||
|
||||
---
|
||||
|
||||
## **6. Config Setup**
|
||||
|
||||
Finally, specify the path to the folder containing the VM and the _start.bat_ script in the configuration under
|
||||
```qemu-win-arm64-dir```.
|
||||
|
||||
You can do this either through `configure.py` or by editing the configuration file directly.
|
||||
52
tools/win/qemu/automate.bat
Normal file
52
tools/win/qemu/automate.bat
Normal file
@ -0,0 +1,52 @@
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
set "script_dir=%~dp0"
|
||||
set "config_file=%script_dir%..\..\..\config"
|
||||
set "git_dir=%script_dir%..\..\..\..\
|
||||
|
||||
set "module_list="
|
||||
set "branding_value="
|
||||
set "themesparams="
|
||||
|
||||
for /f "delims=" %%a in ('type "%config_file%"') do (
|
||||
set "line=%%a"
|
||||
if "!line:~0,7!"=="module=" (
|
||||
set "module_list=!line:~7!"
|
||||
set "module_list=!module_list:"=!"
|
||||
)
|
||||
if "!line:~0,14!"=="branding-name=" (
|
||||
set "branding_value=!line:~14!"
|
||||
set "branding_value=!branding_value:"=!"
|
||||
)
|
||||
if "!line:~0,13!"=="themesparams=" (
|
||||
set "themesparams=!line:~13!"
|
||||
set "themesparams=!branding_value:"=!"
|
||||
)
|
||||
)
|
||||
|
||||
if "!branding_value!"=="" (
|
||||
set "branding_value=onlyoffice"
|
||||
)
|
||||
|
||||
set "base_out_dir=%script_dir%..\..\..\out\win_arm64\%branding_value%"
|
||||
|
||||
for %%m in (!module_list!) do (
|
||||
if "%%m"=="desktop" (
|
||||
call %base_out_dir%\DesktopEditors\converter\x2t.exe -create-js-snapshots
|
||||
call %base_out_dir%\DesktopEditors\converter\allfontsgen.exe --use-system="1" --input="%base_out_dir%\DesktopEditors\fonts" --input="%git_dir%\core-fonts" --allfonts="%base_out_dir%\DesktopEditors\converter\AllFonts.js" --selection="%base_out_dir%\DesktopEditors\converter\font_selection.bin"
|
||||
call %base_out_dir%\DesktopEditors\converter\allthemesgen.exe --converter-dir="%base_out_dir%\DesktopEditors\converter" --src="%base_out_dir%\DesktopEditors\editors\sdkjs\slide\themes" --allfonts="AllFonts.js" --output="%base_out_dir%\DesktopEditors\editors\sdkjs\common\Images" --params="%themesparams%"
|
||||
del %base_out_dir%\DesktopEditors\converter\allfontsgen.exe
|
||||
del %base_out_dir%\DesktopEditors\converter\allthemesgen.exe
|
||||
|
||||
)
|
||||
if "%%m"=="server" (
|
||||
call %base_out_dir%\documentserver\server\FileConverter\bin\x2t -create-js-snapshots
|
||||
)
|
||||
if "%%m"=="builder" (
|
||||
call %base_out_dir%\DocumentBuilder\x2t -create-js-snapshots
|
||||
)
|
||||
if "%%m"=="core" (
|
||||
call %base_out_dir%\core\x2t -create-js-snapshots
|
||||
)
|
||||
)
|
||||
shutdown /s /f /t 10
|
||||
17
tools/win/qemu/start.bat
Normal file
17
tools/win/qemu/start.bat
Normal file
@ -0,0 +1,17 @@
|
||||
@echo off
|
||||
REM ========================================================
|
||||
REM INSTALL Windows ARM64 VM (QEMU on Windows x64)
|
||||
REM ========================================================
|
||||
|
||||
C:\msys64\mingw64\bin\qemu-system-aarch64 ^
|
||||
-M virt -m 8G -cpu max,pauth-impdef=on -smp 8 ^
|
||||
-bios ./QEMU_EFI.fd ^
|
||||
-accel tcg,thread=multi ^
|
||||
-device ramfb ^
|
||||
-device qemu-xhci -device usb-kbd -device usb-tablet ^
|
||||
-nic user,model=virtio-net-pci ^
|
||||
-device usb-storage,drive=install ^
|
||||
-drive if=none,id=install,format=raw,media=cdrom,file=./Win11_24H2_English_Arm64.iso ^
|
||||
-device usb-storage,drive=virtio-drivers ^
|
||||
-drive if=none,id=virtio-drivers,format=raw,media=cdrom,file=./virtio-win-0.1.271.iso ^
|
||||
-drive if=virtio,id=system,format=raw,file=./win11-arm64.img
|
||||
Reference in New Issue
Block a user