diff --git a/deploy/launcher2/requirements.txt b/deploy/launcher2/requirements.txt new file mode 100644 index 0000000000..3d31f535b7 --- /dev/null +++ b/deploy/launcher2/requirements.txt @@ -0,0 +1,43 @@ +# Image processing +numpy==1.21.6 +scipy==1.8.1 +pillow +opencv-python-headless==4.11.0.86 +imageio==2.27.0 + +# Device connection +adbutils==0.11.0 +uiautomator2==2.16.17 +uiautomator2cache==0.3.0.1 +wrapt==1.15.0 +retrying +lz4 +av==10.0.0 +psutil==5.9.3 + +# Utils +rich==11.2.0 +tqdm +jellyfish==0.11.2 +pyyaml +inflection +pydantic +aiofiles +prettytable==2.2.1 +anyio==1.3.1 + +# Pushing +onepush==1.4.0 +pycryptodome==3.9.9 +pypresence==4.2.1 + +# Ocr +cnocr==1.2.3.1 +mxnet==1.6.99 + +# Webui +pywebio==1.6.2 +starlette==0.14.2 +uvicorn[standard]==0.17.6 +zerorpc==0.6.3 +pyzmq==23.2.1 \ No newline at end of file diff --git a/deploy/launcher2/requirements_generator.py b/deploy/launcher2/requirements_generator.py new file mode 100644 index 0000000000..73c6f1c224 --- /dev/null +++ b/deploy/launcher2/requirements_generator.py @@ -0,0 +1,69 @@ +import os + +from deploy.logger import logger + +BASE_FOLDER = os.path.dirname(os.path.abspath(__file__)) +logger.info(BASE_FOLDER) + + +def read_file(file): + out = {} + with open(file, 'r', encoding='utf-8') as f: + for line in f.readlines(): + if not line.strip(): + continue + res = [s.strip() for s in line.split('==')] + if len(res) > 1: + name, version = res + else: + name, version = res[0], None + out[name] = version + + return out + + +def write_file(file, data): + lines = [] + for name, version in data.items(): + if version: + lines.append(f'{name}=={version}') + else: + lines.append(str(name)) + + with open(file, 'w', encoding='utf-8', newline='') as f: + text = '\n'.join(lines) + text = text.replace('#', '\n#').strip() + f.write(text) + + +def launcher2_requirements_generate(requirements_in='requirements-in.txt'): + requirements = read_file(requirements_in) + + logger.info(f'Generate requirements for launcher2 environment') + lock = { + 'numpy': '1.21.6', + 'scipy': '1.8.1', + 'opencv-python': { + 'name': 'opencv-python-headless', + 'version': '4.11.0.86', + }, + 'wrapt': '1.15.0', + 'cnocr': '1.2.3.1', + 'mxnet': '1.6.99', # Modified version which does not actually exist + 'pyzmq': '23.2.1', + } + new = {} + logger.info(requirements) + for name, version in requirements.items(): + if name == 'alas-webapp': + continue + if name in lock: + version = lock[name] if not isinstance(lock[name], dict) else lock[name]['version'] + name = name if not isinstance(lock[name], dict) else lock[name]['name'] + new[name] = version + + write_file(os.path.join(BASE_FOLDER, f'./requirements.txt'), data=new) + + +if __name__ == '__main__': + launcher2_requirements_generate() diff --git a/dev_tools/requirements_updater.py b/dev_tools/requirements_updater.py index f461836532..df0955f479 100644 --- a/dev_tools/requirements_updater.py +++ b/dev_tools/requirements_updater.py @@ -3,6 +3,7 @@ from deploy.AidLux.requirements_generator import aidlux_requirements_generate from deploy.docker.requirements_generator import docker_requirements_generate from deploy.headless.requirements_generator import headless_requirements_generate +from deploy.launcher2.requirements_generator import launcher2_requirements_generate # Ensure running in Alas root folder os.chdir(os.path.join(os.path.dirname(__file__), '../')) @@ -40,4 +41,5 @@ def requirements_modify(file='requirements.txt'): requirements_modify() aidlux_requirements_generate() docker_requirements_generate() - headless_requirements_generate() \ No newline at end of file + headless_requirements_generate() + launcher2_requirements_generate() \ No newline at end of file