From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../libevent/test-export/test-export.py | 199 +++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 ipc/chromium/src/third_party/libevent/test-export/test-export.py (limited to 'ipc/chromium/src/third_party/libevent/test-export/test-export.py') diff --git a/ipc/chromium/src/third_party/libevent/test-export/test-export.py b/ipc/chromium/src/third_party/libevent/test-export/test-export.py new file mode 100644 index 0000000000..d71e5dbaa1 --- /dev/null +++ b/ipc/chromium/src/third_party/libevent/test-export/test-export.py @@ -0,0 +1,199 @@ +#!/usr/bin/env python3 +# +# Check if find_package(Libevent COMPONENTS xxx) can get the correct library. +# Note: this script has only been tested on python3. +# Usage: +# cd cmake-build-dir +# cmake .. && cmake --build . +# python /path/to/test-export.py [static|shared] + +import sys +import os +import shutil +import platform +import subprocess +import tempfile + +results = ("success", "failure") +FNULL = open(os.devnull, 'wb') +script_dir = os.path.split(os.path.realpath(sys.argv[0]))[0] +# working_dir is cmake build dir +working_dir = os.getcwd() +if len(sys.argv) > 1 and sys.argv[1] == "static": + link_type = sys.argv[1] +else: + link_type = "shared" + + +def exec_cmd(cmd, silent): + if silent: + p = subprocess.Popen(cmd, stdout=FNULL, stderr=FNULL, shell=True) + else: + p = subprocess.Popen(cmd, shell=True) + p.communicate() + return p.poll() + + +def link_and_run(link, code): + """Check if the source code matches the library component. + + Compile source code relative to one component and link to another component. + Then run the generated executor. + + Args: + link: The name of component that the source code will link with. + code: The source code related component name. + + Returns: + Returns 0 if links and runs successfully, otherwise 1. + """ + exec_cmd("cmake --build . --target clean", True) + arch = '' + if platform.system() == "Windows": + arch = '-A x64' + cmd = 'cmake .. %s -DEVENT__LINK_COMPONENT=%s -DEVENT__CODE_COMPONENT=%s' % ( + arch, link, code) + if link_type == "static": + cmd = "".join([cmd, " -DLIBEVENT_STATIC_LINK=1"]) + r = exec_cmd(cmd, True) + if r == 0: + r = exec_cmd('cmake --build .', True) + if r == 0: + r = exec_cmd('ctest', True) + if r != 0: + r = 1 + return r + +# expect 0:success 1:failure +def testcase(link, code, expect): + r = link_and_run(link, code) + if link == "": + link = "all" + if code == "": + code = "all" + if r != expect: + print('[test-export] fail: link %s and run %s expects %s but gets %s.' % + (link, code, results[expect], results[r])) + sys.exit(1) + else: + print('[test-export] success: link %s and run %s expects and gets %s.' % + (link, code, results[r])) + +# Dependency relationships between libevent libraries: +# core: none +# extra: core +# pthreads: core,pthread +# openssl: core,openssl +def test_group(): + testcase("core", "core", 0) + testcase("extra", "extra", 0) + testcase("openssl", "openssl", 0) + testcase("", "", 0) + testcase("extra", "core", 0) + testcase("openssl", "core", 0) + testcase("core", "extra", 1) + testcase("core", "openssl", 1) + testcase("extra", "openssl", 1) + testcase("openssl", "extra", 1) + if platform.system() != "Windows": + testcase("pthreads", "pthreads", 0) + testcase("pthreads", "core", 0) + testcase("core", "pthreads", 1) + testcase("extra", "pthreads", 1) + testcase("pthreads", "extra", 1) + testcase("pthreads", "openssl", 1) + testcase("openssl", "pthreads", 1) + + +def config_restore(): + if os.path.isfile("tempconfig") and not os.path.isfile("LibeventConfig.cmake"): + os.rename("tempconfig", "LibeventConfig.cmake") + + +def config_backup(): + if os.path.isfile("tempconfig"): + os.remove("tempconfig") + if os.path.isfile("LibeventConfig.cmake"): + os.rename("LibeventConfig.cmake", "tempconfig") + + +shutil.rmtree(os.path.join(script_dir, "build"), ignore_errors=True) + + +def run_test_group(): + os.chdir(script_dir) + if not os.path.isdir("build"): + os.mkdir("build") + os.chdir("build") + test_group() + os.chdir(working_dir) + + +need_exportdll = False +if link_type == "shared" and platform.system() == "Windows": + need_exportdll = True + +# On Windows, we need to add the directory containing the dll to the +# 'PATH' environment variable so that the program can call it. +def export_dll(dir): + if need_exportdll: + os.environ["PATH"] += os.pathsep + dir + + +def unexport_dll(dir): + if need_exportdll: + paths = os.environ["PATH"].split(os.pathsep) + paths = list(set(paths)) + if dir in paths: + paths.remove(dir) + os.environ["PATH"] = os.pathsep.join(paths) + + +print("[test-export] use %s library" % link_type) + +# Test for build tree. +print("[test-export] test for build tree") +dllpath = os.path.join(working_dir, "bin", "Debug") +config_restore() +os.environ["CMAKE_PREFIX_PATH"] = working_dir +export_dll(dllpath) +run_test_group() +del os.environ["CMAKE_PREFIX_PATH"] +unexport_dll(dllpath) + +# Install libevent libraries to system path. Remove LibeventConfig.cmake +# from build directory to avoid confusion when using find_package(). +print("[test-export] test for install tree(in system-wide path)") +if platform.system() == "Windows": + prefix = "C:\\Program Files\\libevent" + dllpath = os.path.join(prefix, "lib") +else: + prefix = "/usr/local" +exec_cmd('cmake -DCMAKE_INSTALL_PREFIX="%s" ..' % prefix, True) +exec_cmd('cmake --build . --target install', True) +config_backup() +os.environ["CMAKE_PREFIX_PATH"] = os.path.join(prefix, "lib/cmake/libevent") +export_dll(dllpath) +run_test_group() +unexport_dll(dllpath) +del os.environ["CMAKE_PREFIX_PATH"] + +# Uninstall the libraries installed in the above steps. Install the libraries +# into a temporary directory. Same as above, remove LibeventConfig.cmake from +# build directory to avoid confusion when using find_package(). +print("[test-export] test for install tree(in non-system-wide path)") +exec_cmd("cmake --build . --target uninstall", True) +tempdir = tempfile.TemporaryDirectory() +cmd = 'cmake -DCMAKE_INSTALL_PREFIX="%s" ..' % tempdir.name +exec_cmd(cmd, True) +exec_cmd("cmake --build . --target install", True) +config_backup() +os.environ["CMAKE_PREFIX_PATH"] = os.path.join(tempdir.name, "lib/cmake/libevent") +dllpath = os.path.join(tempdir.name, "lib") +export_dll(dllpath) +run_test_group() +unexport_dll(dllpath) +del os.environ["CMAKE_PREFIX_PATH"] +config_restore() + +print("[test-export] all testcases have run successfully") -- cgit v1.2.3