macOS: don't require python3 to be installed to run "make update"

And fall back to python3 from our libraries for other commands, once checked
out with make update.
This commit is contained in:
Brecht Van Lommel
2019-09-30 10:19:55 +02:00
parent a6a0a09197
commit 64c8e9a219
4 changed files with 30 additions and 13 deletions

View File

@@ -192,6 +192,16 @@ ifndef PYTHON
PYTHON:=python3 PYTHON:=python3
endif endif
# For macOS python3 is not installed by default, so fallback to python binary
# in libraries, or python 2 for running make update to get it.
ifeq ($(OS_NCASE),darwin)
ifeq (, $(shell command -v $(PYTHON)))
PYTHON:=../lib/darwin/python/bin/python3.7m
ifeq (, $(shell command -v $(PYTHON)))
PYTHON:=python
endif
endif
endif
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# additional targets for the build configuration # additional targets for the build configuration
@@ -374,7 +384,7 @@ package_archive: .FORCE
# Tests # Tests
# #
test: .FORCE test: .FORCE
python3 ./build_files/utils/make_test.py "$(BUILD_DIR)" $(PYTHON) ./build_files/utils/make_test.py "$(BUILD_DIR)"
# run pep8 check check on scripts we distribute. # run pep8 check check on scripts we distribute.
test_pep8: .FORCE test_pep8: .FORCE
@@ -530,11 +540,11 @@ icons_geom: .FORCE
"$(BLENDER_DIR)/release/datafiles/blender_icons_geom_update.py" "$(BLENDER_DIR)/release/datafiles/blender_icons_geom_update.py"
update: .FORCE update: .FORCE
python3 ./build_files/utils/make_update.py $(PYTHON) ./build_files/utils/make_update.py
format: .FORCE format: .FORCE
PATH="../lib/${OS_NCASE}/llvm/bin/:$(PATH)" \ PATH="../lib/${OS_NCASE}/llvm/bin/:$(PATH)" \
python3 source/tools/utils_maintenance/clang_format_paths.py $(PATHS) $(PYTHON) source/tools/utils_maintenance/clang_format_paths.py $(PATHS)
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------

View File

@@ -30,11 +30,11 @@ cmake_command = args.cmake_command
config = args.config config = args.config
build_dir = args.build_directory build_dir = args.build_directory
if shutil.which(ctest_command) is None: if make_utils.command_missing(ctest_command):
sys.stderr.write("ctest not found, can't run tests\n") sys.stderr.write("ctest not found, can't run tests\n")
sys.exit(1) sys.exit(1)
if shutil.which(git_command) is None: if make_utils.command_missing(git_command):
sys.stderr.write("git not found, can't run tests\n") sys.stderr.write("git not found, can't run tests\n")
sys.exit(1) sys.exit(1)
@@ -45,11 +45,11 @@ lib_tests_dirpath = os.path.join('..', 'lib', "tests")
if not os.path.exists(lib_tests_dirpath): if not os.path.exists(lib_tests_dirpath):
print("Tests files not found, downloading...") print("Tests files not found, downloading...")
if shutil.which(svn_command) is None: if make_utils.command_missing(svn_command):
sys.stderr.write("svn not found, can't checkout test files\n") sys.stderr.write("svn not found, can't checkout test files\n")
sys.exit(1) sys.exit(1)
if shutil.which(cmake_command) is None: if make_utils.command_missing(cmake_command):
sys.stderr.write("cmake not found, can't checkout test files\n") sys.stderr.write("cmake not found, can't checkout test files\n")
sys.exit(1) sys.exit(1)

View File

@@ -30,7 +30,6 @@ def parse_arguments():
parser.add_argument("--git-command", default="git") parser.add_argument("--git-command", default="git")
return parser.parse_args() return parser.parse_args()
# Setup for precompiled libraries and tests from svn. # Setup for precompiled libraries and tests from svn.
def svn_update(args, release_version): def svn_update(args, release_version):
svn_non_interactive = [args.svn_command, '--non-interactive'] svn_non_interactive = [args.svn_command, '--non-interactive']
@@ -56,7 +55,7 @@ def svn_update(args, release_version):
if not os.path.exists(lib_platform_dirpath): if not os.path.exists(lib_platform_dirpath):
print_stage("Checking out Precompiled Libraries") print_stage("Checking out Precompiled Libraries")
if shutil.which(args.svn_command) is None: if make_utils.command_missing(args.svn_command):
sys.stderr.write("svn not found, can't checkout libraries\n") sys.stderr.write("svn not found, can't checkout libraries\n")
sys.exit(1) sys.exit(1)
@@ -70,7 +69,7 @@ def svn_update(args, release_version):
if not os.path.exists(lib_tests_dirpath): if not os.path.exists(lib_tests_dirpath):
print_stage("Checking out Tests") print_stage("Checking out Tests")
if shutil.which(args.svn_command) is None: if make_utils.command_missing(args.svn_command):
sys.stderr.write("svn not found, can't checkout tests\n") sys.stderr.write("svn not found, can't checkout tests\n")
sys.exit(1) sys.exit(1)
@@ -91,7 +90,7 @@ def svn_update(args, release_version):
if os.path.isdir(dirpath) and \ if os.path.isdir(dirpath) and \
(os.path.exists(svn_dirpath) or os.path.exists(svn_root_dirpath)): (os.path.exists(svn_dirpath) or os.path.exists(svn_root_dirpath)):
if shutil.which(args.svn_command) is None: if make_utils.command_missing(args.svn_command):
sys.stderr.write("svn not found, can't update libraries\n") sys.stderr.write("svn not found, can't update libraries\n")
sys.exit(1) sys.exit(1)
@@ -102,7 +101,7 @@ def svn_update(args, release_version):
# Update blender repository. # Update blender repository.
def blender_update_skip(args): def blender_update_skip(args):
if shutil.which(args.git_command) is None: if make_utils.command_missing(args.git_command):
sys.stderr.write("git not found, can't update code\n") sys.stderr.write("git not found, can't update code\n")
sys.exit(1) sys.exit(1)
@@ -136,7 +135,7 @@ def blender_update(args):
# Update submodules. # Update submodules.
def submodules_update(args, release_version): def submodules_update(args, release_version):
print_stage("Updating Submodules") print_stage("Updating Submodules")
if shutil.which(args.git_command) is None: if make_utils.command_missing(args.git_command):
sys.stderr.write("git not found, can't update code\n") sys.stderr.write("git not found, can't update code\n")
sys.exit(1) sys.exit(1)

View File

@@ -3,6 +3,7 @@
# Utility functions for make update and make tests. # Utility functions for make update and make tests.
import re import re
import shutil
import subprocess import subprocess
import sys import sys
@@ -54,3 +55,10 @@ def svn_libraries_base_url(release_version):
else: else:
svn_branch = "trunk" svn_branch = "trunk"
return "https://svn.blender.org/svnroot/bf-blender/" + svn_branch + "/lib/" return "https://svn.blender.org/svnroot/bf-blender/" + svn_branch + "/lib/"
def command_missing(command):
# Support running with Python 2 for macOS
if sys.version_info >= (3, 0):
return shutil.which(command) is None
else:
return False