Beispiel #1
0
def clean():
    if base.is_dir("boost_1_58_0"):
        base.delete_dir_with_access_error("boost_1_58_0")
        base.delete_dir("boost_1_58_0")
    if base.is_dir("build"):
        base.delete_dir("build")
    return
Beispiel #2
0
def check_compiler(platform):
  compiler = {}
  compiler["compiler"] = option("compiler")
  compiler["compiler_64"] = compiler["compiler"] + "_64"

  if ("" != compiler["compiler"]):
    if ("ios" == platform):
      compiler["compiler_64"] = compiler["compiler"]
    return compiler

  if (0 == platform.find("win")):
    compiler["compiler"] = "msvc2015"
    compiler["compiler_64"] = "msvc2015_64"
  elif (0 == platform.find("linux")):
    compiler["compiler"] = "gcc"
    compiler["compiler_64"] = "gcc_64"
  elif (0 == platform.find("mac")):
    compiler["compiler"] = "clang"
    compiler["compiler_64"] = "clang_64"
  elif ("ios" == platform):
    compiler["compiler"] = "ios"
    compiler["compiler_64"] = "ios"
  elif (0 == platform.find("android")):
    compiler["compiler"] = platform
    compiler["compiler_64"] = platform

  if base.host_platform() == "mac":
    if not base.is_dir(options["qt-dir"] + "/" + compiler["compiler_64"]):
      if base.is_dir(options["qt-dir"] + "/macos"):
        compiler["compiler"] = "macos"
        compiler["compiler_64"] = "macos"

  return compiler
Beispiel #3
0
def correct_install_includes_win(base_dir, platform):
    build_dir = base_dir + "/build/" + platform + "/include"
    if base.is_dir(build_dir +
                   "/boost-1_72") and base.is_dir(build_dir +
                                                  "/boost-1_72/boost"):
        base.copy_dir(build_dir + "/boost-1_72/boost", build_dir + "/boost")
        base.delete_dir(build_dir + "/boost-1_72")
    return
Beispiel #4
0
def clean():
    if base.is_dir("depot_tools"):
        base.delete_dir_with_access_error("depot_tools")
        base.delete_dir("depot_tools")
    if base.is_dir("v8"):
        base.delete_dir_with_access_error("v8")
        base.delete_dir("v8")
    if base.is_exist("./.gclient"):
        base.delete_file("./.gclient")
    if base.is_exist("./.gclient_entries"):
        base.delete_file("./.gclient_entries")
    if base.is_exist("./.cipd"):
        base.delete_dir("./.cipd")
    return
Beispiel #5
0
def install_qt():
    # qt
    if not base.is_file("./qt_source_5.9.9.tar.xz"):
        base.download(
            "https://download.qt.io/archive/qt/5.9/5.9.9/single/qt-everywhere-opensource-src-5.9.9.tar.xz",
            "./qt_source_5.9.9.tar.xz")

    if not base.is_dir("./qt-everywhere-opensource-src-5.9.9"):
        base.cmd("tar", ["-xf", "./qt_source_5.9.9.tar.xz"])

    qt_params = [
        "-opensource", "-confirm-license", "-release", "-shared",
        "-accessibility", "-prefix", "./../qt_build/Qt-5.9.9/gcc_64",
        "-qt-zlib", "-qt-libpng", "-qt-libjpeg", "-qt-xcb", "-qt-pcre",
        "-no-sql-sqlite", "-no-qml-debug", "-gstreamer", "1.0", "-nomake",
        "examples", "-nomake", "tests", "-skip", "qtenginio", "-skip",
        "qtlocation", "-skip", "qtserialport", "-skip", "qtsensors", "-skip",
        "qtxmlpatterns", "-skip", "qt3d", "-skip", "qtwebview", "-skip",
        "qtwebengine"
    ]

    base.cmd_in_dir("./qt-everywhere-opensource-src-5.9.9", "./configure",
                    qt_params)
    base.cmd_in_dir("./qt-everywhere-opensource-src-5.9.9", "make",
                    ["-j", "4"])
    base.cmd_in_dir("./qt-everywhere-opensource-src-5.9.9", "make",
                    ["install"])
    return
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 #7
0
def make():
    path = base.get_script_dir() + "/../../core/Common/3dParty/openssl"
    old_cur = os.getcwd()
    os.chdir(path)
    base.set_env("ANDROID_HOME", base.get_android_sdk_home())

    if (-1 != config.option("platform").find("android")
            and not base.is_dir("./build/android")):
        subprocess.call(["./build-android-openssl.sh"])

    if (-1 != config.option("platform").find("ios")
            and not base.is_dir("./build/ios")):
        subprocess.call(["./build-ios-openssl.sh"])

    os.chdir(old_cur)
    return
def check_mysqlServer():
    base.print_info('Check MySQL Server')

    dependence = CDependencies()
    arrInfo = get_mysqlServersInfo()

    for info in arrInfo:
        if (base.is_dir(info['Location']) == False):
            continue

        mysqlLoginSrt = get_mysqlLoginSrting(info['Location'])
        mysql_full_name = 'MySQL Server ' + info['Version'] + ' '

        connectionResult = base.run_command(
            mysqlLoginSrt + ' -e "SHOW GLOBAL VARIABLES LIKE ' + r"'PORT';" +
            '"')['stdout']
        if (connectionResult.find('port') != -1 and connectionResult.find(
                install_params['MySQLServer']['port']) != -1):
            print(mysql_full_name + 'configuration is valid')
            dependence.mysqlPath = info['Location']
            return dependence
        print(mysql_full_name + 'configuration is not valid')

    print('Valid MySQL Server not found')

    dependence.append_uninstall('MySQL Installer')
    dependence.append_uninstall('MySQL Server')
    dependence.append_install('MySQLInstaller')
    dependence.append_install('MySQLServer')

    dependence.append_removepath(os.environ['ProgramData'] + '\\MySQL\\')

    return dependence
Beispiel #9
0
def build_arch(platform, arch, params, is_debug=False):
    print("ixwebsocket build: " + platform + "....." + arch +
          " ----------------------------------------")

    if base.is_dir(current_dir + "/IXWebSocket/build/" + platform + "/" +
                   arch):
        base.delete_dir(current_dir + "/IXWebSocket/build/" + platform + "/" +
                        arch)
    base.create_dir(current_dir + "/IXWebSocket/build/" + platform + "/" +
                    arch)
    cache_dir = current_dir + "/IXWebSocket/build/" + platform + "/cache"
    base.create_dir(cache_dir)
    os.chdir(cache_dir)

    libext = "a"
    prefix = "/"
    zlib = "1"
    if (0 == platform.find("windows")):
        zlib = "0"
        libext = "lib"
        prefix = cache_dir + "/../" + arch

    path = platform
    if (platform == "ios" or platform == "android"):
        path += "/"
    else:
        path = ""

    base.cmd(CMAKE, [
        "../../..", "-DUSE_WS=0", "-DUSE_ZLIB=" + zlib, "-DUSE_TLS=1",
        "-DUSE_OPEN_SSL=1", "-DOPENSSL_ROOT_DIR=" + cache_dir +
        "/../../../../../openssl/build/" + path + arch,
        "-DOPENSSL_INCLUDE_DIR=" + cache_dir + "/../../../../../openssl/build/"
        + path + arch + "/include", "-DOPENSSL_CRYPTO_LIBRARY=" + cache_dir +
        "/../../../../../openssl/build/" + path + arch + "/lib/libcrypto." +
        libext, "-DOPENSSL_SSL_LIBRARY=" + cache_dir +
        "/../../../../../openssl/build/" + path + arch + "/lib/libssl." +
        libext, "-DCMAKE_INSTALL_PREFIX:PATH=" + prefix
    ] + params)

    if (-1 != platform.find("ios") or -1 != platform.find("mac")):
        base.cmd(CMAKE, ["--build", ".", "--config", "Release"])
        base.cmd(CMAKE, [
            "--install", ".", "--config", "Release", "--prefix",
            cache_dir + "/../" + arch
        ])
    elif (-1 != platform.find("android") or -1 != platform.find("linux")):
        base.cmd("make", ["-j4"])
        base.cmd("make", ["DESTDIR=" + cache_dir + "/../" + arch, "install"])
    elif (-1 != platform.find("windows")):
        conf = "Debug" if is_debug else "Release"
        base.cmd(CMAKE,
                 ["--build", ".", "--target", "install", "--config", conf])

    base.delete_dir(cache_dir)
    os.chdir(current_dir)

    return
