infinipaint/conan/linux_runtime_deploy.py

30 lines
1,002 B
Python
Raw Normal View History

2025-07-06 20:43:53 +03:00
import os
import shutil
import re
def _get_files_from_folder(search_dir, output_folder):
if not os.path.isdir(search_dir):
return []
files = []
for f in os.listdir(search_dir):
src = os.path.join(search_dir, f)
if os.access(src, os.X_OK) or bool(re.search(r"lib.*\.so(\.\d+)*$", f)):
if os.path.isfile(src):
dst = os.path.join(output_folder, f)
shutil.copy2(src, dst)
files.append(dst)
else:
files += _get_files_from_folder(src, output_folder)
return files
def deploy(graph, output_folder, **kwargs):
conanfile = graph.root.conanfile
files = []
for r, d in conanfile.dependencies.items():
if d.package_folder is None:
continue
search_dirs = (d.cpp_info.libdirs or [])
for dir in search_dirs:
search_dir = os.path.join(d.package_folder, dir)
files += _get_files_from_folder(search_dir, output_folder)