From 26ffbe506accbc88bbf38508ff7ef7382fa0d978 Mon Sep 17 00:00:00 2001 From: Nikita Shulga Date: Fri, 12 Feb 2021 14:26:40 -0800 Subject: [PATCH] Make TorchText installable from direct reference In order to make `pip install https://github.com/pytorch/text` succeed `setup.py` should have logic to initialize submodules Add `check_submodules()` routine to setup.py to check if 'third_party/re2/CMakeLists.txt' is present on the filesystem and attempt to initialize submodules if it is not --- setup.py | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index 7c71a0ddca..d859a3f967 100644 --- a/setup.py +++ b/setup.py @@ -1,13 +1,14 @@ #!/usr/bin/env python +from build_tools import setup_helpers +import distutils.command.clean import io import os -import shutil -import subprocess from pathlib import Path -import distutils.command.clean from setuptools import setup, find_packages - -from build_tools import setup_helpers +import shutil +import subprocess +import sys +import time ROOT_DIR = Path(__file__).parent.resolve() @@ -44,6 +45,22 @@ def _export_version(version, sha): fileobj.write("git_version = {}\n".format(repr(sha))) +def check_submodules(): + third_party_dir = ROOT_DIR / 'third_party' + if not (third_party_dir / 're2' / 'CMakeFiles.txt').exists(): + print(' --- third_party/re2/CMakeFiles.txt do not exist, trying to init submodules') + try: + start = time.time() + subprocess.check_call(['git', 'submodule', 'init']) + subprocess.check_call(['git', 'submodule', 'update']) + end = time.time() + print(f' --- Submodule initialization took {end-start:.2f} sec') + except Exception: + print(' --- Submodule initalization failed') + print('Please run:\n\tgit submodule update --init --recursive') + sys.exit(1) + + VERSION, SHA = _get_version() _export_version(VERSION, SHA) @@ -112,4 +129,5 @@ def run(self): }, ) +check_submodules() setup(**setup_info)