|
1 | 1 | # enable python only development
|
2 | 2 | # copy compiled files to the current directory directly
|
3 | 3 |
|
| 4 | +import argparse |
4 | 5 | import os
|
5 | 6 | import shutil
|
6 | 7 | import subprocess
|
7 | 8 | import sys
|
| 9 | +import warnings |
| 10 | + |
| 11 | +parser = argparse.ArgumentParser( |
| 12 | + description="Development mode for python-only code") |
| 13 | +parser.add_argument('-q', |
| 14 | + '--quit-dev', |
| 15 | + action='store_true', |
| 16 | + help='Set the flag to quit development mode') |
| 17 | +args = parser.parse_args() |
8 | 18 |
|
9 | 19 | # cannot directly `import vllm` , because it will try to
|
10 | 20 | # import from the current directory
|
|
37 | 47 | # "vllm/_version.py", # not available in nightly wheels yet
|
38 | 48 | ]
|
39 | 49 |
|
40 |
| -for file in files_to_copy: |
41 |
| - src = os.path.join(package_path, file) |
42 |
| - dst = file |
43 |
| - print(f"Copying {src} to {dst}") |
44 |
| - shutil.copyfile(src, dst) |
| 50 | +# Try to create _version.py to avoid version related warning |
| 51 | +# Refer to https://github.com/vllm-project/vllm/pull/8771 |
| 52 | +try: |
| 53 | + from setuptools_scm import get_version |
| 54 | + get_version(write_to="vllm/_version.py") |
| 55 | +except ImportError: |
| 56 | + warnings.warn( |
| 57 | + "To avoid warnings related to vllm._version, " |
| 58 | + "you should install setuptools-scm by `pip install setuptools-scm`", |
| 59 | + stacklevel=2) |
| 60 | + |
| 61 | +if not args.quit_dev: |
| 62 | + for file in files_to_copy: |
| 63 | + src = os.path.join(package_path, file) |
| 64 | + dst = file |
| 65 | + print(f"Copying {src} to {dst}") |
| 66 | + shutil.copyfile(src, dst) |
| 67 | + |
| 68 | + pre_built_vllm_path = os.path.join(package_path, "vllm") |
| 69 | + tmp_path = os.path.join(package_path, "vllm_pre_built") |
| 70 | + current_vllm_path = os.path.join(cwd, "vllm") |
| 71 | + |
| 72 | + print(f"Renaming {pre_built_vllm_path} to {tmp_path} for backup") |
| 73 | + os.rename(pre_built_vllm_path, tmp_path) |
45 | 74 |
|
46 |
| -pre_built_vllm_path = os.path.join(package_path, "vllm") |
47 |
| -tmp_path = os.path.join(package_path, "vllm_pre_built") |
48 |
| -current_vllm_path = os.path.join(cwd, "vllm") |
| 75 | + print(f"Linking {current_vllm_path} to {pre_built_vllm_path}") |
| 76 | + os.symlink(current_vllm_path, pre_built_vllm_path) |
| 77 | +else: |
| 78 | + vllm_symlink_path = os.path.join(package_path, "vllm") |
| 79 | + vllm_backup_path = os.path.join(package_path, "vllm_pre_built") |
| 80 | + current_vllm_path = os.path.join(cwd, "vllm") |
49 | 81 |
|
50 |
| -print(f"Renaming {pre_built_vllm_path} to {tmp_path}") |
51 |
| -os.rename(pre_built_vllm_path, tmp_path) |
| 82 | + print(f"Unlinking {current_vllm_path} to {vllm_symlink_path}") |
| 83 | + assert os.path.islink( |
| 84 | + vllm_symlink_path |
| 85 | + ), f"not in dev mode: {vllm_symlink_path} is not a symbolic link" |
| 86 | + assert current_vllm_path == os.readlink( |
| 87 | + vllm_symlink_path |
| 88 | + ), "current directory is not the source code of package" |
| 89 | + os.unlink(vllm_symlink_path) |
52 | 90 |
|
53 |
| -print(f"linking {current_vllm_path} to {pre_built_vllm_path}") |
54 |
| -os.symlink(current_vllm_path, pre_built_vllm_path) |
| 91 | + print(f"Recovering backup from {vllm_backup_path} to {vllm_symlink_path}") |
| 92 | + os.rename(vllm_backup_path, vllm_symlink_path) |
0 commit comments