|
| 1 | +import re |
1 | 2 | import subprocess
|
2 |
| -from setuptools import setup, find_packages |
| 3 | +from setuptools import setup |
3 | 4 | from setuptools_scm.git import parse as parse_git
|
4 | 5 |
|
5 | 6 |
|
6 | 7 | def version():
|
7 |
| - yosys_makefile_ver = subprocess.check_output([ |
| 8 | + yosys_version_raw = subprocess.check_output([ |
8 | 9 | "make", "-s", "-C", "yosys-src", "echo-yosys-ver"
|
9 |
| - ], encoding="utf-8").strip().split("+") |
10 |
| - if len(yosys_makefile_ver) == 1: |
11 |
| - yosys_version = yosys_makefile_ver[0] |
12 |
| - elif len(yosys_makefile_ver) == 2: |
13 |
| - yosys_version = f"{yosys_makefile_ver[0]}.post{yosys_makefile_ver[1]}" |
14 |
| - else: |
15 |
| - assert False |
| 10 | + ], encoding="utf-8").strip() |
16 | 11 |
|
17 |
| - package_git = parse_git(".") |
18 |
| - package_version = package_git.format_with(".dev{distance}") |
| 12 | + # Yosys can't figure out if it should have a patch version or not. |
| 13 | + # Match one, and add one below in our version just in case. |
| 14 | + yosys_version = re.match(r"^(\d+)\.(\d+)(?:\.(\d+))?(?:\+(\d+))?$", yosys_version_raw) |
19 | 15 |
|
20 |
| - return yosys_version + package_version |
| 16 | + yosys_major = yosys_version[1] |
| 17 | + yosys_minor = yosys_version[2] |
| 18 | + yosys_patch = yosys_version[3] or "0" |
| 19 | + yosys_node = yosys_version[4] or "0" |
| 20 | + git_distance = parse_git(".").format_with("post{distance}") |
| 21 | + |
| 22 | + return ".".join([yosys_major, yosys_minor, yosys_patch, yosys_node, git_distance]) |
21 | 23 |
|
22 | 24 |
|
23 | 25 | setup(
|
|
0 commit comments