def main(): if os.name != "nt": sys.exit("Error, this is only for use on Windows where SxS exists.") setup(needs_io_encoding=True) search_mode = createSearchMode() tmp_dir = tempfile.gettempdir() compileLibraryTest(search_mode=search_mode, stage_dir=os.path.join(tmp_dir, "find_sxs_modules"), decide=decide, action=action) my_print("FINISHED, all extension modules checked.")
def main(): if os.name != "nt": sys.exit("Error, this is only for use on Windows where SxS exists.") setup(needs_io_encoding=True) search_mode = createSearchMode() tmp_dir = tempfile.gettempdir() compileLibraryTest( search_mode=search_mode, stage_dir=os.path.join(tmp_dir, "find_sxs_modules"), decide=decide, action=action, ) my_print("FINISHED, all extension modules checked.")
path=os.path.join(filename[:-3] + ".dist", "importer.exe")) outside_accesses = checkRuntimeLoadedFilesForOutsideAccesses( loaded_filenames, [ filename[:-3] + ".dist", current_dir, os.path.expanduser("~/.config") ], ) if output[-1] != b"OK": sys.exit("FAIL") my_print("OK") assert not outside_accesses, outside_accesses shutil.rmtree(filename[:-3] + ".dist") else: my_print("SKIP (does not work with CPython)") compileLibraryTest( search_mode=search_mode, stage_dir=os.path.join(tmp_dir, "compile_extensions"), decide=decide, action=action, ) my_print("FINISHED, all extension modules compiled.")
my_print("Falling back to full comparison due to error exit.") checkCompilesNotWithCPython( dirname=None, filename=path, search_mode=search_mode, ) else: my_print("OK") if os.name == "nt": suffix = "pyd" else: suffix = "so" target_filename = os.path.basename(path).replace(".py", '.' + suffix) target_filename = target_filename.replace('(', "").replace(')', "") os.unlink(os.path.join(stage_dir, target_filename)) from nuitka.PythonVersions import python_version compileLibraryTest(search_mode=search_mode, stage_dir=os.path.join( tmp_dir, "compile_library_%s" % python_version), decide=decide, action=action) search_mode.finish()
def main(): setup(suite="extension_modules", needs_io_encoding=True) search_mode = createSearchMode() tmp_dir = getTempDir() done = set() def decide(root, filename): if os.path.sep + "Cython" + os.path.sep in root: return False if (root.endswith(os.path.sep + "matplotlib") or os.path.sep + "matplotlib" + os.path.sep in root): return False if filename.endswith("linux-gnu_d.so"): return False if root.endswith(os.path.sep + "msgpack"): return False first_part = filename.split(".")[0] if first_part in done: return False done.add(first_part) return filename.endswith( (".so", ".pyd")) and not filename.startswith("libpython") current_dir = os.path.normpath(os.getcwd()) current_dir = os.path.normcase(current_dir) def action(stage_dir, root, path): command = [ sys.executable, os.path.join("..", "..", "bin", "nuitka"), "--stand", "--run", "--output-dir=%s" % stage_dir, "--remove-output", ] filename = os.path.join(stage_dir, "importer.py") assert path.startswith(root) module_name = path[len(root) + 1:] module_name = module_name.split(".")[0] module_name = module_name.replace(os.path.sep, ".") module_name = ModuleName(module_name) with openTextFile(filename, "w") as output: plugin_names = set(["pylint-warnings", "anti-bloat"]) if module_name.hasNamespace("PySide2"): plugin_names.add("pyside2") elif module_name.hasNamespace("PySide6"): plugin_names.add("pyside2") elif module_name.hasNamespace("PyQt5"): plugin_names.add("pyqt5") else: # TODO: We do not have a noqt plugin yet. plugin_names.add("pyqt5") for plugin_name in plugin_names: output.write("# nuitka-project: --enable-plugin=%s\n" % plugin_name) # Make it an error to find unwanted bloat compiled in. output.write("# nuitka-project: --noinclude-default-mode=error\n") output.write("import " + module_name.asString() + "\n") output.write("print('OK.')") command += os.environ.get("NUITKA_EXTRA_OPTIONS", "").split() command.append(filename) if checkSucceedsWithCPython(filename): try: output = check_output(command).splitlines() except Exception: # only trying to check for no exception, pylint: disable=try-except-raise raise else: assert os.path.exists(filename[:-3] + ".dist") binary_filename = os.path.join( filename[:-3] + ".dist", "importer.exe" if os.name == "nt" else "importer", ) loaded_filenames = getRuntimeTraceOfLoadedFiles( logger=test_logger, command=[binary_filename], ) outside_accesses = checkLoadedFileAccesses( loaded_filenames=loaded_filenames, current_dir=os.getcwd()) if outside_accesses: displayError(None, filename) displayRuntimeTraces(test_logger, binary_filename) test_logger.warning( "Should not access these file(s): '%r'." % outside_accesses) search_mode.onErrorDetected(1) if output[-1] != b"OK.": my_print(" ".join(command)) my_print(filename) my_print(output) test_logger.sysexit("FAIL.") my_print("OK.") assert not outside_accesses, outside_accesses shutil.rmtree(filename[:-3] + ".dist") else: my_print("SKIP (does not work with CPython)") compileLibraryTest( search_mode=search_mode, stage_dir=os.path.join(tmp_dir, "compile_extensions"), decide=decide, action=action, ) my_print("FINISHED, all extension modules compiled.")
my_print("Syntax error is known unreliable with file file.") else: my_print("Falling back to full comparison due to error exit.") checkCompilesNotWithCPython(dirname=None, filename=path, search_mode=search_mode) else: my_print("OK") suffix = getSharedLibrarySuffix(preferred=True) target_filename = os.path.basename(path)[:-3] + suffix target_filename = target_filename.replace("(", "").replace(")", "") os.unlink(os.path.join(stage_dir, target_filename)) compileLibraryTest( search_mode=search_mode, stage_dir=os.path.join( tmp_dir, "compile_library_%s-%s-%s" % (".".join(python_version), python_arch, python_vendor), ), decide=decide, action=action, ) search_mode.finish()
outside_accesses = checkRuntimeLoadedFilesForOutsideAccesses( loaded_filenames, [ filename[:-3] + ".dist", current_dir, os.path.expanduser("~/.config") ] ) if output[-1] != b"OK": sys.exit("FAIL") my_print("OK") assert not outside_accesses, outside_accesses shutil.rmtree(filename[:-3] + ".dist") else: my_print("SKIP (does not work with CPython)") compileLibraryTest( search_mode = search_mode, stage_dir = os.path.join(tmp_dir, "compile_extensions"), decide = decide, action = action ) my_print("FINISHED, all extension modules compiled.")