diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-09-15 19:08:15 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-09-15 19:27:00 +0300 |
commit | 335a6c0c87b805d2fe21a9d43294157b44fac28c (patch) | |
tree | ab2dc81bedd6626647f354206e6264c45da5a5dd /build_files | |
parent | 5b216aae8b3d53b0360f7c60f5197bdd88e322ca (diff) |
Cleanup: move Blender version parsing to make_utils.py
Ref D15957
Diffstat (limited to 'build_files')
-rwxr-xr-x | build_files/utils/make_source_archive.py | 60 | ||||
-rwxr-xr-x | build_files/utils/make_utils.py | 49 |
2 files changed, 56 insertions, 53 deletions
diff --git a/build_files/utils/make_source_archive.py b/build_files/utils/make_source_archive.py index befd6d84534..72325eafbc6 100755 --- a/build_files/utils/make_source_archive.py +++ b/build_files/utils/make_source_archive.py @@ -2,7 +2,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later import argparse -import dataclasses +import make_utils import os import re import subprocess @@ -50,7 +50,7 @@ def main() -> None: print(f"Output dir: {curdir}") - version = parse_blender_version(blender_srcdir) + version = make_utils.parse_blender_version() tarball = tarball_path(curdir, version, cli_args) manifest = manifest_path(tarball) packages_dir = packages_path(curdir, cli_args) @@ -62,53 +62,7 @@ def main() -> None: print("Done!") -@dataclasses.dataclass -class BlenderVersion: - version: int # 293 for 2.93.1 - patch: int # 1 for 2.93.1 - cycle: str # 'alpha', 'beta', 'release', maybe others. - - @property - def is_release(self) -> bool: - return self.cycle == "release" - - def __str__(self) -> str: - """Convert to version string. - - >>> str(BlenderVersion(293, 1, "alpha")) - '2.93.1-alpha' - >>> str(BlenderVersion(327, 0, "release")) - '3.27.0' - """ - version_major = self.version // 100 - version_minor = self.version % 100 - as_string = f"{version_major}.{version_minor}.{self.patch}" - if self.is_release: - return as_string - return f"{as_string}-{self.cycle}" - - -def parse_blender_version(blender_srcdir: Path) -> BlenderVersion: - version_path = blender_srcdir / "source/blender/blenkernel/BKE_blender_version.h" - - version_info = {} - line_re = re.compile(r"^#define (BLENDER_VERSION[A-Z_]*)\s+([0-9a-z]+)$") - - with version_path.open(encoding="utf-8") as version_file: - for line in version_file: - match = line_re.match(line.strip()) - if not match: - continue - version_info[match.group(1)] = match.group(2) - - return BlenderVersion( - int(version_info["BLENDER_VERSION"]), - int(version_info["BLENDER_VERSION_PATCH"]), - version_info["BLENDER_VERSION_CYCLE"], - ) - - -def tarball_path(output_dir: Path, version: BlenderVersion, cli_args: Any) -> Path: +def tarball_path(output_dir: Path, version: make_utils.BlenderVersion, cli_args: Any) -> Path: extra = "" if cli_args.include_packages: extra = "-with-libraries" @@ -148,7 +102,7 @@ def packages_path(current_directory: Path, cli_args: Any) -> Optional[Path]: def create_manifest( - version: BlenderVersion, + version: make_utils.BlenderVersion, outpath: Path, blender_srcdir: Path, packages_dir: Optional[Path], @@ -170,9 +124,9 @@ def main_files_to_manifest(blender_srcdir: Path, outfile: TextIO) -> None: def submodules_to_manifest( - blender_srcdir: Path, version: BlenderVersion, outfile: TextIO + blender_srcdir: Path, version: make_utils.BlenderVersion, outfile: TextIO ) -> None: - skip_addon_contrib = version.is_release + skip_addon_contrib = version.is_release() assert not blender_srcdir.is_absolute() for line in git_command("-C", blender_srcdir, "submodule"): @@ -200,7 +154,7 @@ def packages_to_manifest(outfile: TextIO, packages_dir: Path) -> None: def create_tarball( - version: BlenderVersion, tarball: Path, manifest: Path, blender_srcdir: Path, packages_dir: Optional[Path] + version: make_utils.BlenderVersion, tarball: Path, manifest: Path, blender_srcdir: Path, packages_dir: Optional[Path] ) -> None: print(f'Creating archive: "{tarball}" ...', end="", flush=True) command = ["tar"] diff --git a/build_files/utils/make_utils.py b/build_files/utils/make_utils.py index e4c676474b5..53d462331dd 100755 --- a/build_files/utils/make_utils.py +++ b/build_files/utils/make_utils.py @@ -9,6 +9,7 @@ import re import shutil import subprocess import sys +from pathlib import Path def call(cmd, exit_on_error=True, silent=False): @@ -101,3 +102,51 @@ def command_missing(command): return shutil.which(command) is None else: return False + + +class BlenderVersion: + def __init__(self, version, patch, cycle): + # 293 for 2.93.1 + self.version = version + # 1 for 2.93.1 + self.patch = patch + # 'alpha', 'beta', 'release', maybe others. + self.cycle = cycle + + def is_release(self) -> bool: + return self.cycle == "release" + + def __str__(self) -> str: + """Convert to version string. + + >>> str(BlenderVersion(293, 1, "alpha")) + '2.93.1-alpha' + >>> str(BlenderVersion(327, 0, "release")) + '3.27.0' + """ + version_major = self.version // 100 + version_minor = self.version % 100 + as_string = f"{version_major}.{version_minor}.{self.patch}" + if self.is_release(): + return as_string + return f"{as_string}-{self.cycle}" + +def parse_blender_version() -> BlenderVersion: + blender_srcdir = Path(__file__).absolute().parent.parent.parent + version_path = blender_srcdir / "source/blender/blenkernel/BKE_blender_version.h" + + version_info = {} + line_re = re.compile(r"^#define (BLENDER_VERSION[A-Z_]*)\s+([0-9a-z]+)$") + + with version_path.open(encoding="utf-8") as version_file: + for line in version_file: + match = line_re.match(line.strip()) + if not match: + continue + version_info[match.group(1)] = match.group(2) + + return BlenderVersion( + int(version_info["BLENDER_VERSION"]), + int(version_info["BLENDER_VERSION_PATCH"]), + version_info["BLENDER_VERSION_CYCLE"], + ) |