Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-08-23 20:35:02 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-08-30 18:57:18 +0300
commite218d8c24bfbd5384e040417e533ede96c4e831b (patch)
tree962ef76ad77e62e4c1eb66bcac093e55c10cd2e1 /build_files/utils
parentfd48e17461e391c90ff9af96650480b35190e37e (diff)
Build: integrate make_update.py into Windows make.bat
Diffstat (limited to 'build_files/utils')
-rwxr-xr-xbuild_files/utils/make_update.py152
1 files changed, 95 insertions, 57 deletions
diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py
index b4125e0aeec..5d82075d562 100755
--- a/build_files/utils/make_update.py
+++ b/build_files/utils/make_update.py
@@ -1,12 +1,49 @@
#!/usr/bin/env python3
-
+#
+# "make update" for all platforms, updating svn libraries and tests and Blender
+# git repository and submodules.
+#
+# For release branches, this will check out the appropriate branches of
+# submodules and libraries.
+
+import argparse
import os
import re
+import shutil
import subprocess
import sys
+# Parse arguments
+
+def parse_arguments():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--only-code", action="store_true")
+ parser.add_argument("--svn-command", default="svn")
+ parser.add_argument("--git-command", default="git")
+ return parser.parse_args()
+
+args = parse_arguments()
+only_code = args.only_code
+git_command = args.git_command
+svn_command = args.svn_command
+
+if shutil.which(git_command) is None:
+ sys.stderr.write("git not found, can't update code\n")
+ sys.exit(1)
+
+if shutil.which(svn_command) is None:
+ sys.stderr.write("svn not found, can't update libraries\n")
+ sys.exit(1)
+
+# Utility functions
+
def call(cmd):
print(" ".join(cmd))
+
+ # Flush to ensure correct order output on Windows.
+ sys.stdout.flush()
+ sys.stderr.flush()
+
retcode = subprocess.call(cmd)
if retcode != 0:
sys.exit(retcode)
@@ -16,11 +53,11 @@ def print_stage(text):
print(text)
print("")
-# Test if we are building a specific release version
+# Test if we are building a specific release version.
try:
- branch = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"])
+ branch = subprocess.check_output([git_command, "rev-parse", "--abbrev-ref", "HEAD"])
except subprocess.CalledProcessError as e:
- sys.stderr("Failed to get Blender git branch\n")
+ sys.stderr.write("Failed to get Blender git branch\n")
sys.exit(1)
branch = branch.strip().decode('utf8')
@@ -29,63 +66,64 @@ if release_version:
release_version = release_version.group(1)
print("Using Release Blender v" + release_version)
-# Setup for precompiled libraries and tests from svn
-lib_dirpath = os.path.join('..', 'lib')
-
-if release_version:
- svn_branch = "tags/blender-" + release_version + "-release"
-else:
- svn_branch = "trunk"
-svn_url = "https://svn.blender.org/svnroot/bf-blender/" + svn_branch + "/lib/"
-
-# Checkout precompiled libraries
-if sys.platform == 'darwin':
- lib_platform = "darwin"
-elif sys.platform == 'win32':
- # Windows checkout is usually handled by bat scripts since python3 to run
- # this script is bundled as part of the precompiled libraries. However it
- # is used by the buildbot.
- lib_platform = "win64_vc14"
-else:
- # No precompiled libraries for Linux.
- lib_platform = None
-
-if lib_platform:
- lib_platform_dirpath = os.path.join(lib_dirpath, lib_platform)
-
- if not os.path.exists(lib_platform_dirpath):
- print_stage("Checking out Precompiled Libraries")
-
- svn_url_platform = svn_url + lib_platform
- call(["svn", "checkout", svn_url_platform, lib_platform_dirpath])
-
-# Update precompiled libraries and tests
-print_stage("Updating Precompiled Libraries and Tests")
-
-if os.path.isdir(lib_dirpath):
- for dirname in os.listdir(lib_dirpath):
- if dirname == ".svn":
- continue
-
- dirpath = os.path.join(lib_dirpath, dirname)
- svn_dirpath = os.path.join(dirpath, ".svn")
- svn_root_dirpath = os.path.join(lib_dirpath, ".svn")
-
- if os.path.isdir(dirpath) and \
- (os.path.exists(svn_dirpath) or os.path.exists(svn_root_dirpath)):
- call(["svn", "cleanup", dirpath])
- call(["svn", "switch", svn_url + dirname, dirpath])
- call(["svn", "update", dirpath])
-
-# Update blender repository and submodules
+# Setup for precompiled libraries and tests from svn.
+if not only_code:
+ lib_dirpath = os.path.join('..', 'lib')
+
+ if release_version:
+ svn_branch = "tags/blender-" + release_version + "-release"
+ else:
+ svn_branch = "trunk"
+ svn_url = "https://svn.blender.org/svnroot/bf-blender/" + svn_branch + "/lib/"
+
+ # Checkout precompiled libraries
+ if sys.platform == 'darwin':
+ lib_platform = "darwin"
+ elif sys.platform == 'win32':
+ # Windows checkout is usually handled by bat scripts since python3 to run
+ # this script is bundled as part of the precompiled libraries. However it
+ # is used by the buildbot.
+ lib_platform = "win64_vc14"
+ else:
+ # No precompiled libraries for Linux.
+ lib_platform = None
+
+ if lib_platform:
+ lib_platform_dirpath = os.path.join(lib_dirpath, lib_platform)
+
+ if not os.path.exists(lib_platform_dirpath):
+ print_stage("Checking out Precompiled Libraries")
+
+ svn_url_platform = svn_url + lib_platform
+ call([svn_command, "checkout", svn_url_platform, lib_platform_dirpath])
+
+ # Update precompiled libraries and tests
+ print_stage("Updating Precompiled Libraries and Tests")
+
+ if os.path.isdir(lib_dirpath):
+ for dirname in os.listdir(lib_dirpath):
+ if dirname == ".svn":
+ continue
+
+ dirpath = os.path.join(lib_dirpath, dirname)
+ svn_dirpath = os.path.join(dirpath, ".svn")
+ svn_root_dirpath = os.path.join(lib_dirpath, ".svn")
+
+ if os.path.isdir(dirpath) and \
+ (os.path.exists(svn_dirpath) or os.path.exists(svn_root_dirpath)):
+ call([svn_command, "cleanup", dirpath])
+ call([svn_command, "switch", svn_url + dirname, dirpath])
+ call([svn_command, "update", dirpath])
+
+# Update blender repository and submodules.
print_stage("Updating Blender Git Repository and Submodules")
-call(["git", "pull", "--rebase"])
-call(["git", "submodule", "update", "--init", "--recursive"])
+call([git_command, "pull", "--rebase"])
+call([git_command, "submodule", "update", "--init", "--recursive"])
if not release_version:
# Update submodules to latest master if not building a specific release.
# In that case submodules are set to a specific revision, which is checked
# out by running "git submodule update".
- call(["git", "submodule", "foreach", "git", "checkout", "master"])
- call(["git", "submodule", "foreach", "git", "pull", "--rebase", "origin", "master"])
+ call([git_command, "submodule", "foreach", "git", "checkout", "master"])
+ call([git_command, "submodule", "foreach", "git", "pull", "--rebase", "origin", "master"])