Beispiel #10
0
def make():
    path = base.get_script_dir() + "/../../core/Common/3dParty/curl"
    old_cur = os.getcwd()
    os.chdir(path)
    if (-1 != config.option("platform").find("android")):
        if base.is_dir(path + "/build/android"):
            os.chdir(old_cur)
            return
        subprocess.call(["./build-android-curl.sh"])

    elif (-1 != config.option("platform").find("ios")):
        if base.is_dir(path + "/build/ios"):
            os.chdir(old_cur)
            return
        subprocess.call(["./build-ios-curl.sh"])

    os.chdir(old_cur)
    return
Beispiel #11
0
def make():
    if (-1 == config.option("platform").find("mac")
            and -1 == config.option("platform").find("ios")):
        return

    current_dir_old = os.getcwd()

    print("[build]: socketrocket")
    os.chdir(current_dir)

    if (-1 != config.option("platform").find("mac")):
        if not base.is_dir(current_dir + "/build/mac_64") or not base.is_dir(
                current_dir + "/build/mac_arm_64"):
            buildMacOS()
    elif (-1 != config.option("platform").find("ios")):
        if not base.is_dir(current_dir + "/build/ios"):
            buildIOS()
    os.chdir(current_dir_old)
    return
Beispiel #12
0
def check_mysqlServer():
    base.print_info('Check MySQL Server')
    dependence = CDependencies()
    mysqlLoginSrt = get_mysqlLoginSrting()
    connectionString = mysqlLoginSrt + ' -e "SHOW GLOBAL VARIABLES LIKE ' + r"'PORT';" + '"'

    if (host_platform != 'windows'):
        result = os.system(mysqlLoginSrt + ' -e "exit"')
        if (result == 0):
            connectionResult = base.run_command(connectionString)['stdout']
            if (connectionResult.find('port') != -1 and connectionResult.find(
                    install_params['MySQLServer']['port']) != -1):
                print('MySQL configuration is valid')
                dependence.sqlPath = 'mysql'
                return dependence
        print('Valid MySQL Server not found')
        dependence.append_install('MySQLServer')
        dependence.append_uninstall('mysql-server')
        return dependence

    arrInfo = get_mysqlServersInfo()
    for info in arrInfo:
        if (base.is_dir(info['Location']) == False):
            continue

        mysql_full_name = 'MySQL Server ' + info['Version'] + ' '

        connectionResult = base.run_command_in_dir(
            get_mysql_path_to_bin(info['Location']),
            connectionString)['stdout']
        if (connectionResult.find('port') != -1 and connectionResult.find(
                install_params['MySQLServer']['port']) != -1):
            print(mysql_full_name + 'configuration is valid')
            dependence.sqlPath = info['Location']
            return dependence
        print(mysql_full_name + 'configuration is not valid')

    print('Valid MySQL Server not found')
    dependence.append_uninstall('MySQL Server')
    dependence.append_uninstall('MySQL Installer')
    dependence.append_install('MySQLInstaller')
    dependence.append_install('MySQLServer')

    MySQLData = os.environ['ProgramData'] + '\\MySQL\\'
    if base.is_exist(MySQLData) == False:
        return dependence

    dir = os.listdir(MySQLData)
    for path in dir:
        if (path.find('MySQL Server') != -1) and (base.is_file(MySQLData +
                                                               path) == False):
            dependence.append_removepath(MySQLData + path)

    return dependence
Beispiel #13
0
def check_postgreSQL():
    base.print_info('Check PostgreSQL')

    dependence = CDependencies()

    postgreLoginSrt = get_postgreLoginSrting(
        install_params['PostgreSQL']['root'])
    connectionString = postgreLoginSrt + ' -c "SELECT setting FROM pg_settings WHERE name = ' + "'port'" + ';"'

    if (host_platform == 'linux'):
        result = os.system(postgreLoginSrt + ' -c "\q"')
        connectionResult = base.run_command(connectionString)['stdout']

        if (result != 0 or connectionResult.find(
                install_params['PostgreSQL']['dbPort']) == -1):
            print('Valid PostgreSQL not found!')
            dependence.append_install('PostgreSQL')
            dependence.append_uninstall('PostgreSQL')
        else:
            print('PostreSQL is installed')
            dependence.sqlPath = 'psql'
        return dependence

    arrInfo = get_postgreSQLInfo()
    base.set_env('PGPASSWORD', install_params['PostgreSQL']['dbPass'])
    for info in arrInfo:
        if (base.is_dir(info['Location']) == False):
            continue

        postgre_full_name = 'PostgreSQL ' + info['Version'][:2] + ' '
        connectionResult = base.run_command_in_dir(
            get_postrgre_path_to_bin(info['Location']),
            connectionString)['stdout']

        if (connectionResult.find(install_params['PostgreSQL']['dbPort']) !=
                -1):
            print(postgre_full_name + 'configuration is valid')
            dependence.sqlPath = info['Location']
            return dependence
        print(postgre_full_name + 'configuration is not valid')

    print('Valid PostgreSQL not found')

    dependence.append_uninstall('PostgreSQL')
    dependence.append_install('PostgreSQL')

    for info in arrInfo:
        dependence.append_removepath(info['DataLocation'])

    return dependence
Beispiel #14
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 #15
0
def make():
    if ("windows" != base.host_platform()):
        return

    if not config.check_option("module", "mobile"):
        return

    print("[fetch & build]: glew")
    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/glew"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    base.common_check_version("glew", "1", clean)

    if not base.is_dir("glew-2.1.0"):
        base.download(
            "https://deac-ams.dl.sourceforge.net/project/glew/glew/2.1.0/glew-2.1.0-win32.zip",
            "./archive.zip")
        base.extract("./archive.zip", "./")
        base.delete_file("./archive.zip")

    os.chdir(old_cur)
    return
Beispiel #16
0
def make():
    if ("windows" == base.host_platform()
            or "ios" == config.option("platform")):
        return

    print("[fetch & build]: openssl")

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/openssl"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    base.common_check_version("openssl", "1", clean)

    if not base.is_dir("openssl"):
        base.cmd("git", [
            "clone", "--depth=1", "--branch", "OpenSSL_1_1_1f",
            "https://github.com/openssl/openssl.git"
        ])

    os.chdir(base_dir + "/openssl")
    if not base.is_file("Makefile"):
        base.cmd("./config", ["no-shared", "no-asm"])

    if base.is_file("./libssl.a") and base.is_file("./libcrypto.a"):
        os.chdir(old_cur)
        return

    if ("linux" == base.host_platform()):
        base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3",
                           "CFLAGS=-Wall -O3 -fvisibility=hidden")
        base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3",
                           "CXXFLAGS=-Wall -O3 -fvisibility=hidden")

    base.cmd("make", ["build_libs"])

    os.chdir(old_cur)
    return
