[Bf-blender-cvs] [8e9e58895b3] blender-v2.81-release: Fix issues with make_update.py when run from release branch

Sergey Sharybin noreply at git.blender.org
Tue Nov 12 14:02:25 CET 2019


Commit: 8e9e58895b32afc38f856053335c9b27324c6f9e
Author: Sergey Sharybin
Date:   Tue Nov 12 11:16:01 2019 +0100
Branches: blender-v2.81-release
https://developer.blender.org/rB8e9e58895b32afc38f856053335c9b27324c6f9e

Fix issues with make_update.py when run from release branch

The issue was rooting to the fact that the script was iterating into
every directory inside of blender.git/../lib/ and attempted to switch
them to the desired path. This doesn't work in an environment where
both master and release branch are built (or any environment where
non-needed SVN directories are not automatically removed).

This change makes it so script explicitly generates a list of
directories which are required for the build. For example, the script
now stores an exact folder with ABI such as win64_vc14.

Only those explicitly listed directories will be updated.

This allows to:

- Solve compilation failure of 2.81 branch after checkout for
  win64_vc15 libraries has been created.

- Fail compilation if actually expected tag is missing (for example,
  when trying to build release branch prior to libraries tag).

Now, there was a confusing logic about possible .svn folder in
lib_dirpath (effectively, blender.git/../lib/.svn) which is not
something what is supposed to happen with the setup of buildbot we are
using for quite some time now. This logic has been removed now.

This change includes old-style string format(), mainly because it is
not know that the buidlbot scripts are run using python3 on CentOS
builder.

Differential Revision: https://developer.blender.org/D6230

===================================================================

M	build_files/utils/make_update.py

===================================================================

diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py
index ec72514fdfc..82a95d8ae5b 100755
--- a/build_files/utils/make_update.py
+++ b/build_files/utils/make_update.py
@@ -41,6 +41,11 @@ def svn_update(args, release_version):
     lib_dirpath = os.path.join(get_blender_git_root(), '..', 'lib')
     svn_url = make_utils.svn_libraries_base_url(release_version)
 
+    # List of directory names which corresponds to used SVN checkouts.
+    # Is used to ensure the checkout points to a valid branch/tag.
+    # Should consists only of directory name, such as "win64_vc14", for example.
+    used_lib_dir_names = []
+
     # Checkout precompiled libraries
     if sys.platform == 'darwin':
         lib_platform = "darwin"
@@ -58,6 +63,8 @@ def svn_update(args, release_version):
     if lib_platform:
         lib_platform_dirpath = os.path.join(lib_dirpath, lib_platform)
 
+        used_lib_dir_names.append(lib_platform)
+
         if not os.path.exists(lib_platform_dirpath):
             print_stage("Checking out Precompiled Libraries")
 
@@ -72,6 +79,8 @@ def svn_update(args, release_version):
         lib_tests = "tests"
         lib_tests_dirpath = os.path.join(lib_dirpath, lib_tests)
 
+        used_lib_dir_names.append(lib_tests)
+
         if not os.path.exists(lib_tests_dirpath):
             print_stage("Checking out Tests")
 
@@ -86,20 +95,13 @@ def svn_update(args, release_version):
     print_stage("Updating Precompiled Libraries and Tests")
 
     if os.path.isdir(lib_dirpath):
-      for dirname in os.listdir(lib_dirpath):
+      for dirname in used_lib_dir_names:
+        print_stage("Updating {}" . format(dirname))
         dirpath = os.path.join(lib_dirpath, dirname)
 
-        if dirname == ".svn":
-            # Cleanup must be run from svn root directory if it exists.
-            if not make_utils.command_missing(args.svn_command):
-                call(svn_non_interactive + ["cleanup", lib_dirpath])
-            continue
-
         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)):
+        if os.path.isdir(dirpath) and os.path.exists(svn_dirpath):
             if make_utils.command_missing(args.svn_command):
                 sys.stderr.write("svn not found, can't update libraries\n")
                 sys.exit(1)



More information about the Bf-blender-cvs mailing list