import argparse
import os
import sys
import subprocess
import shutil
from pathlib import Path
from setuptools import setup
from setuptools.command.build_py import build_py
os.environ["SOURCE_DATE_EPOCH"] = "0"
parser = argparse.ArgumentParser(description="MindIE LLM Setup Parameters")
parser.add_argument("--setup_cmd", type=str, default="bdist_wheel")
parser.add_argument("--version", type=str, default="1.0.0")
args = parser.parse_args()
sys.argv = [sys.argv[0], args.setup_cmd]
mindie_llm_version = args.version
class BuildPyCommand(build_py):
def run(self):
env = os.environ.copy()
protobuf_lib_path = os.path.abspath("./third_party/output/protobuf/lib")
absl_lib_path = os.path.abspath("./third_party/output/abseil-cpp/lib")
if "LD_LIBRARY_PATH" in env:
env["LD_LIBRARY_PATH"] = f"{protobuf_lib_path}:{absl_lib_path}:{env['LD_LIBRARY_PATH']}"
else:
env["LD_LIBRARY_PATH"] = f"{protobuf_lib_path}:{absl_lib_path}"
subprocess.run(
[
"./third_party/output/protobuf/bin/protoc",
"--experimental_allow_proto3_optional",
"--python_out=./mindie_llm/connector/common/",
"--proto_path=./proto/",
"model_execute_data.proto",
],
env=env,
check=True,
)
build_pkg = Path(self.build_lib) / "mindie_llm"
(build_pkg / "runtime/conf").mkdir(parents=True, exist_ok=True)
shutil.copytree("mindie_llm/runtime/conf", build_pkg / "runtime/conf", dirs_exist_ok=True)
super().run()
setup(
name="mindie_llm",
version=mindie_llm_version,
author="",
author_email="",
description="MindIE LLM Project",
long_description="",
package_dir={"mindie_llm": "mindie_llm"},
install_requires=[],
package_data={"": ["*.xlsx", "*.h5", "*.csv", "*.so", "*.avsc", "*.xml", "*.pkl", "*.sql", "*.ini"]},
zip_safe=False,
python_requires=">=3.10",
cmdclass={
"build_py": BuildPyCommand,
},
include_package_data=True,
entry_points={"console_scripts": ["mindie_llm_backend = mindie_llm.connector.main:main"]},
)