Beispiel #17
0
def make():
  base_dir = base.get_script_dir() + "/../out"
  git_dir = base.get_script_dir() + "/../.."
  core_dir = git_dir + "/core"
  plugins_dir = git_dir + "/sdkjs-plugins"
  branding = config.branding()

  platforms = config.option("platform").split()
  for native_platform in platforms:
    if not native_platform in config.platforms:
      continue

    if (-1 != native_platform.find("_xp")):
      print("Server module not supported on Windows XP")
      continue

    if (-1 != native_platform.find("ios")):
      print("Server module not supported on iOS")
      continue

    if (-1 != native_platform.find("android")):
      print("Server module not supported on Android")
      continue

    root_dir = base_dir + ("/" + native_platform + "/" + branding + "/documentserver")
    root_dir_snap = root_dir + '-snap'
    if (base.is_dir(root_dir)):
      base.delete_dir(root_dir)
    base.create_dir(root_dir)

    build_server_dir = root_dir + '/server'
    server_dir = base.get_script_dir() + "/../../server"
    bin_server_dir = server_dir + "/build/server"

    base.create_dir(build_server_dir + '/DocService')

    base.copy_dir(bin_server_dir + '/Common/config', build_server_dir + '/Common/config')

    base.create_dir(build_server_dir + '/DocService')
    base.copy_exe(bin_server_dir + "/DocService", build_server_dir + '/DocService', "docservice")

    base.create_dir(build_server_dir + '/FileConverter')
    base.copy_exe(bin_server_dir + "/FileConverter", build_server_dir + '/FileConverter', "converter")

    base.create_dir(build_server_dir + '/Metrics')
    base.copy_exe(bin_server_dir + "/Metrics", build_server_dir + '/Metrics', "metrics")
    base.copy_dir(bin_server_dir + '/Metrics/config', build_server_dir + '/Metrics/config')
    base.create_dir(build_server_dir + '/Metrics/node_modules/modern-syslog/build/Release')
    base.copy_file(bin_server_dir + "/Metrics/node_modules/modern-syslog/build/Release/core.node", build_server_dir + "/Metrics/node_modules/modern-syslog/build/Release/core.node")

    base.create_dir(build_server_dir + '/SpellChecker')
    base.copy_exe(bin_server_dir + "/SpellChecker", build_server_dir + '/SpellChecker', "spellchecker")
    base.create_dir(build_server_dir + '/SpellChecker/node_modules/nodehun/build/Release')
    base.copy_file(bin_server_dir + "/SpellChecker/node_modules/nodehun/build/Release/nodehun.node", build_server_dir + '/SpellChecker/node_modules/nodehun/build/Release/nodehun.node')
    

    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()

    converter_dir = root_dir + "/server/FileConverter/bin"
    base.create_dir(converter_dir)

    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "kernel")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "UnicodeConverter")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "graphics")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "PdfWriter")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "PdfReader")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "DjVuFile")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "XpsFile")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "HtmlFile2")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "HtmlRenderer")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "doctrenderer")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "Fb2File")
    base.copy_lib(core_build_dir + "/lib/" + platform_postfix, converter_dir, "EpubFile")
    base.copy_exe(core_build_dir + "/bin/" + platform_postfix, converter_dir, "x2t")

    base.generate_doctrenderer_config(converter_dir + "/DoctRenderer.config", "../../../", "server")

    # icu
    if (0 == platform.find("win")):
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/icudt58.dll", converter_dir + "/icudt58.dll")
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/icuuc58.dll", converter_dir + "/icuuc58.dll")

    if (0 == platform.find("linux")):
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.so.58", converter_dir + "/libicudata.so.58")
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.so.58", converter_dir + "/libicuuc.so.58")

    if (0 == platform.find("mac")):
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicudata.58.dylib", converter_dir + "/libicudata.58.dylib")
      base.copy_file(core_dir + "/Common/3dParty/icu/" + platform + "/build/libicuuc.58.dylib", converter_dir + "/libicuuc.58.dylib")

    if (0 == platform.find("win")):
      base.copy_files(core_dir + "/Common/3dParty/v8/v8/out.gn/" + platform + "/release/icudt*.dat", converter_dir + "/")
    else:
      base.copy_file(core_dir + "/Common/3dParty/v8/v8/out.gn/" + platform + "/icudtl.dat", converter_dir + "/icudtl.dat")

    # builder
    base.copy_exe(core_build_dir + "/bin/" + platform_postfix, converter_dir, "docbuilder")
    base.copy_dir(git_dir + "/DocumentBuilder/empty", converter_dir + "/empty")

    # js
    js_dir = root_dir
    base.copy_dir(base_dir + "/js/" + branding + "/builder/sdkjs", js_dir + "/sdkjs")
    base.copy_dir(base_dir + "/js/" + branding + "/builder/web-apps", js_dir + "/web-apps")
    
    # plugins
    base.create_dir(js_dir + "/sdkjs-plugins")
    base.copy_sdkjs_plugins(js_dir + "/sdkjs-plugins", False, True)
    base.copy_sdkjs_plugins_server(js_dir + "/sdkjs-plugins", False, True)
    base.create_dir(js_dir + "/sdkjs-plugins/v1")
    base.download("https://onlyoffice.github.io/sdkjs-plugins/v1/plugins.js", js_dir + "/sdkjs-plugins/v1/plugins.js")
    base.download("https://onlyoffice.github.io/sdkjs-plugins/v1/plugins-ui.js", js_dir + "/sdkjs-plugins/v1/plugins-ui.js")
    base.download("https://onlyoffice.github.io/sdkjs-plugins/v1/plugins.css", js_dir + "/sdkjs-plugins/v1/plugins.css")
    base.support_old_versions_plugins(js_dir + "/sdkjs-plugins")
    
    # tools
    tools_dir = root_dir + "/server/tools"
    base.create_dir(tools_dir)
    base.copy_exe(core_build_dir + "/bin/" + platform_postfix, tools_dir, "allfontsgen")
    base.copy_exe(core_build_dir + "/bin/" + platform_postfix, tools_dir, "allthemesgen")

    branding_dir = server_dir + "/branding"
    if("" != config.option("branding") and "onlyoffice" != config.option("branding")):
      branding_dir = git_dir + '/' + config.option("branding") + '/server'

    #dictionaries
    spellchecker_dictionaries = build_server_dir + '/SpellChecker/dictionaries'
    spellchecker_dictionaries_files = server_dir + '/../dictionaries/*_*'
    base.create_dir(spellchecker_dictionaries)
    base.copy_files(spellchecker_dictionaries_files, spellchecker_dictionaries)

    if (0 == platform.find("win")):
      exec_ext = '.exe'
    else:
      exec_ext = ''

    #schema
    schema_files = server_dir + '/schema'
    schema = build_server_dir + '/schema'
    base.create_dir(schema)
    base.copy_dir(schema_files, schema)

    #core-fonts
    core_fonts_files = server_dir + '/../core-fonts'
    core_fonts = build_server_dir + '/../core-fonts'
    base.create_dir(core_fonts)
    base.copy_dir_content(core_fonts_files, core_fonts, "", ".git")

    #license
    license_file1 = server_dir + '/LICENSE.txt'
    license_file2 = server_dir + '/3rd-Party.txt'
    license_dir = server_dir + '/license'
    license = build_server_dir + '/license'
    base.copy_file(license_file1, build_server_dir)
    base.copy_file(license_file2, build_server_dir)
    base.copy_dir(license_dir, license)

    #branding
    welcome_files = branding_dir + '/welcome'
    welcome = build_server_dir + '/welcome'
    base.create_dir(welcome)
    base.copy_dir(welcome_files, welcome)

    info_files = branding_dir + '/info'
    info = build_server_dir + '/info'
    base.create_dir(info)
    base.copy_dir(info_files, info)

    # example
    build_example_dir = root_dir + '-example'
    bin_example_dir = base.get_script_dir() + "/../../document-server-integration/web/documentserver-example/nodejs"

    base.create_dir(build_example_dir)
    base.copy_exe(bin_example_dir, build_example_dir, "example")
    base.copy_dir(bin_example_dir + "/config", build_example_dir + "/config")

    # snap
    if (0 == platform.find("linux")):
      base.create_dir(root_dir_snap)
      base.copy_dir(root_dir, root_dir_snap)
      base.copy_dir(bin_server_dir + '/DocService/node_modules', root_dir_snap + '/server/DocService/node_modules')
      base.copy_dir(bin_server_dir + '/DocService/sources', root_dir_snap + '/server/DocService/sources')
      base.copy_dir(bin_server_dir + '/DocService/public', root_dir_snap + '/server/DocService/public')
      base.delete_file(root_dir_snap + '/server/DocService/docservice')
      base.copy_dir(bin_server_dir + '/FileConverter/node_modules', root_dir_snap + '/server/FileConverter/node_modules')
      base.copy_dir(bin_server_dir + '/FileConverter/sources', root_dir_snap + '/server/FileConverter/sources')
      base.delete_file(root_dir_snap + '/server/FileConverter/converter')
      base.copy_dir(bin_server_dir + '/SpellChecker/node_modules', root_dir_snap + '/server/SpellChecker/node_modules')
      base.copy_dir(bin_server_dir + '/SpellChecker/sources', root_dir_snap + '/server/SpellChecker/sources')
      base.delete_file(root_dir_snap + '/server/SpellChecker/spellchecker')
      base.copy_dir(bin_server_dir + '/Common/node_modules', root_dir_snap + '/server/Common/node_modules')
      base.copy_dir(bin_server_dir + '/Common/sources', root_dir_snap + '/server/Common/sources')

  return
