diff options
Diffstat (limited to 'libs/assimp/test/regression/gen_db.py')
-rw-r--r-- | libs/assimp/test/regression/gen_db.py | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/libs/assimp/test/regression/gen_db.py b/libs/assimp/test/regression/gen_db.py deleted file mode 100644 index a704c3a..0000000 --- a/libs/assimp/test/regression/gen_db.py +++ /dev/null @@ -1,225 +0,0 @@ -#!/usr/bin/env python3 -# -*- Coding: UTF-8 -*- - -# --------------------------------------------------------------------------- -# Open Asset Import Library (ASSIMP) -# --------------------------------------------------------------------------- -# -# Copyright (c) 2006-2020, ASSIMP Development Team -# -# All rights reserved. -# -# Redistribution and use of this software in source and binary forms, -# with or without modification, are permitted provided that the following -# conditions are met: -# -# * Redistributions of source code must retain the above -# copyright notice, this list of conditions and the -# following disclaimer. -# -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the -# following disclaimer in the documentation and/or other -# materials provided with the distribution. -# -# * Neither the name of the ASSIMP team, nor the names of its -# contributors may be used to endorse or promote products -# derived from this software without specific prior -# written permission of the ASSIMP Development Team. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# --------------------------------------------------------------------------- - -""" -Generate the regression database db.zip from the files in the <root>/test/models -directory. Older databases are overwritten with no prompt but can be restored -using Git as needed. - -Use --help for usage. - -On Windows, use ``py run.py <arguments>`` to make sure command line parameters -are forwarded to the script. -""" - -import sys -import os -import subprocess -import zipfile - -import settings -import utils - -usage = """gen_db [assimp_binary] [-i=...] [-e=...] [-p] [-n] - -The assimp_cmd (or assimp) binary to use is specified by the first -command line argument and defaults to ``assimp``. - -To build, set ``ASSIMP_BUILD_ASSIMP_TOOLS=ON`` in CMake. If generating -configs for an IDE, make sure to build the assimp_cmd project. - --i,--include: List of file extensions to update dumps for. If omitted, - all file extensions are updated except those in `exclude`. - Example: -ixyz,abc - -i.xyz,.abc - --include=xyz,abc - --e,--exclude: Merged with settings.exclude_extensions to produce a - list of all file extensions to ignore. If dumps exist, - they are not altered. If not, theu are not created. - --p,--preview: Preview list of file extensions touched by the update. - Dont' change anything. - --n,--nozip: Don't pack to ZIP archive. Keep all dumps in individual files. -""" - -# ------------------------------------------------------------------------------- -def process_dir(d, outfile, file_filter): - """ Generate small dump records for all files in 'd' """ - print("Processing directory " + d) - - num = 0 - for f in os.listdir(d): - fullp = os.path.join(d, f) - if os.path.isdir(fullp) and not f == ".svn": - num += process_dir(fullp, outfile, file_filter) - continue - - if file_filter(f): - for pp in settings.pp_configs_to_test: - num += 1 - print("DUMP " + fullp + "\n post-processing: " + pp) - outf = os.path.join(os.getcwd(), settings.database_name, - utils.hashing(fullp, pp)) - - cmd = [ assimp_bin_path, "dump", fullp, outf, "-b", "-s", "-l" ] + pp.split() - outfile.write("assimp dump "+"-"*80+"\n") - outfile.flush() - if subprocess.call(cmd, stdout=outfile, stderr=outfile, shell=False): - print("Failure processing " + fullp) - - # spit out an empty file to indicate that this failure is expected - with open(outf,'wb') as f: - pass - return num - - -# ------------------------------------------------------------------------------- -def make_zip(): - """Zip the contents of ./<settings.database_name> - to <settings.database_name>.zip using DEFLATE - compression to minimize the file size. """ - - num = 0 - zipout = zipfile.ZipFile(settings.database_name + ".zip", "w", zipfile.ZIP_DEFLATED) - for f in os.listdir(settings.database_name): - p = os.path.join(settings.database_name, f) - zipout.write(p, f) - if settings.remove_old: - os.remove(p) - - num += 1 - - if settings.remove_old: - os.rmdir(settings.database_name) - - bad = zipout.testzip() - assert bad is None - - print("="*60) - print("Database contains {0} entries".format(num)) - - -# ------------------------------------------------------------------------------- -def extract_zip(): - """Unzip <settings.database_name>.zip to - ./<settings.database_name>""" - try: - zipout = zipfile.ZipFile(settings.database_name + ".zip", "r", 0) - zipout.extractall(path=settings.database_name) - except (RuntimeError,IOError) as r: - print(r) - print("failed to extract previous ZIP contents. "\ - "DB is generated from scratch.") - - -# ------------------------------------------------------------------------------- -def gen_db(ext_list,outfile): - """Generate the crash dump database in - ./<settings.database_name>""" - try: - os.mkdir(settings.database_name) - except OSError: - pass - - num = 0 - for tp in settings.model_directories: - num += process_dir(tp, outfile, - lambda x: os.path.splitext(x)[1].lower() in ext_list and not x in settings.files_to_ignore) - - print("="*60) - print("Updated {0} entries".format(num)) - - -# ------------------------------------------------------------------------------- -if __name__ == "__main__": - def clean(f): - f = f.strip("* \'") - return "."+f if f[:1] != '.' else f - - if len(sys.argv) <= 1 or sys.argv[1] == "--help" or sys.argv[1] == "-h": - print(usage) - sys.exit(0) - - assimp_bin_path = sys.argv[1] - ext_list, preview, nozip = None, False, False - for m in sys.argv[2:]: - if m[:10]=="--exclude=": - settings.exclude_extensions += map(clean, m[10:].split(",")) - elif m[:2]=="-e": - settings.exclude_extensions += map(clean, m[2:].split(",")) - elif m[:10]=="--include=": - ext_list = m[10:].split(",") - elif m[:2]=="-i": - ext_list = m[2:].split(",") - elif m=="-p" or m == "--preview": - preview = True - elif m=="-n" or m == "--nozip": - nozip = True - else: - print("Unrecognized parameter: " + m) - sys.exit(-1) - - outfile = open(os.path.join("..", "results", "gen_regression_db_output.txt"), "w") - if ext_list is None: - (ext_list, err) = subprocess.Popen([assimp_bin_path, "listext"], - stdout=subprocess.PIPE).communicate() - ext_list = str(ext_list.strip()).lower().split(";") - - # todo: Fix for multi dot extensions like .skeleton.xml - ext_list = list(filter(lambda f: not f in settings.exclude_extensions, - map(clean, ext_list))) - print('File extensions processed: ' + ', '.join(ext_list)) - if preview: - sys.exit(1) - - extract_zip() - gen_db(ext_list,outfile) - make_zip() - - print("="*60) - input("Press any key to continue") - sys.exit(0) - -# vim: ai ts=4 sts=4 et sw=4 - |