Beispiel #1
0
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)
Beispiel #2
0
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
Beispiel #3
0
  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
Beispiel #5
0
  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)
Beispiel #7
0
 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"
     ]
Beispiel #8
0
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"])
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
 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)
Beispiel #13
0
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",
Beispiel #16
0
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(
Beispiel #17
0
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
Beispiel #19
0
 def setUp(self):
   super(NumberFieldTest, self).setUp()
   os.environ['REQUEST_METHOD'] = 'POST'
   local.request = Request(get_env())
Beispiel #20
0
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
Beispiel #21
0
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
Beispiel #22
0
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
Beispiel #23
0
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
Beispiel #25
0
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)
Beispiel #27
0
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)
Beispiel #29
0
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"])
Beispiel #30
0
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
Beispiel #31
0
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")
Beispiel #32
0
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