Beispiel #18
0
def make():
  print("[fetch & build]: cef")

  base_dir = base.get_script_dir() + "/../../core/Common/3dParty/cef"
  old_cur = os.getcwd()
  os.chdir(base_dir)

  platforms = ["win_64", "win_32", "win_64_xp", "win_32_xp", "linux_64", "linux_32", "mac_64"]

  url = "http://d2ettrnqo7v976.cloudfront.net/cef/3770/"

  for platform in platforms:
    if not config.check_option("platform", platform):
      continue

    url += (platform + "/cef_binary.7z")

    if not base.is_dir(platform):
      base.create_dir(platform)

    os.chdir(platform)

    data_url = base.get_file_last_modified_url(url)
    old_data_url = base.readFile("./cef_binary.7z.data")

    if (data_url != old_data_url):
      if base.is_file("./cef_binary.7z"):
        base.delete_file("./cef_binary.7z")
      if base.is_dir("build"):
        base.delete_dir("build")

    if base.is_dir("build"):
      continue

    # download
    if not base.is_file("./cef_binary.7z"):
      base.download(url, "./cef_binary.7z")

    # extract
    base.extract("./cef_binary.7z", "./")

    base.delete_file("./cef_binary.7z.data")
    base.writeFile("./cef_binary.7z.data", data_url)

    base.create_dir("./build")

    # deploy
    if ("mac_64" != platform):
      base.copy_files("cef_binary/Release/*", "build/")
      base.copy_files("cef_binary/Resources/*", "build/")

    if (0 == platform.find("linux")):
      base.cmd("chmod", ["a+xr", "build/locales"])

    if ("mac_64" == platform):
      base.cmd("mv", ["Chromium Embedded Framework.framework", "build/Chromium Embedded Framework.framework"])

    os.chdir(base_dir)

  os.chdir(old_cur)
  return
Beispiel #19
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
Beispiel #20
0
    ]

    base.cmd_in_dir("./qt-everywhere-opensource-src-5.9.9", "./configure",
                    qt_params)
    base.cmd_in_dir("./qt-everywhere-opensource-src-5.9.9", "make",
                    ["-j", "4"])
    base.cmd_in_dir("./qt-everywhere-opensource-src-5.9.9", "make",
                    ["install"])
    return


if not base.is_file("./node_js_setup_10.x"):
    print("install dependencies...")
    install_deps()

if not base.is_dir("./qt_build"):
    print("install qt...")
    install_qt()

branch = get_branch_name("../..")

array_args = sys.argv[1:]
array_modules = []

config = {}
for arg in array_args:
    if (0 == arg.find("--")):
        indexEq = arg.find("=")
        if (-1 != indexEq):
            config[arg[2:indexEq]] = arg[indexEq + 1:]
    else:
Beispiel #21
0
def make():
    print("[fetch & build]: boost")

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/boost"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    # download
    #url = "https://downloads.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.7z"
    #if not base.is_file("boost_1_58_0.7z"):
    #  base.download("https://downloads.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.7z", "boost_1_58_0.7z")
    #if not base.is_dir("boost_1_58_0"):
    #  base.extract("boost_1_58_0.7z", "./")

    base.common_check_version("boost", "5", clean)

    if not base.is_dir("boost_1_72_0"):
        base.cmd("git", [
            "clone", "--recursive", "--depth=1",
            "https://github.com/boostorg/boost.git", "boost_1_72_0", "-b"
            "boost-1.72.0"
        ])

    os.chdir("boost_1_72_0")

    # build
    if ("windows" == base.host_platform()):
        win_toolset = "msvc-14.0"
        if (-1 != config.option("platform").find("win_64")
            ) and not base.is_dir("../build/win_64"):
            base.cmd("bootstrap.bat")
            base.cmd("b2.exe", ["headers"])
            base.cmd("b2.exe", ["--clean"])
            base.cmd("b2.exe", [
                "--prefix=./../build/win_64", "link=static",
                "--with-filesystem", "--with-system", "--with-date_time",
                "--with-regex", "--toolset=" + win_toolset, "address-model=64",
                "install"
            ])
        if (-1 != config.option("platform").find("win_32")
            ) and not base.is_dir("../build/win_32"):
            base.cmd("bootstrap.bat")
            base.cmd("b2.exe", ["headers"])
            base.cmd("b2.exe", ["--clean"])
            base.cmd("b2.exe", [
                "--prefix=./../build/win_32", "link=static",
                "--with-filesystem", "--with-system", "--with-date_time",
                "--with-regex", "--toolset=" + win_toolset, "address-model=32",
                "install"
            ])
        correct_install_includes_win(base_dir, "win_64")
        correct_install_includes_win(base_dir, "win_32")

    if (-1 != config.option("platform").find("linux")
        ) and not base.is_dir("../build/linux_64"):
        base.cmd("./bootstrap.sh",
                 ["--with-libraries=filesystem,system,date_time,regex"])
        base.cmd("./b2", ["headers"])
        base.cmd("./b2", ["--clean"])
        base.cmd("./b2", [
            "--prefix=./../build/linux_64", "link=static", "cxxflags=-fPIC",
            "install"
        ])
        # TODO: support x86

    if (-1 != config.option("platform").find("mac")
        ) and not base.is_dir("../build/mac_64"):
        clang_correct()
        base.cmd("./bootstrap.sh",
                 ["--with-libraries=filesystem,system,date_time,regex"])
        base.cmd("./b2", ["headers"])
        base.cmd("./b2", ["--clean"])
        base.cmd("./b2",
                 ["--prefix=./../build/mac_64", "link=static", "install"])

    if (-1 != config.option("platform").find("ios")
        ) and not base.is_dir("../build/ios"):
        clang_correct()
        os.chdir("../")
        base.bash("./boost_ios")

    if (-1 != config.option("platform").find("android")):
        platforms = config.option("platform").split()
        for platform in platforms:
            if not platform in config.platforms:
                continue
            if (0 != platform.find("android")):
                continue
            if (base.is_dir("../build/" + platform)):
                continue
            boost_android.make(platform[8:])

    os.chdir(old_cur)
    return
