def check_npmPath(): if (host_platform != 'windows'): return None path = base.get_env('PATH') npmPath = os.environ['AppData'] + '\\npm' if (path.find(npmPath) == -1): base.set_env('PATH', npmPath + os.pathsep + path)
def build_js_develop(root_dir): #_run_npm_cli(root_dir + "/sdkjs/build") external_folder = config.option("--external-folder") if (external_folder != ""): external_folder = "/" + external_folder _run_npm(root_dir + external_folder + "/sdkjs/build") _run_grunt(root_dir + external_folder + "/sdkjs/build", get_build_param(False) + base.sdkjs_addons_param()) _run_grunt(root_dir + external_folder + "/sdkjs/build", ["develop"] + base.sdkjs_addons_param()) _run_npm(root_dir + external_folder + "/web-apps/build") _run_npm(root_dir + external_folder + "/web-apps/build/sprites") _run_grunt(root_dir + external_folder + "/web-apps/build/sprites", []) old_cur = os.getcwd() old_product_version = base.get_env("PRODUCT_VERSION") base.set_env("PRODUCT_VERSION", old_product_version + "d") os.chdir(root_dir + external_folder + "/web-apps/vendor/framework7-react") base.cmd("npm", ["install"]) base.cmd("npm", ["run", "deploy-word"]) base.cmd("npm", ["run", "deploy-cell"]) base.cmd("npm", ["run", "deploy-slide"]) base.set_env("PRODUCT_VERSION", old_product_version) os.chdir(old_cur) return
def test_modify(self): """Test for modifying existing entity with ModelForm.""" os.environ['REQUEST_METHOD'] = 'POST' local.request = Request(get_env()) # first create a new entity f = TestModelForm() params = {"number": "12", "data_field": "data string", "is_active": "False", "string_list_field": "list"} self.assertEqual(f.validate(params), True) f.save() self.assertEqual(TestModel.all().count(), 1) entity = TestModel.all().get() self.assertEqual(entity.number, 12) # modify with TestModelForm f = TestModelForm(instance=entity) params = {"number": "13", "data_field": "modified data", "is_active": "True", "string_list_field": "line 1\nline 2"} self.assertEqual(f.validate(params), True) f.save() # check values self.assertEqual(TestModel.all().count(), 1) entity = TestModel.all().get() self.assertEqual(entity.number, 13) self.assertEqual(entity.data_field, "modified data") self.assertEqual(entity.is_active, True) self.assertEqual(entity.string_list_field, ["line 1", "line 2"])
def build_arch(arch, api_version): print("icu build: " + arch + " ----------------------------------------") if base.is_dir(current_dir + "/icu/" + arch): base.delete_dir(current_dir + "/icu/" + arch) base.create_dir(current_dir + "/icu/" + arch) os.chdir(current_dir + "/icu/" + arch) base.cmd( base.get_env("ANDROID_NDK_ROOT") + "/build/tools/make-standalone-toolchain.sh", [ "--platform=android-" + api_version, "--install-dir=" + current_dir + "/toolchain/" + arch, "--toolchain=" + platforms[arch]["arch"], "--force" ]) base.set_env("PATH", current_dir + "/toolchain/" + arch + "/bin:" + current_path) command_args = "--prefix=" + current_dir + "/build_tmp/" + arch + " --host=!!!MASK!!! --with-cross-build=" + current_dir + "/icu/cross_build CFLAGS=-Os CXXFLAGS=--std=c++11 CC=!!!MASK!!!-clang CXX=!!!MASK!!!-clang++ AR=!!!MASK!!!-ar RANLIB=!!!MASK!!!-ranlib" if not icu_is_shared: command_args += " --enable-static --enable-shared=no --with-data-packaging=archive CFLAGS=-fPIC CXXFLAGS=-fPIC" command_args = command_args.replace("!!!MASK!!!", platforms[arch]["bin"]) base.cmd("../source/configure", command_args.split()) base.cmd("make", ["-j4"]) base.cmd("make", ["install"]) base.set_env("PATH", current_path) os.chdir(current_dir) return
def test_form(self): """Form validation test with ModelForm.""" os.environ['REQUEST_METHOD'] = 'POST' local.request = Request(get_env()) f = TestModelForm() params = {"number": "12"} # In your view, you can validate the form data with: # f.validate(request.form) # or with(If you have FileField): # f.validate(request.form, request.files) self.assertEqual(f.validate(params), False) f.reset() params = {"number": "12", "data_field": "data string longer than 20 characters", "is_active": "False", "string_list_field": "test"} self.assertEqual(f.validate(params), False) f.reset() params = {"number": "12", "data_field": "data string", "is_active": "False", "string_list_field": ""} self.assertEqual(f.validate(params), False) # create a new entity f.reset() params = {"number": "12", "data_field": "data string", "is_active": "False", "string_list_field": "list"} self.assertEqual(f.validate(params), True) f.save() self.assertEqual(TestModel.all().count(), 1)
def test_form(self): """Test for modifying existing entity with ModelForm.""" # first create a new entity f = TestModelForm() params = {"number": "12", "data_field": "data string", "is_active": "False", "string_list_field": "list"} self.assertEqual(f.validate(params), True) f.save() self.assertEqual(TestModel.all().count(), 1) entity = TestModel.all().get() self.assertEqual(entity.number, 12) # modify with TestModelForm f = TestModelForm(instance=entity) params = {"number": "13", "data_field": "modified data", "is_active": "True", "string_list_field": "line 1\nline 2"} self.assertEqual(f.validate(params), True) f.save() # check values self.assertEqual(TestModel.all().count(), 1) entity = TestModel.all().get() self.assertEqual(entity.number, 13) self.assertEqual(entity.data_field, "modified data") self.assertEqual(entity.is_active, True) self.assertEqual(entity.string_list_field, ["line 1", "line 2"]) """Form validation test with ModelForm.""" os.environ['REQUEST_METHOD'] = 'POST' local.request = Request(get_env()) f = TestModelForm() params = {"number": "12"} # In your view, you can validate the form data with: # f.validate(request.form) # or with(If you have FileField): # f.validate(request.form, request.files) self.assertEqual(f.validate(params), False) f.reset() params = {"number": "12", "data_field": "data string longer than 20 characters", "is_active": "False", "string_list_field": "test"} self.assertEqual(f.validate(params), False) f.reset() params = {"number": "12", "data_field": "data string", "is_active": "False", "string_list_field": ""} self.assertEqual(f.validate(params), False) # create a new entity f.reset() params = {"number": "12", "data_field": "data string", "is_active": "False", "string_list_field": "list"} self.assertEqual(f.validate(params), True) f.save() self.assertEqual(TestModel.all().count(), 2)
def param_android(arch, api): return [ "-G", "Unix Makefiles", "-DANDROID_NATIVE_API_LEVEL=" + api, "-DANDROID_ABI=" + arch, "-DANDROID_TOOLCHAIN=clang", "-DANDROID_NDK=" + base.get_env("ANDROID_NDK_ROOT"), "-DCMAKE_TOOLCHAIN_FILE=" + CMAKE_TOOLCHAIN_FILE, "-DCMAKE_MAKE_PROGRAM=make" ]
def check_gitPath(): path = base.get_env('PATH') gitExecPath = base.find_file( os.path.join(os.environ['PROGRAMW6432'], 'Git\\cmd'), 'git.exe') or base.find_file( os.path.join(os.environ['ProgramFiles(x86)'], 'Git\\cmd'), 'git.exe') gitDir = base.get_script_dir(gitExecPath) if (path.find(gitDir) == -1): base.set_env('PATH', gitDir + os.pathsep + path)
def make(): #check server module to build if(not config.check_option("module", "server")): return server_dir = base.get_script_dir() + "/../../server" base.cmd_in_dir(server_dir, "npm", ["install"]) base.cmd_in_dir(server_dir, "grunt", ["--no-color", "-v"] + base.server_addons_param()) #env variables product_version = base.get_env('PRODUCT_VERSION') if(not product_version): product_version = "0.0.0" build_number = base.get_env('BUILD_NUMBER') if(not build_number): build_number = "0" cur_date = datetime.date.today().strftime("%m/%d/%Y") server_build_dir = server_dir + "/build/server" base.replaceInFileRE(server_build_dir + "/Common/sources/commondefines.js", "const buildNumber = [0-9]*", "const buildNumber = " + build_number) base.replaceInFileRE(server_build_dir + "/Common/sources/license.js", "const buildDate = '[0-9-/]*'", "const buildDate = '" + cur_date + "'") base.replaceInFileRE(server_build_dir + "/Common/sources/commondefines.js", "const buildVersion = '[0-9.]*'", "const buildVersion = '" + product_version + "'") pkg_target = "node10" if ("linux" == base.host_platform()): pkg_target += "-linux" if ("windows" == base.host_platform()): pkg_target += "-win" base.cmd_in_dir(server_build_dir + "/DocService", "pkg", [".", "-t", pkg_target, "--options", "max_old_space_size=4096", "-o", "docservice"]) base.cmd_in_dir(server_build_dir + "/FileConverter", "pkg", [".", "-t", pkg_target, "-o", "converter"]) base.cmd_in_dir(server_build_dir + "/Metrics", "pkg", [".", "-t", pkg_target, "-o", "metrics"]) base.cmd_in_dir(server_build_dir + "/SpellChecker", "pkg", [".", "-t", pkg_target, "-o", "spellchecker"]) example_dir = base.get_script_dir() + "/../../document-server-integration/web/documentserver-example/nodejs" base.cmd_in_dir(example_dir, "npm", ["install"]) base.cmd_in_dir(example_dir, "pkg", [".", "-t", pkg_target, "-o", "example"])
def make(): if ("1" == base.get_env("OO_NO_BUILD_JS")): return if ("core" == config.option("module")): return base_dir = base.get_script_dir() + "/.." out_dir = base_dir + "/out/js/" branding = config.option("branding-name") if ("" == branding): branding = "onlyoffice" out_dir += branding base.create_dir(out_dir) # builder build_interface(base_dir + "/../web-apps/build") build_sdk_builder(base_dir + "/../sdkjs/build") base.create_dir(out_dir + "/builder") base.copy_dir(base_dir + "/../web-apps/deploy/web-apps", out_dir + "/builder/web-apps") base.copy_dir(base_dir + "/../sdkjs/deploy/sdkjs", out_dir + "/builder/sdkjs") # desktop build_sdk_desktop(base_dir + "/../sdkjs/build") if config.check_option("module", "desktop"): build_sdk_desktop(base_dir + "/../sdkjs/build") base.create_dir(out_dir + "/desktop") base.copy_dir(base_dir + "/../sdkjs/deploy/sdkjs", out_dir + "/desktop/sdkjs") base.copy_dir(base_dir + "/../web-apps/deploy/web-apps", out_dir + "/desktop/web-apps") base.delete_dir(out_dir + "/desktop/web-apps/apps/documenteditor/embed") base.delete_dir(out_dir + "/desktop/web-apps/apps/documenteditor/mobile") base.delete_dir(out_dir + "/desktop/web-apps/apps/presentationeditor/embed") base.delete_dir(out_dir + "/desktop/web-apps/apps/presentationeditor/mobile") base.delete_dir(out_dir + "/desktop/web-apps/apps/spreadsheeteditor/embed") base.delete_dir(out_dir + "/desktop/web-apps/apps/spreadsheeteditor/mobile") base.copy_file( base_dir + "/../web-apps/apps/api/documents/index.html.desktop", out_dir + "/desktop/web-apps/apps/api/documents/index.html") build_interface(base_dir + "/../desktop-apps/common/loginpage/build") base.copy_file( base_dir + "/../desktop-apps/common/loginpage/deploy/index.html", out_dir + "/desktop/index.html") return
def make(): if (config.check_option("platform", "android")) and (base.host_platform() == "mac") and (base.is_os_arm()): for toolchain in glob.glob(base.get_env("ANDROID_NDK_ROOT") + "/toolchains/*"): if base.is_dir(toolchain): check_android_ndk_macos_arm(toolchain + "/prebuilt") boost.make() cef.make() icu.make() openssl.make() v8.make() html2.make() hunspell.make(False) glew.make() if config.check_option("module", "mobile"): curl.make() websocket.make() return
def test_form(self): """Form validation test with context_validate.""" os.environ['REQUEST_METHOD'] = 'POST' local.request = Request(get_env()) f = TestForm() params = {'username': '******'} self.assertEqual(f.validate(params), False) params = { 'username': '******', 'password': '******', 'password_again': 'fugafuga', 'string_list_field': 'hoge', 'model_field': str(TestModel.all().get().key()) } result = f.validate(params) self.assertEqual(result, True) params['password_again'] = 'moge' result = f.validate(params) self.assertEqual(result, False)
def make(): is_no_brandind_build = base.is_file("config") platforms = config.option("platform").split() for platform in platforms: if not platform in config.platforms: continue print("------------------------------------------") print("BUILD_PLATFORM: " + platform) print("------------------------------------------") old_env = os.environ.copy() isAndroid = False if (-1 == platform.find("android")) else True if isAndroid: toolchain_platform = "linux-x86_64" if ("mac" == base.host_platform()): toolchain_platform = "darwin-x86_64" base.set_env("ANDROID_NDK_HOST", toolchain_platform) old_path = base.get_env("PATH") new_path = base.qt_setup(platform) + "/bin:" new_path += (base.get_env("ANDROID_NDK_ROOT") + "/toolchains/llvm/prebuilt/" + toolchain_platform + "/bin:") new_path += old_path base.set_env("PATH", new_path) if ("android_arm64_v8a" == platform): base.set_env("ANDROID_NDK_PLATFORM", "android-21") else: base.set_env("ANDROID_NDK_PLATFORM", "android-16") # makefile suffix file_suff = platform if (config.check_option("config", "debug")): file_suff += "_debug_" file_suff += config.option("branding") # setup qt qt_dir = base.qt_setup(platform) base.set_env("OS_DEPLOY", platform) # qmake CONFIG+=... config_param = base.qt_config(platform) # qmake ADDON qmake_addon = [] if ("" != config.option("qmake_addon")): qmake_addon.append(config.option("qmake_addon")) # non windows platform if not base.is_windows(): if ("1" == config.option("clean")): base.cmd( base.app_make(), ["clean", "-f", "makefiles/build.makefile_" + file_suff], True) base.cmd(base.app_make(), [ "distclean", "-f", "makefiles/build.makefile_" + file_suff ], True) if base.is_file("makefiles/build.makefile_" + file_suff): base.delete_file("makefiles/build.makefile_" + file_suff) base.cmd(qt_dir + "/bin/qmake", ["-nocache", "build.pro", "CONFIG+=" + config_param] + qmake_addon) base.cmd(base.app_make(), ["-f", "makefiles/build.makefile_" + file_suff]) else: qmake_bat = [] qmake_bat.append( "call \"" + config.option("vs-path") + "/vcvarsall.bat\" " + ("x86" if base.platform_is_32(platform) else "x64")) if ("1" == config.option("clean")): qmake_bat.append( "call nmake clean -f makefiles/build.makefile_" + file_suff) qmake_bat.append( "call nmake distclean -f makefiles/build.makefile_" + file_suff) qmake_addon_string = "" if ("" != config.option("qmake_addon")): qmake_addon_string = " \"" + config.option( "qmake_addon") + "\"" qmake_bat.append("if exist ./makefiles/build.makefile_" + file_suff + " del /F ./makefiles/build.makefile_" + file_suff) qmake_bat.append("call \"" + qt_dir + "/bin/qmake\" -nocache build.pro \"CONFIG+=" + config_param + "\"" + qmake_addon_string) qmake_bat.append("call nmake -f makefiles/build.makefile_" + file_suff) base.run_as_bat(qmake_bat) os.environ = old_env.copy() base.delete_file(".qmake.stash") if config.check_option( "module", "builder") and base.is_windows() and is_no_brandind_build: base.bash("../core/DesktopEditor/doctrenderer/docbuilder.com/build") return
def setUp(self): os.environ['REQUEST_METHOD'] = 'POST' local.request = Request(get_env())
#!/usr/bin/env python import sys sys.path.append('../..') import base import os current_dir = base.get_script_dir() + "/../../core/Common/3dParty/icu/android" toolshains_dir = current_dir + "/toolchains" icu_major = "58" icu_minor = "2" icu_is_shared = False current_path = base.get_env("PATH") platforms = { "arm64": { "arch": "aarch64-linux-android", "bin": "aarch64-linux-android" }, "arm": { "arch": "arm-linux-androideabi", "bin": "arm-linux-androideabi" }, "x86_64": { "arch": "x86_64-linux-android", "bin": "x86_64-linux-android" }, "x86": { "arch": "x86-linux-android",
import base import build import build_js import build_server import deploy import make_common import config_server as develop_config_server # parse configuration config.parse() base_dir = base.get_script_dir(__file__) base.set_env("BUILD_PLATFORM", config.option("platform")) # branding if ("1" != base.get_env("OO_RUNNING_BRANDING")) and ( "" != config.option("branding")): branding_dir = base_dir + "/../" + config.option("branding") if ("1" == config.option("update")): is_exist = True if not base.is_dir(branding_dir): is_exist = False base.cmd( "git", ["clone", config.option("branding-url"), branding_dir]) base.cmd_in_dir(branding_dir, "git", ["fetch"], True) if not is_exist or ("1" != config.option("update-light")): base.cmd_in_dir(
def make(): print("[fetch & build]: icu") base_dir = base.get_script_dir() + "/../../core/Common/3dParty/icu" old_cur = os.getcwd() os.chdir(base_dir) icu_major = "58" icu_minor = "2" if not base.is_dir("icu"): base.cmd("svn", ["export", "https://github.com/unicode-org/icu/tags/release-" + icu_major + "-" + icu_minor + "/icu4c", "./icu"]) if ("windows" == base.host_platform()): need_platforms = [] if (-1 != config.option("platform").find("win_64")): need_platforms.append("win_64") if (-1 != config.option("platform").find("win_32")): need_platforms.append("win_32") 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) base.vcvarsall_start("x64" if ("win_64" == platform) else "x86") base.cmd("MSBuild.exe", ["icu/source/allinone/allinone.sln", "/p:Configuration=Release", "/p:PlatformToolset=v140", "/p:Platform=" + ("X64" if ("win_64" == platform) else "Win32")]) base.vcvarsall_end() bin_dir = "icu/bin64/" if ("win_64" == platform) else "icu/bin/" lib_dir = "icu/lib64/" if ("win_64" == platform) else "icu/lib/" base.create_dir(platform + "/build") base.copy_file(bin_dir + "icudt" + icu_major + ".dll", platform + "/build/") base.copy_file(bin_dir + "icuuc" + icu_major + ".dll", platform + "/build/") base.copy_file(lib_dir + "icudt.lib", platform + "/build/") base.copy_file(lib_dir + "icuuc.lib", platform + "/build/") platform = "" if ("linux" == base.host_platform()): platform = "linux_64" if not base.is_dir(platform + "/build"): base.replaceInFile("./icu/source/i18n/digitlst.cpp", "xlocale", "locale") if ("mac" == base.host_platform()): platform = "mac_64" if not base.is_dir(platform + "/build"): base.replaceInFile("./icu/source/tools/pkgdata/pkgdata.cpp", "cmd, \"%s %s -o %s%s %s %s%s %s %s\",", "cmd, \"%s %s -o %s%s %s %s %s %s %s\",") if (-1 != config.option("platform").find("ios")): if not base.is_dir("build"): base.bash("./icu_ios") elif ("" != platform) and not base.is_dir(platform + "/build"): base.create_dir(platform) os.chdir("icu/source") base.cmd("./runConfigureICU", ["Linux" if "linux" == base.host_platform() else "MacOSX"]) old_dest_dir = base.get_env("DESTDIR") base.set_env("DESTDIR", base_dir + "/" + platform) base.cmd("make", ["install"]) base.set_env("DESTDIR", old_dest_dir) os.chdir("../..") base.create_dir(platform + "/build") if ("linux_64" == platform): base.copy_file("icu/source/lib/libicudata.so." + icu_major + "." + icu_minor, platform + "/build/libicudata.so." + icu_major) base.copy_file("icu/source/lib/libicuuc.so." + icu_major + "." + icu_minor, platform + "/build/libicuuc.so." + icu_major) elif ("mac_64" == platform): base.copy_file("icu/source/lib/libicudata." + icu_major + "." + icu_minor + ".dylib", platform + "/build/libicudata." + icu_major + ".dylib") base.copy_file("icu/source/lib/libicuuc." + icu_major + "." + icu_minor + ".dylib", platform + "/build/libicuuc." + icu_major + ".dylib") os.chdir(old_cur) return
def make(): base_dir = base.get_script_dir() + "/../out" git_dir = base.get_script_dir() + "/../.." core_dir = git_dir + "/core" branding = config.branding() platforms = config.option("platform").split() for native_platform in platforms: if not native_platform in config.platforms: continue root_dir = base_dir + ( "/" + native_platform + "/" + branding + ("/DesktopEditors" if base.is_windows() else "/desktopeditors")) if (base.is_dir(root_dir)): base.delete_dir(root_dir) base.create_dir(root_dir) qt_dir = base.qt_setup(native_platform) # check platform on xp isWindowsXP = False if (-1 == native_platform.find("_xp")) else True platform = native_platform[0:-3] if isWindowsXP else native_platform apps_postfix = "build" + base.qt_dst_postfix() if ("" != config.option("branding")): apps_postfix += ("/" + config.option("branding")) apps_postfix += "/" apps_postfix += platform if isWindowsXP: apps_postfix += "/xp" core_build_dir = core_dir + "/build" if ("" != config.option("branding")): core_build_dir += ("/" + config.option("branding")) platform_postfix = platform + base.qt_dst_postfix() # x2t base.create_dir(root_dir + "/converter") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "kernel") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "UnicodeConverter") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "graphics") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "PdfWriter") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "PdfReader") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "DjVuFile") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "XpsFile") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "HtmlFile2") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "HtmlRenderer") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "Fb2File") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "EpubFile") if ("ios" == platform): base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "x2t") else: base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir + "/converter", "x2t") # icu if (0 == platform.find("win")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/icudt58.dll", root_dir + "/converter/icudt58.dll") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/icuuc58.dll", root_dir + "/converter/icuuc58.dll") if (0 == platform.find("linux")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.so.58", root_dir + "/converter/libicudata.so.58") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.so.58", root_dir + "/converter/libicuuc.so.58") if (0 == platform.find("mac")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.58.dylib", root_dir + "/converter/libicudata.58.dylib") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.58.dylib", root_dir + "/converter/libicuuc.58.dylib") # doctrenderer if isWindowsXP: base.copy_lib(core_build_dir + "/lib/" + platform_postfix + "/xp", root_dir + "/converter", "doctrenderer") base.copy_files( core_dir + "/Common/3dParty/v8/v8_xp/" + platform + "/release/icudt*.dll", root_dir + "/converter/") else: base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "doctrenderer") if (0 == platform.find("win")): base.copy_files( core_dir + "/Common/3dParty/v8/v8/out.gn/" + platform + "/release/icudt*.dat", root_dir + "/converter/") else: base.copy_file( core_dir + "/Common/3dParty/v8/v8/out.gn/" + platform + "/icudtl.dat", root_dir + "/converter/icudtl.dat") base.generate_doctrenderer_config( root_dir + "/converter/DoctRenderer.config", "../editors/", "desktop") base.copy_dir(git_dir + "/desktop-apps/common/converter/empty", root_dir + "/converter/empty") # dictionaries base.create_dir(root_dir + "/dictionaries") base.copy_dir_content(git_dir + "/dictionaries", root_dir + "/dictionaries", "", ".git") base.copy_dir(git_dir + "/desktop-apps/common/package/fonts", root_dir + "/fonts") base.copy_file( git_dir + "/desktop-apps/common/package/license/3dparty/3DPARTYLICENSE", root_dir + "/3DPARTYLICENSE") # cef if not isWindowsXP: base.copy_files( core_dir + "/Common/3dParty/cef/" + platform + "/build/*", root_dir) else: base.copy_files( core_dir + "/Common/3dParty/cef/" + native_platform + "/build/*", root_dir) isUseQt = True if (0 == platform.find("mac")) or (0 == platform.find("ios")): isUseQt = False # libraries base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "hunspell") base.copy_lib( core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "ooxmlsignature") base.copy_lib( core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "ascdocumentscore") if (0 != platform.find("mac")): base.copy_lib( core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "qtascdocumentscore") if (0 == platform.find("mac")): base.copy_dir( core_build_dir + "/bin/" + platform_postfix + "/editors_helper.app", root_dir + "/editors_helper.app") else: base.copy_exe( core_build_dir + "/bin/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "editors_helper") if isUseQt: base.qt_copy_lib("Qt5Core", root_dir) base.qt_copy_lib("Qt5Gui", root_dir) base.qt_copy_lib("Qt5PrintSupport", root_dir) base.qt_copy_lib("Qt5Svg", root_dir) base.qt_copy_lib("Qt5Widgets", root_dir) base.qt_copy_lib("Qt5Multimedia", root_dir) base.qt_copy_lib("Qt5MultimediaWidgets", root_dir) base.qt_copy_lib("Qt5Network", root_dir) base.qt_copy_lib("Qt5OpenGL", root_dir) base.qt_copy_plugin("bearer", root_dir) base.qt_copy_plugin("iconengines", root_dir) base.qt_copy_plugin("imageformats", root_dir) base.qt_copy_plugin("platforms", root_dir) base.qt_copy_plugin("platforminputcontexts", root_dir) base.qt_copy_plugin("printsupport", root_dir) base.qt_copy_plugin("mediaservice", root_dir) base.qt_copy_plugin("playlistformats", root_dir) base.qt_copy_plugin("platformthemes", root_dir) base.qt_copy_plugin("xcbglintegrations", root_dir) base.qt_copy_plugin("styles", root_dir) if (0 == platform.find("linux")): base.qt_copy_lib("Qt5DBus", root_dir) base.qt_copy_lib("Qt5X11Extras", root_dir) base.qt_copy_lib("Qt5XcbQpa", root_dir) base.qt_copy_icu(root_dir) base.copy_files( base.get_env("QT_DEPLOY") + "/../lib/libqgsttools_p.so*", root_dir) if (0 == platform.find("win")): base.copy_file( git_dir + "/desktop-apps/win-linux/extras/projicons/" + apps_postfix + "/projicons.exe", root_dir + "/DesktopEditors.exe") base.copy_file( git_dir + "/desktop-apps/win-linux/" + apps_postfix + "/DesktopEditors.exe", root_dir + "/editors.exe") base.copy_file( git_dir + "/desktop-apps/win-linux/res/icons/desktopeditors.ico", root_dir + "/app.ico") elif (0 == platform.find("linux")): base.copy_file( git_dir + "/desktop-apps/win-linux/" + apps_postfix + "/DesktopEditors", root_dir + "/DesktopEditors") base.copy_lib( core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "videoplayer") base.create_dir(root_dir + "/editors") base.copy_dir(base_dir + "/js/" + branding + "/desktop/sdkjs", root_dir + "/editors/sdkjs") base.copy_dir(base_dir + "/js/" + branding + "/desktop/web-apps", root_dir + "/editors/web-apps") base.copy_dir( git_dir + "/desktop-sdk/ChromiumBasedEditors/resources/local", root_dir + "/editors/sdkjs/common/Images/local") base.create_dir(root_dir + "/editors/sdkjs-plugins") base.copy_sdkjs_plugins(root_dir + "/editors/sdkjs-plugins", True, True) # remove some default plugins if base.is_dir(root_dir + "/editors/sdkjs-plugins/speech"): base.delete_dir(root_dir + "/editors/sdkjs-plugins/speech") # io base.create_dir(root_dir + "/editors/sdkjs-plugins/v1") base.download( "https://onlyoffice.github.io/sdkjs-plugins/v1/plugins.js", root_dir + "/editors/sdkjs-plugins/v1/plugins.js") base.download( "https://onlyoffice.github.io/sdkjs-plugins/v1/plugins-ui.js", root_dir + "/editors/sdkjs-plugins/v1/plugins-ui.js") base.download( "https://onlyoffice.github.io/sdkjs-plugins/v1/plugins.css", root_dir + "/editors/sdkjs-plugins/v1/plugins.css") base.support_old_versions_plugins(root_dir + "/editors/sdkjs-plugins") base.copy_sdkjs_plugin( git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins", root_dir + "/editors/sdkjs-plugins", "manager", True) base.copy_sdkjs_plugin( git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/encrypt", root_dir + "/editors/sdkjs-plugins", "advanced2", True) #base.copy_dir(git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/encrypt/ui/common/{14A8FC87-8E26-4216-B34E-F27F053B2EC4}", root_dir + "/editors/sdkjs-plugins/{14A8FC87-8E26-4216-B34E-F27F053B2EC4}") #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}") if (0 != platform.find("mac")): base.copy_sdkjs_plugin( git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins", root_dir + "/editors/sdkjs-plugins", "sendto", True) base.copy_file(base_dir + "/js/" + branding + "/desktop/index.html", root_dir + "/index.html") base.copy_dir(git_dir + "/desktop-apps/common/loginpage/providers", root_dir + "/providers") isUseJSC = False if (0 == platform.find("mac")): file_size_doctrenderer = os.path.getsize( root_dir + "/converter/libdoctrenderer.dylib") print("file_size_doctrenderer: " + str(file_size_doctrenderer)) if (file_size_doctrenderer < 5 * 1024 * 1024): isUseJSC = True if isUseJSC: base.delete_file(root_dir + "/converter/icudtl.dat") if (0 == platform.find("win")): base.copy_lib( git_dir + "/desktop-apps/win-linux/3dparty/WinSparkle/" + platform, root_dir, "WinSparkle") base.delete_file(root_dir + "/cef_sandbox.lib") base.delete_file(root_dir + "/libcef.lib") # all themes generate ---- base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir + "/converter", "allfontsgen") base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir + "/converter", "allthemesgen") if (0 == platform.find("mac")): base.mac_correct_rpath_desktop(root_dir) 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.delete_exe(root_dir + "/converter/allfontsgen") base.delete_exe(root_dir + "/converter/allthemesgen") base.delete_file(root_dir + "/converter/AllFonts.js") base.delete_file(root_dir + "/converter/font_selection.bin") if not isUseJSC: base.delete_file(root_dir + "/editors/sdkjs/slide/sdk-all.cache") return
def setUp(self): super(NumberFieldTest, self).setUp() os.environ['REQUEST_METHOD'] = 'POST' local.request = Request(get_env())
def parse(): configfile = open(base.get_script_dir() + "/../config", "r") configOptions = {} for line in configfile: name, value = line.partition("=")[::2] k = name.strip() v = value.strip(" '\"\r\n") if ("true" == v.lower()): v = "1" if ("false" == v.lower()): v = "0" configOptions[k] = v os.environ["OO_" + k.upper().replace("-", "_")] = v # export options global options options = configOptions # all platforms global platforms platforms = [ "win_64", "win_32", "win_64_xp", "win_32_xp", "linux_64", "linux_32", "mac_64", "ios", "android_arm64_v8a", "android_armv7", "android_x86", "android_x86_64" ] # correction host_platform = base.host_platform() # platform if check_option("platform", "all"): if ("windows" == host_platform): options["platform"] += " win_64 win_32" elif ("linux" == host_platform): options["platform"] += " linux_64 linux_32" else: options["platform"] += " mac_64" if check_option("platform", "native"): bits = "32" if platform.machine().endswith('64'): bits = "64" if ("windows" == host_platform): options["platform"] += (" win_" + bits) elif ("linux" == host_platform): options["platform"] += (" linux_" + bits) else: options["platform"] += (" mac_" + bits) if check_option("platform", "xp") and ("windows" == host_platform): options["platform"] += " win_64_xp win_32_xp" if check_option("platform", "android"): options[ "platform"] += " android_arm64_v8a android_armv7 android_x86 android_x86_64" # check vs-path if ("windows" == host_platform): options["vs-path"] = base.get_env( "ProgramFiles") + "/Microsoft Visual Studio 14.0/VC" if ("" != base.get_env("ProgramFiles(x86)")): options["vs-path"] = base.get_env( "ProgramFiles(x86)") + "/Microsoft Visual Studio 14.0/VC" # check sdkjs-plugins if not "sdkjs-plugin" in options: options["sdkjs-plugin"] = "default" if not "sdkjs-plugin-server" in options: options["sdkjs-plugin-server"] = "default" global sdkjs_addons sdkjs_addons = {} sdkjs_addons["comparison"] = "sdkjs-comparison" sdkjs_addons["content-controls"] = "sdkjs-content-controls" sdkjs_addons["pivot-tables"] = "sdkjs-pivot-tables" global sdkjs_addons_desktop sdkjs_addons_desktop = {} sdkjs_addons_desktop["disable-features"] = "sdkjs-disable-features" global server_addons server_addons = {} server_addons["license"] = "server-license" server_addons["lockstorage"] = "server-lockstorage" global web_apps_addons web_apps_addons = {} web_apps_addons["mobile"] = "web-apps-mobile" return
def make(): base_dir = base.get_script_dir() + "/../out" git_dir = base.get_script_dir() + "/../.." core_dir = git_dir + "/core" branding = config.branding() platforms = config.option("platform").split() for native_platform in platforms: if not native_platform in config.platforms: continue root_dir = base_dir + "/" + native_platform + "/" + branding + "/mobile" if base.get_env("DESTDIR_BUILD_OVERRIDE") != "": return if (base.is_dir(root_dir)): base.delete_dir(root_dir) base.create_dir(root_dir) qt_dir = base.qt_setup(native_platform) platform = native_platform core_build_dir = core_dir + "/build" if ("" != config.option("branding")): core_build_dir += ("/" + config.option("branding")) platform_postfix = platform + base.qt_dst_postfix() # x2t base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "kernel") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "UnicodeConverter") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "graphics") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "PdfWriter") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "PdfReader") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "DjVuFile") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "XpsFile") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "HtmlFile") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "HtmlRenderer") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "doctrenderer") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "x2t") # icu if (0 == platform.find("win")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/icudt58.dll", root_dir + "/icudt58.dll") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/icuuc58.dll", root_dir + "/icuuc58.dll") if (0 == platform.find("linux")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.so.58", root_dir + "/libicudata.so.58") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.so.58", root_dir + "/libicuuc.so.58") if (0 == platform.find("mac")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.58.dylib", root_dir + "/libicudata.58.dylib") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.58.dylib", root_dir + "/libicuuc.58.dylib") # js base.copy_dir(base_dir + "/js/" + branding + "/mobile/sdkjs", root_dir + "/sdkjs") # correct ios frameworks if ("ios" == platform): base.generate_plist(root_dir) if (0 == platform.find("mac")): base.mac_correct_rpath_x2t(root_dir) for native_platform in platforms: if native_platform == "android": # make full version root_dir = base_dir + "/android/" + branding + "/mobile" if (base.is_dir(root_dir)): base.delete_dir(root_dir) base.create_dir(root_dir) # js base.copy_dir(base_dir + "/js/" + branding + "/mobile/sdkjs", root_dir + "/sdkjs") # app base.generate_doctrenderer_config( root_dir + "/DoctRenderer.config", "./", "builder") base.copy_dir(git_dir + "/DocumentBuilder/empty", root_dir + "/empty") libs_dir = root_dir + "/lib" base.create_dir(libs_dir + "/arm64-v8a") base.copy_files( base_dir + "/android_arm64_v8a/" + branding + "/mobile/*.so", libs_dir + "/arm64-v8a") base.create_dir(libs_dir + "/armeabi-v7a") base.copy_files( base_dir + "/android_armv7/" + branding + "/mobile/*.so", libs_dir + "/armeabi-v7a") base.create_dir(libs_dir + "/x86") base.copy_files( base_dir + "/android_x86/" + branding + "/mobile/*.so", libs_dir + "/x86") base.create_dir(libs_dir + "/x86_64") base.copy_files( base_dir + "/android_x86_64/" + branding + "/mobile/*.so", libs_dir + "/x86_64") break return
def make(): if ("1" == base.get_env("OO_NO_BUILD_JS")): return base_dir = base.get_script_dir() + "/.." out_dir = base_dir + "/out/js/" branding = config.option("branding-name") if ("" == branding): branding = "onlyoffice" out_dir += branding base.create_dir(out_dir) # builder build_interface(base_dir + "/../web-apps/build") build_sdk_builder(base_dir + "/../sdkjs/build") base.create_dir(out_dir + "/builder") base.copy_dir(base_dir + "/../web-apps/deploy/web-apps", out_dir + "/builder/web-apps") base.copy_dir(base_dir + "/../sdkjs/deploy/sdkjs", out_dir + "/builder/sdkjs") # desktop if config.check_option("module", "desktop"): build_sdk_desktop(base_dir + "/../sdkjs/build") base.create_dir(out_dir + "/desktop") base.copy_dir(base_dir + "/../sdkjs/deploy/sdkjs", out_dir + "/desktop/sdkjs") base.copy_dir(base_dir + "/../web-apps/deploy/web-apps", out_dir + "/desktop/web-apps") if not base.is_file(out_dir + "/desktop/sdkjs/common/AllFonts.js"): base.copy_file( base_dir + "/../sdkjs/common/HtmlFileInternal/AllFonts.js", out_dir + "/desktop/sdkjs/common/AllFonts.js") base.delete_dir(out_dir + "/desktop/web-apps/apps/documenteditor/embed") base.delete_dir(out_dir + "/desktop/web-apps/apps/documenteditor/mobile") base.delete_dir(out_dir + "/desktop/web-apps/apps/presentationeditor/embed") base.delete_dir(out_dir + "/desktop/web-apps/apps/presentationeditor/mobile") base.delete_dir(out_dir + "/desktop/web-apps/apps/spreadsheeteditor/embed") base.delete_dir(out_dir + "/desktop/web-apps/apps/spreadsheeteditor/mobile") base.copy_file( base_dir + "/../web-apps/apps/api/documents/index.html.desktop", out_dir + "/desktop/web-apps/apps/api/documents/index.html") build_interface(base_dir + "/../desktop-apps/common/loginpage/build") base.copy_file( base_dir + "/../desktop-apps/common/loginpage/deploy/index.html", out_dir + "/desktop/index.html") # mobile if config.check_option("module", "mobile"): build_sdk_native(base_dir + "/../sdkjs/build") base.create_dir(out_dir + "/mobile") base.create_dir(out_dir + "/mobile/sdkjs") vendor_dir_src = base_dir + "/../web-apps/vendor/" sdk_dir_src = base_dir + "/../sdkjs/deploy/sdkjs/" # banners base.join_scripts([ vendor_dir_src + "xregexp/xregexp-all-min.js", vendor_dir_src + "underscore/underscore-min.js", sdk_dir_src + "common/Native/native.js", sdk_dir_src + "../../common/Native/Wrappers/common.js", sdk_dir_src + "common/Native/jquery_native.js" ], out_dir + "/mobile/sdkjs/banners.js") base.create_dir(out_dir + "/mobile/sdkjs/word") base.join_scripts([ out_dir + "/mobile/sdkjs/banners.js", sdk_dir_src + "word/sdk-all-min.js", sdk_dir_src + "word/sdk-all.js" ], out_dir + "/mobile/sdkjs/word/script.bin") base.create_dir(out_dir + "/mobile/sdkjs/cell") base.join_scripts([ out_dir + "/mobile/sdkjs/banners.js", sdk_dir_src + "cell/sdk-all-min.js", sdk_dir_src + "cell/sdk-all.js" ], out_dir + "/mobile/sdkjs/cell/script.bin") base.create_dir(out_dir + "/mobile/sdkjs/slide") base.join_scripts([ out_dir + "/mobile/sdkjs/banners.js", sdk_dir_src + "slide/sdk-all-min.js", sdk_dir_src + "slide/sdk-all.js" ], out_dir + "/mobile/sdkjs/slide/script.bin") base.delete_file(out_dir + "/mobile/sdkjs/banners.js") return
def make(): if not base.is_dir(current_dir): base.create_dir(current_dir) print("[fetch & build]: ixwebsocket") current_dir_old = os.getcwd() os.chdir(current_dir) if not base.is_dir(current_dir + "/IXWebSocket"): base.cmd("git", ["clone", "https://github.com/machinezone/IXWebSocket"]) # build for platform if (-1 != config.option("platform").find("android")): if base.is_dir(current_dir + "/IXWebSocket/build/android"): os.chdir(current_dir_old) return os.chdir(current_dir + "/IXWebSocket") global CMAKE CMAKE_TOOLCHAIN_FILE = base.get_env( "ANDROID_NDK_ROOT") + "/build/cmake/android.toolchain.cmake" CMAKE_DIR = base.get_android_sdk_home() + "/cmake/" CMAKE = CMAKE_DIR + find_last_version(os.listdir(CMAKE_DIR), CMAKE_DIR) + "/bin/cmake" def param_android(arch, api): return [ "-G", "Unix Makefiles", "-DANDROID_NATIVE_API_LEVEL=" + api, "-DANDROID_ABI=" + arch, "-DANDROID_TOOLCHAIN=clang", "-DANDROID_NDK=" + base.get_env("ANDROID_NDK_ROOT"), "-DCMAKE_TOOLCHAIN_FILE=" + CMAKE_TOOLCHAIN_FILE, "-DCMAKE_MAKE_PROGRAM=make" ] build_arch("android", "arm64-v8a", param_android("arm64-v8a", "21")) build_arch("android", "armeabi-v7a", param_android("armeabi-v7a", "16")) build_arch("android", "x86_64", param_android("x86_64", "21")) build_arch("android", "x86", param_android("x86", "16")) elif (-1 != config.option("platform").find("ios") or -1 != config.option("platform").find("mac")): platform = "ios" if -1 != config.option("platform").find( "ios") else "mac" if base.is_dir(current_dir + "/IXWebSocket/build/" + platform): os.chdir(current_dir_old) return if not base.is_dir(current_dir + "/ios-cmake"): base.cmd("git", ["clone", "https://github.com/leetal/ios-cmake"]) CMAKE_TOOLCHAIN_FILE = current_dir + "/ios-cmake/ios.toolchain.cmake" os_cmd = 'cmake' if os.system(os_cmd) != 0: base.cmd("brew install", ["cmake"]) os.chdir(current_dir + "/IXWebSocket") def param_apple(platform, arch): return [ "-G", "Xcode", "-DDEPLOYMENT_TARGET=10", "-DENABLE_BITCODE=1", "-DPLATFORM=" + platform, "-DARCHS=" + arch, "-DCMAKE_TOOLCHAIN_FILE=" + CMAKE_TOOLCHAIN_FILE ] if (platform == "ios"): build_arch("ios", "armv7", param_apple("OS", "armv7")) build_arch("ios", "arm64", param_apple("OS64", "arm64")) build_arch("ios", "i386", param_apple("SIMULATOR", "i386")) build_arch("ios", "x86_64", param_apple("SIMULATOR64", "x86_64")) else: build_arch("mac", "mac_arm64", param_apple("MAC_ARM64", "arm64")) build_arch("mac", "mac_64", param_apple("MAC", "x86_64")) os.chdir(current_dir) if (platform == "ios"): base.create_dir( current_dir + "/IXWebSocket/build/ios/ixwebsocket-universal/include") base.create_dir(current_dir + "/IXWebSocket/build/ios/ixwebsocket-universal/lib") #copy include prefix_dir = current_dir + "/IXWebSocket/build/ios/" postfix_dir = "" if base.is_dir(prefix_dir + "armv7/usr"): postfix_dir = "/usr" if base.is_dir(prefix_dir + "armv7" + postfix_dir + "/include"): base.cmd("cp", [ "-r", prefix_dir + "armv7" + postfix_dir + "/include", current_dir + "/IXWebSocket/build/ios/ixwebsocket-universal" ]) elif base.is_dir(prefix_dir + "armv64" + postfix_dir + "/include"): base.cmd("cp", [ "-r", prefix_dir + "armv64" + postfix_dir + "/include", current_dir + "/IXWebSocket/build/ios/ixwebsocket-universal" ]) elif base.is_dir(prefix_dir + "i386" + postfix_dir + "/include"): base.cmd("cp", [ "-r", prefix_dir + "i386" + postfix_dir + "/include", current_dir + "/IXWebSocket/build/ios/ixwebsocket-universal" ]) elif base.is_dir(prefix_dir + "x86_64" + postfix_dir + "/include"): base.cmd("cp", [ "-r", prefix_dir + "x86_64" + postfix_dir + "/include", current_dir + "/IXWebSocket/build/ios/ixwebsocket-universal" ]) # Create fat lib base.cmd("lipo", [ "IXWebSocket/build/ios/armv7" + postfix_dir + "/lib/libixwebsocket.a", "IXWebSocket/build/ios/arm64" + postfix_dir + "/lib/libixwebsocket.a", "IXWebSocket/build/ios/i386" + postfix_dir + "/lib/libixwebsocket.a", "IXWebSocket/build/ios/x86_64" + postfix_dir + "/lib/libixwebsocket.a", "-create", "-output", "IXWebSocket/build/ios/ixwebsocket-universal/lib/libixwebsocket.a" ]) elif (-1 != config.option("platform").find("linux")): if base.is_dir(current_dir + "/IXWebSocket/build/linux"): os.chdir(current_dir_old) return #will support when openssl x86 will support #if (-1 != config.option("platform").find("linux_32")): #build_arch("linux", "linux_32", ["-G","Unix Makefiles", "-DCMAKE_MAKE_PROGRAM=make", "-DCMAKE_C_FLAGS=-m32", "-DCMAKE_CXX_FLAGS=-m32"]) if (-1 != config.option("platform").find("linux_64")): build_arch("linux", "linux_64", ["-G", "Unix Makefiles", "-DCMAKE_MAKE_PROGRAM=make"]) elif ("windows" == base.host_platform()): if base.is_dir(current_dir + "/IXWebSocket/build/windows"): os.chdir(current_dir_old) return if (-1 != config.option("platform").find("win_32")): build_arch("windows", "win_32", ["-G", "Visual Studio 14 2015", "-A", "Win32"]) build_arch("windows_debug", "win_32", ["-G", "Visual Studio 14 2015", "-A", "Win32"], True) if (-1 != config.option("platform").find("win_64")): build_arch("windows", "win_64", ["-G", "Visual Studio 14 2015 Win64"]) build_arch("windows_debug", "win_64", ["-G", "Visual Studio 14 2015 Win64"], True) os.chdir(current_dir_old) return
def make(): base_dir = base.get_script_dir() + "/../out" git_dir = base.get_script_dir() + "/../.." branding = config.branding() platforms = config.option("platform").split() for native_platform in platforms: if not native_platform in config.platforms: continue isWindowsXP = False if (-1 == native_platform.find("_xp")) else True platform = native_platform[0:-3] if isWindowsXP else native_platform if (0 == platform.find("mac")): macos_dir = git_dir + "/desktop-apps/macos" update_dir = macos_dir + "/build/update" isX86 = True if ("" != base.get_env("_X86")) else False target = "release" if not isX86 else "release_x86" base.cmd_in_dir(macos_dir, "bundler", ["exec", "fastlane", target, "skip_git_bump:true"]) package = "ONLYOFFICE" if not isX86 else "ONLYOFFICE-x86" app_version = base.run_command("mdls -name kMDItemVersion -raw " + macos_dir + "/build/ONLYOFFICE.app")['stdout'] macos_zip = macos_dir + "/build/" + package + "-" + app_version + ".zip" update_storage = base.get_env( "ARCHIVES_DIR") + "/" + package + "/_updates" changes_dir = macos_dir + "/ONLYOFFICE/update/updates/ONLYOFFICE/changes/" + app_version base.delete_dir(update_dir) base.delete_dir( os.path.expanduser( "~/Library/Caches/Sparkle_generate_appcast")) base.create_dir(update_dir) base.copy_dir_content(update_storage, update_dir, ".zip") base.copy_file(macos_zip, update_dir) for file in os.listdir(update_dir): if file.endswith(".zip"): base.copy_file( changes_dir + "/ReleaseNotes.html", update_dir + "/" + os.path.splitext(file)[0] + ".html") base.copy_file( changes_dir + "/ReleaseNotesRU.html", update_dir + "/" + os.path.splitext(file)[0] + ".ru.html") base.cmd(macos_dir + "/Vendor/Sparkle/bin/generate_appcast", [update_dir]) base_url = "https://download.onlyoffice.com/install/desktop/editors/mac" changes_url = base_url + "/updates/onlyoffice/changes" update_url = base_url + ("/updates/onlyoffice" if not isX86 else "/x86") base.replaceInFileRE( update_dir + "/onlyoffice.xml", r"(<sparkle:releaseNotesLink>)(?:.+ONLYOFFICE(?:|-x86)-([0-9.]+)\..+)(</sparkle:releaseNotesLink>)", "\\1" + changes_url + "/\\2/ReleaseNotes.html\\3") base.replaceInFileRE( update_dir + "/onlyoffice.xml", r"(<sparkle:releaseNotesLink xml:lang=\"ru\">)(?:ONLYOFFICE(?:|-x86)-([0-9.]+)\..+)(</sparkle:releaseNotesLink>)", "\\1" + changes_url + "/\\2/ReleaseNotesRU.html\\3") base.replaceInFileRE(update_dir + "/onlyoffice.xml", r"(url=\")(?:.+/)(ONLYOFFICE.+\")", "\\1" + update_url + "/\\2") for file in os.listdir(update_dir): if -1 == file.find(app_version) and (file.endswith(".zip") or file.endswith(".html")): base.delete_dir(update_dir + "/" + file) return
import config import base import build import build_js import build_server import deploy import make_common # parse configuration config.parse() base_dir = base.get_script_dir(__file__) base.set_env("BUILD_PLATFORM", config.option("platform")) # branding if ("1" != base.get_env("OO_RUNNING_BRANDING")) and ( "" != config.option("branding")): branding_dir = base_dir + "/../" + config.option("branding") if ("1" == config.option("update")): is_exist = True if not base.is_dir(branding_dir): is_exist = False base.cmd( "git", ["clone", config.option("branding-url"), branding_dir]) base.cmd_in_dir(branding_dir, "git", ["fetch"], True) if not is_exist or ("1" != config.option("update-light")): base.cmd_in_dir(
def check_pythonPath(): path = base.get_env('PATH') if (path.find(sys.exec_prefix) == -1): base.set_env('PATH', sys.exec_prefix + os.pathsep + path)
def make(): base_dir = base.get_script_dir() + "/../out" git_dir = base.get_script_dir() + "/../.." core_dir = git_dir + "/core" branding = config.branding() platforms = config.option("platform").split() for native_platform in platforms: if not native_platform in config.platforms: continue root_dir = base_dir + ( "/" + native_platform + "/" + branding + ("/DesktopEditors" if base.is_windows() else "/desktopeditors")) if (base.is_dir(root_dir)): base.delete_dir(root_dir) base.create_dir(root_dir) qt_dir = base.qt_setup(native_platform) # check platform on xp isWindowsXP = False if (-1 == native_platform.find("_xp")) else True platform = native_platform[0:-3] if isWindowsXP else native_platform apps_postfix = "build" + base.qt_dst_postfix() if ("" != config.option("branding")): apps_postfix += ("/" + config.option("branding")) apps_postfix += "/" apps_postfix += platform if isWindowsXP: apps_postfix += "/xp" core_build_dir = core_dir + "/build" if ("" != config.option("branding")): core_build_dir += ("/" + config.option("branding")) platform_postfix = platform + base.qt_dst_postfix() # x2t base.create_dir(root_dir + "/converter") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "kernel") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "UnicodeConverter") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "graphics") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "PdfWriter") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "PdfReader") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "DjVuFile") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "XpsFile") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "HtmlFile") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "HtmlRenderer") if ("ios" == platform): base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "x2t") else: base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir + "/converter", "x2t") # icu if (0 == platform.find("win")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/icudt58.dll", root_dir + "/converter/icudt58.dll") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/icuuc58.dll", root_dir + "/converter/icuuc58.dll") if (0 == platform.find("linux")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.so.58", root_dir + "/converter/libicudata.so.58") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.so.58", root_dir + "/converter/libicuuc.so.58") if (0 == platform.find("mac")): base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.58.dylib", root_dir + "/converter/libicudata.58.dylib") base.copy_file( core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.58.dylib", root_dir + "/converter/libicuuc.58.dylib") # doctrenderer if isWindowsXP: base.copy_lib(core_build_dir + "/lib/" + platform_postfix + "/xp", root_dir + "/converter", "doctrenderer") base.copy_files( core_dir + "/Common/3dParty/v8/v8_xp/" + platform + "/release/icudt*.dll", root_dir + "/converter/") else: base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir + "/converter", "doctrenderer") if (0 == platform.find("win")): base.copy_files( core_dir + "/Common/3dParty/v8/v8/out.gn/" + platform + "/release/icudt*.dat", root_dir + "/converter/") else: base.copy_file( core_dir + "/Common/3dParty/v8/v8/out.gn/" + platform + "/icudtl.dat", root_dir + "/converter/icudtl.dat") base.generate_doctrenderer_config( root_dir + "/converter/DoctRenderer.config", "../editors/", "desktop") base.copy_dir(git_dir + "/desktop-apps/common/converter/empty", root_dir + "/converter/empty") if (False == isWindowsXP) and (0 != platform.find("mac")) and ( 0 != platform.find("ios")): base.copy_exe(core_build_dir + "/lib/" + platform_postfix, root_dir, "HtmlFileInternal") # dictionaries base.create_dir(root_dir + "/dictionaries") base.copy_dir_content(git_dir + "/dictionaries", root_dir + "/dictionaries", "", ".git") base.copy_dir(git_dir + "/desktop-apps/common/package/fonts", root_dir + "/fonts") base.copy_file( git_dir + "/desktop-apps/common/package/license/3dparty/3DPARTYLICENSE", root_dir + "/3DPARTYLICENSE") # cef if not isWindowsXP: base.copy_files( core_dir + "/Common/3dParty/cef/" + platform + "/build/*", root_dir) else: base.copy_files( core_dir + "/Common/3dParty/cef/" + native_platform + "/build/*", root_dir) isUseQt = True if (0 == platform.find("mac")) or (0 == platform.find("ios")): isUseQt = False # libraries base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "hunspell") base.copy_lib(core_build_dir + "/lib/" + platform_postfix, root_dir, "ooxmlsignature") base.copy_lib( core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "ascdocumentscore") if (0 != platform.find("mac")): base.copy_lib( core_build_dir + "/lib/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "qtascdocumentscore") if (0 == platform.find("mac")): base.copy_dir( core_build_dir + "/bin/" + platform_postfix + "/editors_helper.app", root_dir + "/editors_helper.app") else: base.copy_exe( core_build_dir + "/bin/" + platform_postfix + ("/xp" if isWindowsXP else ""), root_dir, "editors_helper") if isUseQt: base.qt_copy_lib("Qt5Core", root_dir) base.qt_copy_lib("Qt5Gui", root_dir) base.qt_copy_lib("Qt5PrintSupport", root_dir) base.qt_copy_lib("Qt5Svg", root_dir) base.qt_copy_lib("Qt5Widgets", root_dir) base.qt_copy_lib("Qt5Multimedia", root_dir) base.qt_copy_lib("Qt5MultimediaWidgets", root_dir) base.qt_copy_lib("Qt5Network", root_dir) base.qt_copy_lib("Qt5OpenGL", root_dir) base.qt_copy_plugin("bearer", root_dir) base.qt_copy_plugin("iconengines", root_dir) base.qt_copy_plugin("imageformats", root_dir) base.qt_copy_plugin("platforms", root_dir) base.qt_copy_plugin("platforminputcontexts", root_dir) base.qt_copy_plugin("printsupport", root_dir) base.qt_copy_plugin("mediaservice", root_dir) base.qt_copy_plugin("playlistformats", root_dir) base.qt_copy_plugin("platformthemes", root_dir) base.qt_copy_plugin("xcbglintegrations", root_dir) base.qt_copy_plugin("styles", root_dir) if (0 == platform.find("linux")): base.qt_copy_lib("Qt5DBus", root_dir) base.qt_copy_lib("Qt5X11Extras", root_dir) base.qt_copy_lib("Qt5XcbQpa", root_dir) base.qt_copy_icu(root_dir) base.copy_files( base.get_env("QT_DEPLOY") + "/../lib/libqgsttools_p.so*", root_dir) if (0 == platform.find("win")): base.copy_file( git_dir + "/desktop-apps/win-linux/extras/projicons/" + apps_postfix + "/projicons.exe", root_dir + "/DesktopEditors.exe") base.copy_file( git_dir + "/desktop-apps/win-linux/" + apps_postfix + "/DesktopEditors.exe", root_dir + "/editors.exe") base.copy_file( git_dir + "/desktop-apps/win-linux/res/icons/desktopeditors.ico", root_dir + "/app.ico") elif (0 == platform.find("linux")): base.copy_file( git_dir + "/desktop-apps/win-linux/" + apps_postfix + "/DesktopEditors", root_dir + "/DesktopEditors") base.create_dir(root_dir + "/editors") base.copy_dir(base_dir + "/js/" + branding + "/desktop/sdkjs", root_dir + "/editors/sdkjs") base.copy_dir(base_dir + "/js/" + branding + "/desktop/web-apps", root_dir + "/editors/web-apps") base.copy_dir( git_dir + "/desktop-sdk/ChromiumBasedEditors/resources/local", root_dir + "/editors/sdkjs/common/Images/local") base.create_dir(root_dir + "/editors/sdkjs-plugins") base.copy_file(git_dir + "/sdkjs-plugins/LICENSE.txt", root_dir + "/editors/sdkjs-plugins/LICENSE.txt") base.copy_file(git_dir + "/sdkjs-plugins/README.md", root_dir + "/editors/sdkjs-plugins/README.md") base.copy_file(git_dir + "/sdkjs-plugins/plugins.css", root_dir + "/editors/sdkjs-plugins/plugins.css") base.copy_file(git_dir + "/sdkjs-plugins/pluginBase.js", root_dir + "/editors/sdkjs-plugins/pluginBase.js") base.copy_dir( git_dir + "/sdkjs-plugins/youtube", root_dir + "/editors/sdkjs-plugins/{38E022EA-AD92-45FC-B22B-49DF39746DB4}") base.copy_dir( git_dir + "/sdkjs-plugins/ocr", root_dir + "/editors/sdkjs-plugins/{440EBF13-9B19-4BD8-8621-05200E58140B}") base.copy_dir( git_dir + "/sdkjs-plugins/translate", root_dir + "/editors/sdkjs-plugins/{7327FC95-16DA-41D9-9AF2-0E7F449F687D}") base.copy_dir( git_dir + "/sdkjs-plugins/synonim", root_dir + "/editors/sdkjs-plugins/{BE5CBF95-C0AD-4842-B157-AC40FEDD9840}") base.copy_dir( git_dir + "/sdkjs-plugins/code", root_dir + "/editors/sdkjs-plugins/{BE5CBF95-C0AD-4842-B157-AC40FEDD9841}") base.copy_dir( git_dir + "/sdkjs-plugins/photoeditor", root_dir + "/editors/sdkjs-plugins/{07FD8DFA-DFE0-4089-AL24-0730933CC80A}") base.copy_dir( git_dir + "/sdkjs-plugins/macros", root_dir + "/editors/sdkjs-plugins/{E6978D28-0441-4BD7-8346-82FAD68BCA3B}") base.copy_dir( git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/{8D67F3C5-7736-4BAE-A0F2-8C7127DC4BB8}", root_dir + "/editors/sdkjs-plugins/{8D67F3C5-7736-4BAE-A0F2-8C7127DC4BB8}") #base.copy_dir(git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/encrypt/ui/common/{14A8FC87-8E26-4216-B34E-F27F053B2EC4}", root_dir + "/editors/sdkjs-plugins/{14A8FC87-8E26-4216-B34E-F27F053B2EC4}") #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}") if (0 != platform.find("mac")): base.copy_dir( git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/{060E6A7D-2766-44E8-A0EE-9A8CB9DB00D1}", root_dir + "/editors/sdkjs-plugins/{060E6A7D-2766-44E8-A0EE-9A8CB9DB00D1}" ) base.copy_dir( git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/{B509123E-6335-40BD-B965-91EB799346E3}", root_dir + "/editors/sdkjs-plugins/{B509123E-6335-40BD-B965-91EB799346E3}" ) base.copy_dir( git_dir + "/desktop-sdk/ChromiumBasedEditors/plugins/{F7E59EB4-317E-4E0B-AB2C-58E038A59EE2}", root_dir + "/editors/sdkjs-plugins/{F7E59EB4-317E-4E0B-AB2C-58E038A59EE2}" ) base.copy_file(base_dir + "/js/" + branding + "/desktop/index.html", root_dir + "/index.html") base.copy_file( git_dir + "/desktop-apps/common/loginpage/addon/externalcloud.json", root_dir + "/editors/externalcloud.json") if (0 == platform.find("win")): base.copy_lib( git_dir + "/desktop-apps/win-linux/3dparty/WinSparkle/" + platform, root_dir, "WinSparkle") base.delete_file(root_dir + "/cef_sandbox.lib") base.delete_file(root_dir + "/libcef.lib") # all themes generate ---- base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir + "/converter", "allfontsgen") base.copy_exe(core_build_dir + "/bin/" + platform_postfix, root_dir + "/converter", "allthemesgen") if (0 == platform.find("mac")): base.mac_correct_rpath_desktop(root_dir) 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.delete_exe(root_dir + "/converter/allfontsgen") base.delete_exe(root_dir + "/converter/allthemesgen") base.delete_file(root_dir + "/converter/AllFonts.js") base.delete_file(root_dir + "/converter/font_selection.bin") base.delete_file(root_dir + "/editors/sdkjs/slide/sdk-all.cache") return
def check_npmPath(): path = base.get_env('PATH') npmPath = os.environ['AppData'] + '\\npm' if (path.find(npmPath) == -1): base.set_env('PATH', npmPath + os.pathsep + path)
def make(): #check server module to build if (not config.check_option("module", "server")): return git_dir = base.get_script_dir() + "/../.." server_dir = base.get_script_dir() + "/../../server" branding_dir = server_dir + "/branding" if ("" != config.option("branding")): branding_dir = git_dir + '/' + config.option("branding") + '/server' base.cmd_in_dir(server_dir, "npm", ["install"]) base.cmd_in_dir(server_dir, "grunt", ["--no-color", "-v"] + base.server_addons_param()) #env variables product_version = base.get_env('PRODUCT_VERSION') if (not product_version): product_version = "0.0.0" build_number = base.get_env('BUILD_NUMBER') if (not build_number): build_number = "0" license_connections = base.get_env('LICENSE_CONNECTIONS') if (not license_connections): license_connections = "99999" cur_date = datetime.date.today().strftime("%m/%d/%Y") server_build_dir = server_dir + "/build/server" base.replaceInFileRE(server_build_dir + "/Common/sources/commondefines.js", "const buildNumber = [0-9]*", "const buildNumber = " + build_number) base.replaceInFileRE(server_build_dir + "/Common/sources/license.js", "const buildDate = '[0-9-/]*'", "const buildDate = '" + cur_date + "'") base.replaceInFileRE(server_build_dir + "/Common/sources/commondefines.js", "const buildVersion = '[0-9.]*'", "const buildVersion = '" + product_version + "'") base.replaceInFileRE( server_build_dir + "/Common/sources/constants.js", "exports.LICENSE_CONNECTIONS = '[0-9]*'", "exports.LICENSE_CONNECTIONS = '" + license_connections + "'") custom_public_key = branding_dir + '/debug.js' if (base.is_exist(custom_public_key)): base.copy_file(custom_public_key, server_build_dir + '/Common/sources') pkg_target = "node10" if ("linux" == base.host_platform()): pkg_target += "-linux" if ("windows" == base.host_platform()): pkg_target += "-win" base.cmd_in_dir(server_build_dir + "/DocService", "pkg", [ ".", "-t", pkg_target, "--options", "max_old_space_size=4096", "-o", "docservice" ]) base.cmd_in_dir(server_build_dir + "/FileConverter", "pkg", [".", "-t", pkg_target, "-o", "converter"]) base.cmd_in_dir(server_build_dir + "/Metrics", "pkg", [".", "-t", pkg_target, "-o", "metrics"]) base.cmd_in_dir(server_build_dir + "/SpellChecker", "pkg", [".", "-t", pkg_target, "-o", "spellchecker"]) example_dir = base.get_script_dir( ) + "/../../document-server-integration/web/documentserver-example/nodejs" base.delete_dir(example_dir + "/node_modules") base.cmd_in_dir(example_dir, "npm", ["install"]) sync_rpc_lib_dir = example_dir + "/node_modules/sync-rpc/lib" patch_file = base.get_script_dir() + "/../tools/linux/sync-rpc.patch" if ("linux" == base.host_platform()): base.cmd_in_dir(sync_rpc_lib_dir, "patch", ["-N", "-i", patch_file]) if ("windows" == base.host_platform()): patch_exe_dir = base.git_dir() + "/usr/bin" base.cmd_in_dir(patch_exe_dir, "patch.exe", ["-N", "-d", sync_rpc_lib_dir, "-i", patch_file]) base.cmd_in_dir(example_dir, "pkg", [".", "-t", pkg_target, "-o", "example"])
def make(packages): base_dir = base.get_script_dir() + "/../out" git_dir = base.get_script_dir() + "/../.." for package in packages: if -1 != package.find("diskimage"): macos_dir = os.path.abspath(git_dir + "/desktop-apps/macos") update_dir = macos_dir + "/build/update" changes_dir = macos_dir + "/ONLYOFFICE/update/updates/ONLYOFFICE/changes" if (package == "diskimage-x86_64"): lane = "release_x86_64" scheme = "ONLYOFFICE-x86_64" elif (package == "diskimage-v8-x86_64"): lane = "release_v8" scheme = "ONLYOFFICE-v8" elif (package == "diskimage-arm64"): lane = "release_arm" scheme = "ONLYOFFICE-arm" else: exit(1) print("Build package " + scheme) print("$ bundler exec fastlane " + lane + " skip_git_bump:true") base.cmd_in_dir(macos_dir, "bundler", ["exec", "fastlane", lane, "skip_git_bump:true"]) print("Build updates") app_version = base.run_command( "/usr/libexec/PlistBuddy -c 'print :CFBundleShortVersionString' " + macos_dir + "/build/ONLYOFFICE.app/Contents/Info.plist")['stdout'] zip_filename = scheme + "-" + app_version macos_zip = macos_dir + "/build/" + zip_filename + ".zip" update_storage_dir = base.get_env( "ARCHIVES_DIR") + "/" + scheme + "/_updates" base.create_dir(update_dir) base.copy_dir_content(update_storage_dir, update_dir, ".zip") base.copy_dir_content(update_storage_dir, update_dir, ".html") base.copy_file(macos_zip, update_dir) notes_src = changes_dir + "/" + app_version + "/ReleaseNotes.html" notes_dst = update_dir + "/" + zip_filename + ".html" cur_date = base.run_command( "LC_ALL=en_US.UTF-8 date -u \"+%B %e, %Y\"")['stdout'] if base.is_exist(notes_src): base.copy_file(notes_src, notes_dst) base.replaceInFileRE( notes_dst, r"(<span class=\"releasedate\">).+(</span>)", "\\1 - " + cur_date + "\\2") else: base.writeFile(notes_dst, "placeholder\n") notes_src = changes_dir + "/" + app_version + "/ReleaseNotesRU.html" notes_dst = update_dir + "/" + zip_filename + ".ru.html" cur_date = base.run_command( "LC_ALL=ru_RU.UTF-8 date -u \"+%e %B %Y\"")['stdout'] if base.is_exist(notes_src): base.copy_file(notes_src, notes_dst) base.replaceInFileRE( notes_dst, r"(<span class=\"releasedate\">).+(</span>)", "\\1 - " + cur_date + "\\2") else: base.writeFile(notes_dst, "placeholder\n") print("$ ./generate_appcast " + update_dir) base.cmd(macos_dir + "/Vendor/Sparkle/bin/generate_appcast", [update_dir]) print("Edit Sparkle appcast links") sparkle_base_url = "https://download.onlyoffice.com/install/desktop/editors/mac" if (package == "diskimage-x86_64"): sparkle_base_url += "/x86_64" elif (package == "diskimage-v8-x86_64"): sparkle_base_url += "/v8" elif (package == "diskimage-arm64"): sparkle_base_url += "/arm" base.replaceInFileRE( update_dir + "/onlyoffice.xml", r"(<sparkle:releaseNotesLink>)(?:.+ONLYOFFICE-(?:x86|x86_64|v8|arm)-([0-9.]+)\..+)(</sparkle:releaseNotesLink>)", "\\1" + sparkle_base_url + "/updates/changes/\\2/ReleaseNotes.html\\3") base.replaceInFileRE( update_dir + "/onlyoffice.xml", r"(<sparkle:releaseNotesLink xml:lang=\"ru\">)(?:ONLYOFFICE-(?:x86|x86_64|v8|arm)-([0-9.]+)\..+)(</sparkle:releaseNotesLink>)", "\\1" + sparkle_base_url + "/updates/changes/\\2/ReleaseNotesRU.html\\3") base.replaceInFileRE(update_dir + "/onlyoffice.xml", r"(url=\")(?:.+/)(ONLYOFFICE.+\")", "\\1" + sparkle_base_url + "/updates/\\2") print("Delete unnecessary files") for file in os.listdir(update_dir): if (-1 == file.find(app_version)) and (file.endswith(".zip") or file.endswith(".html")): base.delete_file(update_dir + "/" + file) return
def make_pro_file(makefiles_dir, pro_file): platforms = config.option("platform").split() for platform in platforms: if not platform in config.platforms: continue print("------------------------------------------") print("BUILD_PLATFORM: " + platform) print("------------------------------------------") old_env = os.environ.copy() # if you need change output libraries path - set the env variable # base.set_env("DESTDIR_BUILD_OVERRIDE", os.getcwd() + "/out/android/" + config.branding() + "/mobile") isAndroid = False if (-1 == platform.find("android")) else True if isAndroid: toolchain_platform = "linux-x86_64" if ("mac" == base.host_platform()): toolchain_platform = "darwin-x86_64" base.set_env("ANDROID_NDK_HOST", toolchain_platform) old_path = base.get_env("PATH") new_path = base.qt_setup(platform) + "/bin:" new_path += (base.get_env("ANDROID_NDK_ROOT") + "/toolchains/llvm/prebuilt/" + toolchain_platform + "/bin:") new_path += old_path base.set_env("PATH", new_path) if ("android_arm64_v8a" == platform): base.set_env("ANDROID_NDK_PLATFORM", "android-21") else: base.set_env("ANDROID_NDK_PLATFORM", "android-16") if (-1 != platform.find("ios")): base.hack_xcode_ios() # makefile suffix file_suff = platform if (config.check_option("config", "debug")): file_suff += "_debug_" file_suff += config.option("branding") # setup qt qt_dir = base.qt_setup(platform) base.set_env("OS_DEPLOY", platform) # qmake CONFIG+=... config_param = base.qt_config(platform) # qmake ADDON qmake_addon = [] if ("" != config.option("qmake_addon")): qmake_addon.append(config.option("qmake_addon")) if not base.is_file(qt_dir + "/bin/qmake") and not base.is_file( qt_dir + "/bin/qmake.exe"): print("THIS PLATFORM IS NOT SUPPORTED") continue # non windows platform if not base.is_windows(): if ("1" == config.option("clean")): base.cmd(base.app_make(), [ "clean", "-f", makefiles_dir + "/build.makefile_" + file_suff ], True) base.cmd(base.app_make(), [ "distclean", "-f", makefiles_dir + "/build.makefile_" + file_suff ], True) if base.is_file(makefiles_dir + "/build.makefile_" + file_suff): base.delete_file(makefiles_dir + "/build.makefile_" + file_suff) base.cmd(qt_dir + "/bin/qmake", ["-nocache", pro_file, "CONFIG+=" + config_param] + qmake_addon) base.cmd(base.app_make(), ["-f", makefiles_dir + "/build.makefile_" + file_suff]) else: qmake_bat = [] qmake_bat.append( "call \"" + config.option("vs-path") + "/vcvarsall.bat\" " + ("x86" if base.platform_is_32(platform) else "x64")) if ("1" == config.option("clean")): qmake_bat.append("call nmake clean -f " + makefiles_dir + "/build.makefile_" + file_suff) qmake_bat.append("call nmake distclean -f " + makefiles_dir + "/build.makefile_" + file_suff) qmake_addon_string = "" if ("" != config.option("qmake_addon")): qmake_addon_string = " \"" + config.option( "qmake_addon") + "\"" qmake_bat.append("if exist ./" + makefiles_dir + "/build.makefile_" + file_suff + " del /F ./" + makefiles_dir + "/build.makefile_" + file_suff) qmake_bat.append("call \"" + qt_dir + "/bin/qmake\" -nocache " + pro_file + " \"CONFIG+=" + config_param + "\"" + qmake_addon_string) qmake_bat.append("call nmake -f " + makefiles_dir + "/build.makefile_" + file_suff) base.run_as_bat(qmake_bat) os.environ = old_env.copy() base.delete_file(".qmake.stash")
def parse(): configfile = open(base.get_script_dir() + "/../config", "r") configOptions = {} for line in configfile: name, value = line.partition("=")[::2] k = name.strip() v = value.strip(" '\"\r\n") if ("true" == v.lower()): v = "1" if ("false" == v.lower()): v = "0" configOptions[k] = v os.environ["OO_" + k.upper().replace("-", "_")] = v # export options global options options = configOptions # all platforms global platforms platforms = ["win_64", "win_32", "win_64_xp", "win_32_xp", "linux_64", "linux_32", "mac_64", "mac_arm64", "ios", "android_arm64_v8a", "android_armv7", "android_x86", "android_x86_64"] # correction host_platform = base.host_platform() # platform if check_option("platform", "all"): if ("windows" == host_platform): options["platform"] += " win_64 win_32" elif ("linux" == host_platform): options["platform"] += " linux_64 linux_32" else: options["platform"] += " mac_64" if check_option("platform", "native"): bits = "32" if platform.machine().endswith('64'): bits = "64" if ("windows" == host_platform): options["platform"] += (" win_" + bits) elif ("linux" == host_platform): options["platform"] += (" linux_" + bits) else: options["platform"] += (" mac_" + bits) if ("mac" == host_platform) and check_option("platform", "mac_arm64") and (platform.machine() != "arm64"): if not check_option("platform", "mac_64"): options["platform"] = "mac_64 " + options["platform"] if check_option("platform", "xp") and ("windows" == host_platform): options["platform"] += " win_64_xp win_32_xp" if check_option("platform", "android"): options["platform"] += " android_arm64_v8a android_armv7 android_x86 android_x86_64" # check vs-path if ("windows" == host_platform): options["vs-path"] = base.get_env("ProgramFiles") + "/Microsoft Visual Studio 14.0/VC" if ("" != base.get_env("ProgramFiles(x86)")): options["vs-path"] = base.get_env("ProgramFiles(x86)") + "/Microsoft Visual Studio 14.0/VC" # check sdkjs-plugins if not "sdkjs-plugin" in options: options["sdkjs-plugin"] = "default" if not "sdkjs-plugin-server" in options: options["sdkjs-plugin-server"] = "default" return