From 60abeddc5552fbb6dc276d3d82a25553e81dda4e Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 17 Feb 2023 13:42:15 +0100 Subject: [PATCH] Make update: Add --architecture command line attribute Possible values are x86_64 and arm64. Allows to use make_update.py in a cross-compile environment, like building x86_64 macOS Blender from Apple Silicon machine. Pull Request #104863 --- build_files/utils/make_update.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py index a6fecdce54f..c5e3a5fafe6 100755 --- a/build_files/utils/make_update.py +++ b/build_files/utils/make_update.py @@ -42,6 +42,7 @@ def parse_arguments() -> argparse.Namespace: parser.add_argument("--svn-branch", default=None) parser.add_argument("--git-command", default="git") parser.add_argument("--use-linux-libraries", action="store_true") + parser.add_argument("--architecture", type=str, choices=("x86_64", "arm64",)) return parser.parse_args() @@ -51,6 +52,17 @@ def get_blender_git_root() -> str: # Setup for precompiled libraries and tests from svn. +def get_effective_architecture(args: argparse.Namespace): + if args.architecture: + return args.architecture + + # Check platform.version to detect arm64 with x86_64 python binary. + if "ARM64" in platform.version(): + return "arm64" + + return platform.machine().lower() + + def svn_update(args: argparse.Namespace, release_version: Optional[str]) -> None: svn_non_interactive = [args.svn_command, '--non-interactive'] @@ -58,11 +70,11 @@ def svn_update(args: argparse.Namespace, release_version: Optional[str]) -> None svn_url = make_utils.svn_libraries_base_url(release_version, args.svn_branch) # Checkout precompiled libraries + architecture = get_effective_architecture(args) if sys.platform == 'darwin': - # Check platform.version to detect arm64 with x86_64 python binary. - if platform.machine() == 'arm64' or ('ARM64' in platform.version()): + if architecture == 'arm64': lib_platform = "darwin_arm64" - elif platform.machine() == 'x86_64': + elif architecture == 'x86_64': lib_platform = "darwin" else: lib_platform = None