Beispiel #22
0
def make():
  print("[fetch & build]: v8")

  base_dir = base.get_script_dir() + "/../../core/Common/3dParty/v8"
  old_cur = os.getcwd()
  os.chdir(base_dir)

  if ("windows" == base.host_platform()):
    base.set_env("DEPOT_TOOLS_WIN_TOOLCHAIN", "0")
    base.set_env("GYP_MSVS_VERSION", "2015")

  if not base.is_dir("depot_tools"):
    base.cmd("git", ["clone", "https://chromium.googlesource.com/chromium/tools/depot_tools.git"])
  else:
    os.chdir(base_dir + "/depot_tools")
    base.cmd("git", ["reset", "--hard"])
    os.chdir(base_dir)

  os.environ["PATH"] = base_dir + "/depot_tools" + os.pathsep + os.environ["PATH"]

  if not base.is_dir("v8/out.gn"):
    base.delete_file("./.gclient")
    base.delete_file("./.gclient_entries")
    base.delete_dir("./.cipd")
    base.cmd("gclient")

  # --------------------------------------------------------------------------
  # fetch
  if not base.is_dir("v8"):
    base.cmd("./depot_tools/fetch", ["v8"], True)
    os.chdir(base_dir + "/v8")
    base.cmd("git", ["checkout", "-b", "6.0", "branch-heads/6.0"], True)
    os.chdir(base_dir)

  # --------------------------------------------------------------------------
  # correct
  if not base.is_dir("v8/out.gn"):
    base.cmd("gclient", ["sync"], True)

    if ("linux" == base.host_platform()):
      if base.is_dir("v8/third_party/binutils/Linux_x64/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_x64/Release")
      if base.is_dir("v8/third_party/binutils/Linux_ia32/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_ia32/Release")

      base.cmd("gclient", ["sync", "--no-history"])

      if base.is_dir("v8/third_party/binutils/Linux_x64/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_x64/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_x64/Release/bin/" + name, "v8/third_party/binutils/Linux_x64/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_x64/Release/bin/" + name])

      if base.is_dir("v8/third_party/binutils/Linux_ia32/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_ia32/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_ia32/Release/bin/" + name, "v8/third_party/binutils/Linux_ia32/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_ia32/Release/bin/" + name])

    if ("windows" == base.host_platform()):
      base.replaceInFile("v8/build/config/win/BUILD.gn", ":static_crt", ":dynamic_crt")
    if ("mac" == base.host_platform()):
      base.replaceInFile("v8/build/config/mac/mac_sdk.gni", "if (mac_sdk_version != mac_sdk_min_build_override", "if (false && mac_sdk_version != mac_sdk_min_build_override")  

  # --------------------------------------------------------------------------
  # build
  os.chdir("v8")

  base_args64 = "target_cpu=\\\"x64\\\" v8_target_cpu=\\\"x64\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"
  base_args32 = "target_cpu=\\\"x86\\\" v8_target_cpu=\\\"x86\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"

  if config.check_option("platform", "linux_64"):
    base.cmd2("gn", ["gen", "out.gn/linux_64", "--args=\"is_debug=false " + base_args64 + " is_clang=false use_sysroot=false\""])
    base.cmd("ninja", ["-C", "out.gn/linux_64"])

  if config.check_option("platform", "linux_32"):
    base.cmd2("gn", ["gen", "out.gn/linux_32", "--args=\"is_debug=false " + base_args32 + " is_clang=false use_sysroot=false\""])
    base.cmd("ninja", ["-C", "out.gn/linux_32"])

  if config.check_option("platform", "mac_64"):
    base.cmd2("gn", ["gen", "out.gn/mac_64", "--args=\"is_debug=false " + base_args64 + "\""])
    base.cmd("ninja", ["-C", "out.gn/mac_64"])

  if config.check_option("platform", "win_64"):
    if (-1 != config.option("config").lower().find("debug")):
      base.cmd2("gn", ["gen", "out.gn/win_64/debug", "--args=\"is_debug=true " + base_args64 + " is_clang=false\""])
      base.cmd("ninja", ["-C", "out.gn/win_64/debug"])      

    base.cmd2("gn", ["gen", "out.gn/win_64/release", "--args=\"is_debug=false " + base_args64 + " is_clang=false\""])
    base.cmd("ninja", ["-C", "out.gn/win_64/release"])

  if config.check_option("platform", "win_32"):
    if (-1 != config.option("config").lower().find("debug")):
      base.cmd2("gn", ["gen", "out.gn/win_32/debug", "--args=\"is_debug=true " + base_args32 + " is_clang=false\""])
      base.cmd("ninja", ["-C", "out.gn/win_32/debug"])    

    base.cmd2("gn", ["gen", "out.gn/win_32/release", "--args=\"is_debug=false " + base_args32 + " is_clang=false\""])
    base.cmd("ninja", ["-C", "out.gn/win_32/release"])

  os.chdir(old_cur)

  if config.check_option("platform", "win_64_xp") or config.check_option("platform", "win_32_xp"):
    make_xp()

  return
Beispiel #23
0
def make():
  if not is_main_platform():
    make_xp()
    return

  if ("ios" == config.option("platform")):
    return

  print("[fetch & build]: v8")

  base_dir = base.get_script_dir() + "/../../core/Common/3dParty/v8"
  old_cur = os.getcwd()
  os.chdir(base_dir)

  if ("windows" == base.host_platform()):
    base.set_env("DEPOT_TOOLS_WIN_TOOLCHAIN", "0")
    base.set_env("GYP_MSVS_VERSION", "2015")

  base.common_check_version("v8", "1", clean)

  if not base.is_dir("v8/out.gn"):
    clean()

  if not base.is_dir("depot_tools"):
    base.cmd("git", ["clone", "https://chromium.googlesource.com/chromium/tools/depot_tools.git"])
    if ("windows" == base.host_platform()):
      # hack for 32 bit system!!!
      base.replaceInFile("depot_tools/cipd.ps1", "windows-386", "windows-amd64")

  os.environ["PATH"] = base_dir + "/depot_tools" + os.pathsep + os.environ["PATH"]

  if "ppc64" in platform.machine():
    os.environ["VPYTHON_BYPASS"] = "******"

  if not base.is_dir("v8/out.gn"):
    base.cmd("gclient")

  # --------------------------------------------------------------------------
  # fetch
  if not base.is_dir("v8"):
    base.cmd("./depot_tools/fetch", ["v8"], True)
    os.chdir(base_dir + "/v8")
    base.cmd("git", ["checkout", "-b", "6.0", "branch-heads/6.0"], True)
    os.chdir(base_dir)

  # --------------------------------------------------------------------------
  # correct
  if not base.is_dir("v8/out.gn"):
    base.cmd("gclient", ["sync"], True)

    if ("linux" == base.host_platform()):
      if base.is_dir("v8/third_party/binutils/Linux_x64/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_x64/Release")
      if base.is_dir("v8/third_party/binutils/Linux_ppc64/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_ppc64/Release")
      if base.is_dir("v8/third_party/binutils/Linux_ia32/Release"):
        base.delete_dir("v8/third_party/binutils/Linux_ia32/Release")

      base.cmd("gclient", ["sync", "--no-history"])

      if base.is_dir("v8/third_party/binutils/Linux_x64/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_x64/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_x64/Release/bin/" + name, "v8/third_party/binutils/Linux_x64/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_x64/Release/bin/" + name])

      if base.is_dir("v8/third_party/binutils/Linux_ppc64/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_ppc64/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_ppc64/Release/bin/" + name, "v8/third_party/binutils/Linux_ppc64/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_ppc64/Release/bin/" + name])

      if base.is_dir("v8/third_party/binutils/Linux_ia32/Release/bin"):
        for file in os.listdir("v8/third_party/binutils/Linux_ia32/Release/bin"):
          name = file.split("/")[-1]
          if ("ld.gold" != name):
            base.cmd("mv", ["v8/third_party/binutils/Linux_ia32/Release/bin/" + name, "v8/third_party/binutils/Linux_ia32/Release/bin/old_" + name])
            base.cmd("ln", ["-s", "/usr/bin/" + name, "v8/third_party/binutils/Linux_ia32/Release/bin/" + name])

    if ("windows" == base.host_platform()):
      base.replaceInFile("v8/build/config/win/BUILD.gn", ":static_crt", ":dynamic_crt")
    if ("mac" == base.host_platform()):
      base.replaceInFile("v8/build/config/mac/mac_sdk.gni", "if (mac_sdk_version != mac_sdk_min_build_override", "if (false && mac_sdk_version != mac_sdk_min_build_override")  

  if "ppc64" in platform.machine():
    # Google's gn and ninja binaries won't work, they're x86 only by Google fiat.
    # Remove them and use the system binaries...
    try:
      os.remove(base_dir + "/depot_tools/gn")
    except:
      pass
    try:
      os.remove(base_dir + "/depot_tools/ninja")
    except:
      pass

  # --------------------------------------------------------------------------
  # build
  os.chdir("v8")

  if "ppc64le" in platform.machine():
    base_args64 = "target_cpu=\\\"ppc64\\\" v8_target_cpu=\\\"ppc64\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"
  else:
    base_args64 = "target_cpu=\\\"x64\\\" v8_target_cpu=\\\"x64\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"
  base_args32 = "target_cpu=\\\"x86\\\" v8_target_cpu=\\\"x86\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"

  if config.check_option("platform", "linux_64"):
    base.cmd2("gn", ["gen", "out.gn/linux_64", "--args=\"is_debug=false " + base_args64 + " is_clang=false use_sysroot=false treat_warnings_as_errors=false\""])
    base.cmd("ninja", ["-C", "out.gn/linux_64"])

  if config.check_option("platform", "linux_32"):
    base.cmd2("gn", ["gen", "out.gn/linux_32", "--args=\"is_debug=false " + base_args32 + " is_clang=false use_sysroot=false\""])
    base.cmd("ninja", ["-C", "out.gn/linux_32"])

  if config.check_option("platform", "mac_64"):
    base.cmd2("gn", ["gen", "out.gn/mac_64", "--args=\"is_debug=false " + base_args64 + "\""])
    base.cmd("ninja", ["-C", "out.gn/mac_64"])

  if config.check_option("platform", "win_64"):
    if (-1 != config.option("config").lower().find("debug")):
      base.cmd2("gn", ["gen", "out.gn/win_64/debug", "--args=\"is_debug=true " + base_args64 + " is_clang=false\""])
      base.cmd("ninja", ["-C", "out.gn/win_64/debug"])      

    base.cmd2("gn", ["gen", "out.gn/win_64/release", "--args=\"is_debug=false " + base_args64 + " is_clang=false\""])
    base.cmd("ninja", ["-C", "out.gn/win_64/release"])

  if config.check_option("platform", "win_32"):
    if (-1 != config.option("config").lower().find("debug")):
      base.cmd2("gn", ["gen", "out.gn/win_32/debug", "--args=\"is_debug=true " + base_args32 + " is_clang=false\""])
      base.cmd("ninja", ["-C", "out.gn/win_32/debug"])    

    base.cmd2("gn", ["gen", "out.gn/win_32/release", "--args=\"is_debug=false " + base_args32 + " is_clang=false\""])
    base.cmd("ninja", ["-C", "out.gn/win_32/release"])

  os.chdir(old_cur)

  make_xp()

  return
Beispiel #24
0
    )  #custon filemgr support watch filemgr_wrapper_new.cxx
    base.replaceInFile(
        "./src/hunspell/filemgr.hxx", "#include <fstream>",
        "#include <fstream>\n#ifdef HUNSPELL_WASM_MODULE\n#include \"string_buffer_stream.h\"\n#endif\n"
    )
    base.replaceInFile("./src/hunspell/csutil.cxx", "void free_utf_tbl() {",
                       "void free_utf_tbl() { \n return;\n")
    # bug fix, we need to keep this utf table
    # free_utf_tbl doesnt delete anything so we can destroy huspell object
    os.chdir("../")


base.configure_common_apps()

# remove previous version
if base.is_dir("./deploy"):
    base.delete_dir("./deploy")
base.create_dir("./deploy")
base.create_dir("./deploy/spell")

# fetch emsdk
command_prefix = "" if ("windows" == base.host_platform()) else "./"
if not base.is_dir("emsdk"):
    base.cmd("git", ["clone", "https://github.com/emscripten-core/emsdk.git"])
    os.chdir("emsdk")
    base.cmd(command_prefix + "emsdk", ["install", "latest"])
    base.cmd(command_prefix + "emsdk", ["activate", "latest"])
    os.chdir("../")

#fetch libhunspell
HEAD = open("HEAD", "r")
Beispiel #25
0
def clean():
    if base.is_dir("openssl"):
        base.delete_dir_with_access_error("openssl")
    if base.is_dir("build"):
        base.delete_dir("build")
    return
Beispiel #26
0
def make():
    if ("android" == base.host_platform()
            or "ios" == config.option("platform")):
        return

    print("[fetch & build]: openssl")

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/openssl"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    base.common_check_version("openssl", "3", clean)

    if not base.is_dir("openssl"):
        base.cmd("git", [
            "clone", "--depth=1", "--branch", "OpenSSL_1_1_1f",
            "https://github.com/openssl/openssl.git"
        ])

    os.chdir(base_dir + "/openssl")

    old_cur_dir = base_dir.replace(" ", "\\ ")
    if ("windows" == base.host_platform()):
        old_cur_dir = base_dir.replace(" ", "\\ ")
        if (-1 != config.option("platform").find("win_64")
            ) and not base.is_dir("../build/win_64"):
            base.create_dir("./../build/win_64")
            qmake_bat = []
            qmake_bat.append("call \"" + config.option("vs-path") +
                             "/vcvarsall.bat\" x64")
            qmake_bat.append("perl Configure VC-WIN64A --prefix=" +
                             old_cur_dir + "\\build\\win_64 --openssldir=" +
                             old_cur_dir + "\\build\\win_64 no-shared no-asm")
            qmake_bat.append("call nmake clean")
            qmake_bat.append("call nmake build_libs install")
            base.run_as_bat(qmake_bat, True)
        if (-1 != config.option("platform").find("win_32")
            ) and not base.is_dir("../build/win_32"):
            base.create_dir("./../build/win_32")
            qmake_bat = []
            qmake_bat.append("call \"" + config.option("vs-path") +
                             "/vcvarsall.bat\" x86")
            qmake_bat.append("perl Configure VC-WIN32 --prefix=" +
                             old_cur_dir + "\\build\\win_32 --openssldir=" +
                             old_cur_dir + "\\build\\win_32 no-shared no-asm")
            qmake_bat.append("call nmake clean")
            qmake_bat.append("call nmake build_libs install")
            base.run_as_bat(qmake_bat, True)
        os.chdir(old_cur)
        # xp ----------------------------------------------------------------------------------------------------
        os.chdir(base_dir + "/openssl")
        base.replaceInFile(base_dir + "/openssl/crypto/rand/rand_win.c",
                           "define USE_BCRYPTGENRANDOM",
                           "define USE_BCRYPTGENRANDOM_FIX")
        old_cur_dir = base_dir.replace(" ", "\\ ")
        if (-1 != config.option("platform").find("win_64_xp")
            ) and not base.is_dir("../build/win_64_xp"):
            base.create_dir("./../build/win_64_xp")
            qmake_bat = []
            qmake_bat.append("call \"" + config.option("vs-path") +
                             "/vcvarsall.bat\" x64")
            qmake_bat.append("perl Configure VC-WIN64A --prefix=" +
                             old_cur_dir + "\\build\\win_64_xp --openssldir=" +
                             old_cur_dir +
                             "\\build\\win_64_xp no-shared no-asm no-async")
            qmake_bat.append("call nmake clean")
            qmake_bat.append("call nmake build_libs install")
            base.run_as_bat(qmake_bat, True)
        if (-1 != config.option("platform").find("win_32_xp")
            ) and not base.is_dir("../build/win_32_xp"):
            base.create_dir("./../build/win_32_xp")
            qmake_bat = []
            qmake_bat.append("call \"" + config.option("vs-path") +
                             "/vcvarsall.bat\" x86")
            qmake_bat.append("perl Configure VC-WIN32 --prefix=" +
                             old_cur_dir + "\\build\\win_32_xp --openssldir=" +
                             old_cur_dir +
                             "\\build\\win_32_xp no-shared no-asm no-async")
            qmake_bat.append("call nmake clean")
            qmake_bat.append("call nmake build_libs install")
            base.run_as_bat(qmake_bat, True)
        os.chdir(old_cur)
        # -------------------------------------------------------------------------------------------------------
        return

    if (-1 != config.option("platform").find("linux")
        ) and not base.is_dir("../build/linux_64"):
        base.cmd("./config", [
            "no-shared", "no-asm",
            "--prefix=" + old_cur_dir + "/build/linux_64",
            "--openssldir=" + old_cur_dir + "/build/linux_64"
        ])
        base.replaceInFile("./Makefile", "CFLAGS=-Wall -O3",
                           "CFLAGS=-Wall -O3 -fvisibility=hidden")
        base.replaceInFile("./Makefile", "CXXFLAGS=-Wall -O3",
                           "CXXFLAGS=-Wall -O3 -fvisibility=hidden")
        base.cmd("make")
        base.cmd("make", ["install"])
        # TODO: support x86

    if (-1 != config.option("platform").find("mac")
        ) and not base.is_dir("../build/mac_64"):
        base.cmd("./Configure", [
            "no-shared", "no-asm", "darwin64-x86_64-cc",
            "--prefix=" + old_cur_dir + "/build/mac_64", "--openssldir=" +
            old_cur_dir + "/build/mac_64", "-mmacosx-version-min=10.11"
        ])
        base.cmd("make", ["build_libs", "install"])

    if (-1 != config.option("platform").find("mac")
        ) and not base.is_dir("../build/mac_arm64"):
        os.chdir(base_dir)
        base.cmd("git", [
            "clone", "--depth=1", "--branch", "OpenSSL_1_1_1f",
            "https://github.com/openssl/openssl.git", "openssl2"
        ])
        os.chdir(base_dir + "/openssl2")
        replace1 = "\"darwin64-x86_64-cc\" => {"
        replace2 = "\"darwin64-arm64-cc\" => {\n\
        inherit_from     => [ \"darwin-common\", asm(\"aarch64_asm\") ],\n\
        CFLAGS           => add(\"-Wall\"),\n\
        cflags           => add(\"-arch arm64 -isysroot " + base.find_mac_sdk(
        ) + "\"),\n\
        lib_cppflags     => add(\"-DL_ENDIAN\"),\n\
        bn_ops           => \"SIXTY_FOUR_BIT_LONG\",\n\
        perlasm_scheme   => \"macosx\",\n\
    },\n\
    \"darwin64-x86_64-cc\" => {"

        base.replaceInFile(base_dir + "/openssl2/Configurations/10-main.conf",
                           replace1, replace2)
        base.cmd("./Configure", [
            "no-shared", "no-asm", "darwin64-arm64-cc",
            "--prefix=" + old_cur_dir + "/build/mac_arm64",
            "--openssldir=" + old_cur_dir + "/build/mac_arm64"
        ])
        base.cmd("make", ["build_libs", "install"])

    os.chdir(old_cur)
    return
Beispiel #27
0
def install_deps():
    if base.is_file("./packages_complete"):
        return

    # dependencies
    packages = [
        "apt-transport-https", "autoconf2.13", "build-essential",
        "ca-certificates", "cmake", "curl", "git", "glib-2.0-dev",
        "libglu1-mesa-dev", "libgtk-3-dev", "libpulse-dev", "libtool",
        "p7zip-full", "subversion", "gzip", "libasound2-dev",
        "libatspi2.0-dev", "libcups2-dev", "libdbus-1-dev", "libicu-dev",
        "libglu1-mesa-dev", "libgstreamer1.0-dev",
        "libgstreamer-plugins-base1.0-dev", "libx11-xcb-dev", "libxcb*",
        "libxi-dev", "libxrender-dev", "libxss1", "libncurses5"
    ]

    base.cmd("sudo", ["apt-get", "install", "-y"] + packages)

    # nodejs
    base.cmd("sudo", ["apt-get", "install", "-y", "nodejs"])
    nodejs_cur = 0
    try:
        nodejs_version = base.run_command('node -v')['stdout']
        nodejs_cur_version_major = int(nodejs_version.split('.')[0][1:])
        nodejs_cur_version_minor = int(nodejs_version.split('.')[1])
        nodejs_cur = nodejs_cur_version_major * 1000 + nodejs_cur_version_minor
        print("Installed Node.js version: " + str(nodejs_cur_version_major) +
              "." + str(nodejs_cur_version_minor))
    except:
        nodejs_cur = 1
    if (nodejs_cur < 10020):
        print("Node.js version cannot be less 10.20")
        print("Reinstall")
        if (base.is_dir("./node_js_setup_10.x")):
            base.delete_dir("./node_js_setup_10.x")
        base.cmd("sudo", ["apt-get", "remove", "--purge", "-y", "nodejs"])
        base.download("https://deb.nodesource.com/setup_10.x",
                      "./node_js_setup_10.x")
        base.cmd(
            'curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -'
        )
        base.cmd("sudo", ["bash", "./node_js_setup_10.x"])
        base.cmd("sudo", ["apt-get", "install", "-y", "nodejs"])
        base.cmd("sudo", ["npm", "install", "-g", "npm@6"])
    else:
        print("OK")
        base.cmd("sudo", ["apt-get", "-y", "install", "npm", "yarn"], True)
    base.cmd("sudo", ["npm", "install", "-g", "grunt-cli"])
    base.cmd("sudo", ["npm", "install", "-g", "pkg"])

    # java
    java_error = base.cmd("sudo",
                          ["apt-get", "-y", "install", "openjdk-11-jdk"], True)
    if (0 != java_error):
        java_error = base.cmd("sudo",
                              ["apt-get", "-y", "install", "openjdk-8-jdk"],
                              True)
    if (0 != java_error):
        base.cmd("sudo",
                 ["apt-get", "-y", "install", "software-properties-common"])
        base.cmd("sudo", ["add-apt-repository", "-y", "ppa:openjdk-r/ppa"])
        base.cmd("sudo", ["apt-get", "update"])
        base.cmd("sudo", ["apt-get", "-y", "install", "openjdk-8-jdk"])
        base.cmd("sudo", ["update-alternatives", "--config", "java"])
        base.cmd("sudo", ["update-alternatives", "--config", "javac"])

    base.writeFile("./packages_complete", "complete")
    return
Beispiel #28
0
def make_xp():
    if not is_xp_platform():
        return

    print("[fetch & build]: v8_xp")
    old_env = dict(os.environ)

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/v8/v8_xp"
    old_cur = os.getcwd()
    os.chdir(base_dir)

    if ("windows" == base.host_platform()):
        base.set_env("DEPOT_TOOLS_WIN_TOOLCHAIN", "0")
        base.set_env("GYP_MSVS_VERSION", "2015")

    base.common_check_version("v8", "1", clean)

    if not base.is_dir("win_64") and not base.is_dir("win_32"):
        clean()

    if not base.is_dir("depot_tools"):
        base.cmd(
            "git",
            ["clone", "http://120.92.49.206:3232/chromiumsrc/depot_tools.git"])
        if ("windows" == base.host_platform()):
            # hack for 32 bit system!!!
            if base.is_file("depot_tools/cipd.ps1"):
                base.replaceInFile("depot_tools/cipd.ps1", "windows-386",
                                   "windows-amd64")

    os.environ["PATH"] = os.pathsep.join([
        base_dir + "/depot_tools",
        base_dir + "/depot_tools/win_tools-2_7_13_chromium7_bin/python/bin",
        config.option("vs-path") + "/../Common7/IDE", os.environ["PATH"]
    ])

    # --------------------------------------------------------------------------
    # fetch
    if not base.is_dir("v8"):
        base.cmd("./depot_tools/fetch", ["v8"], True)
        base.cmd("./depot_tools/gclient", ["sync", "-r", "4.10.253"], True)
        base.delete_dir_with_access_error("v8/buildtools/win")
        base.cmd("git", ["config", "--system", "core.longpaths", "true"])
        base.cmd("gclient", ["sync", "--force"], True)

    # save common py script
    base.save_as_script("v8/build/common_xp.py", [
        "import os",
        "def replaceInFile(path, text, textReplace):",
        "  filedata = '';",
        "  with open(path, 'r') as file:",
        "    filedata = file.read()",
        "  filedata = filedata.replace(text, textReplace)",
        "  os.remove(path)",
        "  with open(path, 'w') as file:",
        "    file.write(filedata)",
        "  return",
        "",
        "projects = ['v8/tools/gyp/v8_base_0.vcxproj', 'v8/tools/gyp/v8_base_1.vcxproj', 'v8/tools/gyp/v8_base_2.vcxproj', 'v8/tools/gyp/v8_base_3.vcxproj',",
        "'v8/tools/gyp/v8_libbase.vcxproj', 'v8/tools/gyp/v8_libplatform.vcxproj', 'v8/tools/gyp/v8_nosnapshot.vcxproj', 'v8/tools/gyp/mksnapshot.vcxproj',",
        "'v8/third_party/icu/icui18n.vcxproj', 'v8/third_party/icu/icuuc.vcxproj']",
        "",
        "for file in projects:",
        "  replaceInFile(file, '<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>', '<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>')",
        "  replaceInFile(file, '<RuntimeLibrary>MultiThreaded</RuntimeLibrary>', '<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>')",
    ])

    if config.check_option("platform", "win_64_xp"):
        if not base.is_dir("win_64/release"):
            base.run_as_bat([
                "call python v8/build/gyp_v8 -Dtarget_arch=x64",
                "call python v8/build/common_xp.py",
                "call devenv v8/tools/gyp/v8.sln /Rebuild Release"
            ])
            base.create_dir("win_64/release")
            base.copy_files("v8/build/Release/lib/*", "win_64/release/")
            base.copy_file("v8/build/Release/icudt.dll",
                           "win_64/release/icudt.dll")

        if (-1 != config.option("config").lower().find("debug")
            ) and not base.is_dir("win_64/debug"):
            base.run_as_bat([
                "call python v8/build/gyp_v8 -Dtarget_arch=x64",
                "call python v8/build/common_xp.py",
                "call devenv v8/tools/gyp/v8.sln /Rebuild Debug"
            ])
            base.create_dir("win_64/debug")
            base.copy_files("v8/build/Debug/lib/*", "win_64/debug/")
            base.copy_file("v8/build/Debug/icudt.dll",
                           "win_64/debug/icudt.dll")

    if config.check_option("platform", "win_32_xp"):
        if not base.is_dir("win_32/release"):
            base.run_as_bat([
                "call python v8/build/gyp_v8",
                "call python v8/build/common_xp.py",
                "call devenv v8/tools/gyp/v8.sln /Rebuild Release"
            ])
            base.create_dir("win_32/release")
            base.copy_files("v8/build/Release/lib/*", "win_32/release/")
            base.copy_file("v8/build/Release/icudt.dll",
                           "win_32/release/icudt.dll")

        if (-1 != config.option("config").lower().find("debug")
            ) and not base.is_dir("win_32/debug"):
            base.run_as_bat([
                "call python v8/build/gyp_v8",
                "call python v8/build/common_xp.py",
                "call devenv v8/tools/gyp/v8.sln /Rebuild Debug"
            ])
            base.create_dir("win_32/debug")
            base.copy_files("v8/build/Debug/lib/*", "win_32/debug/")
            base.copy_file("v8/build/Debug/icudt.dll",
                           "win_32/debug/icudt.dll")

    os.chdir(old_cur)
    os.environ.clear()
    os.environ.update(old_env)
    return
Beispiel #29
0
def make():
    if not is_main_platform():
        make_xp()
        return

    base_dir = base.get_script_dir() + "/../../core/Common/3dParty/v8"
    if ("ios" == config.option("platform")):
        return

    if (-1 != config.option("platform").find("android")):
        base.cmd_in_dir(base_dir + "/android", "python", ["./make.py"])
        if (-1 == config.option("platform").find("linux")) and (
                -1 == config.option("platform").find("mac")) and (
                    -1 == config.option("platform").find("win")):
            return

    print("[fetch & build]: v8")
    old_env = dict(os.environ)

    old_cur = os.getcwd()
    os.chdir(base_dir)

    if ("windows" == base.host_platform()):
        base.set_env("DEPOT_TOOLS_WIN_TOOLCHAIN", "0")
        base.set_env("GYP_MSVS_VERSION", "2015")

    base.common_check_version("v8", "1", clean)

    if not base.is_dir("v8/out.gn"):
        clean()

    if not base.is_dir("depot_tools"):
        base.cmd(
            "git",
            ["clone", "http://120.92.49.206:3232/chromiumsrc/depot_tools.git"])
        if ("windows" == base.host_platform()):
            # hack for 32 bit system!!!
            if base.is_file("depot_tools/cipd.ps1"):
                base.replaceInFile("depot_tools/cipd.ps1", "windows-386",
                                   "windows-amd64")
        if base.is_file("depot_tools/fetch_configs/v8.py"):
            base.replaceInFile("depot_tools/fetch_configs/v8.py",
                               "https://chromium.googlesource.com/v8/v8.git",
                               "https://gitee.com/mirrors/V8.git")

    os.environ[
        "PATH"] = base_dir + "/depot_tools" + os.pathsep + os.environ["PATH"]

    if not base.is_dir("v8/out.gn"):
        base.cmd("gclient")

    # --------------------------------------------------------------------------
    # fetch
    if not base.is_dir("v8"):
        base.cmd("./depot_tools/fetch", ["v8"], True)
        os.chdir(base_dir + "/v8")
        base.cmd("git", ["checkout", "-b", "6.0", "branch-heads/6.0"], True)
        os.chdir(base_dir)

    # --------------------------------------------------------------------------
    # correct
    if not base.is_dir("v8/out.gn"):

        # windows hack (delete later) ----------------------
        if ("windows" == base.host_platform()):
            base.delete_dir_with_access_error("v8/buildtools/win")
            base.cmd("git", ["config", "--system", "core.longpaths", "true"])
            base.cmd("gclient", ["sync", "--force"], True)
        else:
            base.cmd("gclient", ["sync"], True)

        # normal version !!!
        #base.cmd("gclient", ["sync"], True)
        # --------------------------------------------------

        if ("linux" == base.host_platform()):
            if base.is_dir("v8/third_party/binutils/Linux_x64/Release"):
                base.delete_dir("v8/third_party/binutils/Linux_x64/Release")
            if base.is_dir("v8/third_party/binutils/Linux_ia32/Release"):
                base.delete_dir("v8/third_party/binutils/Linux_ia32/Release")

            base.cmd("gclient", ["sync", "--no-history"])

            if base.is_dir("v8/third_party/binutils/Linux_x64/Release/bin"):
                for file in os.listdir(
                        "v8/third_party/binutils/Linux_x64/Release/bin"):
                    name = file.split("/")[-1]
                    if ("ld.gold" != name):
                        base.cmd("mv", [
                            "v8/third_party/binutils/Linux_x64/Release/bin/" +
                            name,
                            "v8/third_party/binutils/Linux_x64/Release/bin/old_"
                            + name
                        ])
                        base.cmd("ln", [
                            "-s", "/usr/bin/" + name,
                            "v8/third_party/binutils/Linux_x64/Release/bin/" +
                            name
                        ])

            if base.is_dir("v8/third_party/binutils/Linux_ia32/Release/bin"):
                for file in os.listdir(
                        "v8/third_party/binutils/Linux_ia32/Release/bin"):
                    name = file.split("/")[-1]
                    if ("ld.gold" != name):
                        base.cmd("mv", [
                            "v8/third_party/binutils/Linux_ia32/Release/bin/" +
                            name,
                            "v8/third_party/binutils/Linux_ia32/Release/bin/old_"
                            + name
                        ])
                        base.cmd("ln", [
                            "-s", "/usr/bin/" + name,
                            "v8/third_party/binutils/Linux_ia32/Release/bin/" +
                            name
                        ])

        if ("windows" == base.host_platform()):
            base.replaceInFile("v8/build/config/win/BUILD.gn", ":static_crt",
                               ":dynamic_crt")
        if ("mac" == base.host_platform()):
            base.replaceInFile(
                "v8/build/config/mac/mac_sdk.gni",
                "if (mac_sdk_version != mac_sdk_min_build_override",
                "if (false && mac_sdk_version != mac_sdk_min_build_override")
            base.replaceInFile("v8/build/mac/find_sdk.py",
                               "^MacOSX(10\\.\\d+)\\.sdk$",
                               "^MacOSX(1\\d\\.\\d+)\\.sdk$")

    # --------------------------------------------------------------------------
    # build
    os.chdir("v8")

    base_args64 = "target_cpu=\\\"x64\\\" v8_target_cpu=\\\"x64\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"
    base_args32 = "target_cpu=\\\"x86\\\" v8_target_cpu=\\\"x86\\\" v8_static_library=true is_component_build=false v8_use_snapshot=false"

    if config.check_option("platform", "linux_64"):
        base.cmd2("gn", [
            "gen", "out.gn/linux_64", "--args=\"is_debug=false " +
            base_args64 + " is_clang=" + is_use_clang() +
            " use_sysroot=false treat_warnings_as_errors=false\""
        ])
        base.cmd("ninja", ["-C", "out.gn/linux_64"])

    if config.check_option("platform", "linux_32"):
        base.cmd2("gn", [
            "gen", "out.gn/linux_32", "--args=\"is_debug=false " +
            base_args32 + " is_clang=" + is_use_clang() +
            " use_sysroot=false treat_warnings_as_errors=false\""
        ])
        base.cmd("ninja", ["-C", "out.gn/linux_32"])

    if config.check_option("platform", "mac_64"):
        base.cmd2("gn", [
            "gen", "out.gn/mac_64",
            "--args=\"is_debug=false " + base_args64 + "\""
        ])
        base.cmd("ninja", ["-C", "out.gn/mac_64"])

    if config.check_option("platform", "win_64"):
        if (-1 != config.option("config").lower().find("debug")):
            base.cmd2("gn", [
                "gen", "out.gn/win_64/debug",
                "--args=\"is_debug=true " + base_args64 + " is_clang=false\""
            ])
            base.cmd("ninja", ["-C", "out.gn/win_64/debug"])

        base.cmd2("gn", [
            "gen", "out.gn/win_64/release",
            "--args=\"is_debug=false " + base_args64 + " is_clang=false\""
        ])
        base.cmd("ninja", ["-C", "out.gn/win_64/release"])

    if config.check_option("platform", "win_32"):
        if (-1 != config.option("config").lower().find("debug")):
            base.cmd2("gn", [
                "gen", "out.gn/win_32/debug",
                "--args=\"is_debug=true " + base_args32 + " is_clang=false\""
            ])
            base.cmd("ninja", ["-C", "out.gn/win_32/debug"])

        base.cmd2("gn", [
            "gen", "out.gn/win_32/release",
            "--args=\"is_debug=false " + base_args32 + " is_clang=false\""
        ])
        base.cmd("ninja", ["-C", "out.gn/win_32/release"])

    os.chdir(old_cur)
    os.environ.clear()
    os.environ.update(old_env)

    make_xp()
    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