From 81849e7c9dcd7c41df0b309a04fed34429580748 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 31 Aug 2019 14:24:52 +0200 Subject: [PATCH] Buildbot: support building releases, make non-releases more consistent * Auto detect rc and release version cycle in BKE_blender_version.h. * On Windows, generate zip and installer if a release is detected. * On macOS, always generate a dmg instead of zip. * Use standard package names without hash if a release is detected. * Buildbot package names now match platform names in releases. Ref T67056 Differential Revision: https://developer.blender.org/D5643 --- build_files/buildbot/buildbot_utils.py | 20 ++++++ build_files/buildbot/slave_pack.py | 68 ++++++++++++------ release/darwin/buildbot/background.tif | Bin 0 -> 20286 bytes release/darwin/bundle.sh | 5 ++ .../blender/blenkernel/BKE_blender_version.h | 2 + .../windowmanager/intern/wm_splash_screen.c | 5 ++ 6 files changed, 78 insertions(+), 22 deletions(-) create mode 100644 release/darwin/buildbot/background.tif diff --git a/build_files/buildbot/buildbot_utils.py b/build_files/buildbot/buildbot_utils.py index 653f8ac2d97..6891b91aa1e 100644 --- a/build_files/buildbot/buildbot_utils.py +++ b/build_files/buildbot/buildbot_utils.py @@ -66,8 +66,28 @@ class VersionInfo: version_number = int(self._parse_header_file(blender_h, 'BLENDER_VERSION')) self.version = "%d.%d" % (version_number // 100, version_number % 100) + self.version_char = self._parse_header_file(blender_h, 'BLENDER_VERSION_CHAR') + self.version_cycle = self._parse_header_file(blender_h, 'BLENDER_VERSION_CYCLE') + self.version_cycle_number = self._parse_header_file(blender_h, 'BLENDER_VERSION_CYCLE_NUMBER') self.hash = self._parse_header_file(buildinfo_h, 'BUILD_HASH')[1:-1] + if self.version_cycle == "release": + # Final release + self.full_version = self.version + self.version_char + self.is_development_build = False + elif self.version_cycle == "rc": + # Release candidate + version_cycle = self.version_cycle + self.version_cycle_number + if len(self.version_char) == 0: + self.full_version = self.version + version_cycle + else: + self.full_version = self.version + self.version_char + '-' + version_cycle + self.is_development_build = False + else: + # Development build + self.full_version = self.version + '-' + self.hash + self.is_development_build = True + def _parse_header_file(self, filename, define): import re regex = re.compile("^#\s*define\s+%s\s+(.*)" % define) diff --git a/build_files/buildbot/slave_pack.py b/build_files/buildbot/slave_pack.py index b81b12c0af4..45331cce61f 100644 --- a/build_files/buildbot/slave_pack.py +++ b/build_files/buildbot/slave_pack.py @@ -29,15 +29,15 @@ import sys def get_package_name(builder, platform=None): info = buildbot_utils.VersionInfo(builder) - package_name = 'blender-' + info.version + '-' + info.hash + package_name = 'blender-' + info.full_version if platform: package_name += '-' + platform - if builder.branch != 'master': + if builder.branch != 'master' and info.is_development_build: package_name = builder.branch + "-" + package_name return package_name -def create_buildbot_upload_zip(builder, package_filepath, package_filename): +def create_buildbot_upload_zip(builder, package_files): import zipfile buildbot_upload_zip = os.path.join(builder.upload_dir, "buildbot_upload.zip") @@ -46,7 +46,8 @@ def create_buildbot_upload_zip(builder, package_filepath, package_filename): try: z = zipfile.ZipFile(buildbot_upload_zip, "w", compression=zipfile.ZIP_STORED) - z.write(package_filepath, arcname=package_filename) + for filepath, filename in package_files: + z.write(filepath, arcname=filename) z.close() except Exception as ex: sys.stderr.write('Create buildbot_upload.zip failed: ' + str(ex) + '\n') @@ -74,38 +75,61 @@ def cleanup_files(dirpath, extension): if os.path.isfile(filepath) and f.endswith(extension): os.remove(filepath) -def find_file(dirpath, extension): - for f in os.listdir(dirpath): - filepath = os.path.join(dirpath, f) - if os.path.isfile(filepath) and f.endswith(extension): - return f - return None - def pack_mac(builder): + info = buildbot_utils.VersionInfo(builder) + os.chdir(builder.build_dir) - cleanup_files(builder.build_dir, '.zip') + cleanup_files(builder.build_dir, '.dmg') - package_name = get_package_name(builder, 'OSX-10.9-x86_64') - package_filename = package_name + '.zip' + package_name = get_package_name(builder, 'macOS') + package_filename = package_name + '.dmg' + package_filepath = os.path.join(builder.build_dir, package_filename) - buildbot_utils.call(['cpack', '-G', 'ZIP']) - package_filepath = find_file(builder.build_dir, '.zip') + release_dir = os.path.join(builder.blender_dir, 'release', 'darwin') + bundle_sh = os.path.join(release_dir, 'bundle.sh') + if info.is_development_build: + background_image = os.path.join(release_dir, 'buildbot', 'background.tif') - create_buildbot_upload_zip(builder, package_filepath, package_filename) + command = [bundle_sh] + command += ['--source', builder.install_dir] + command += ['--dmg', package_filepath] + command += ['--background-image', background_image] + buildbot_utils.call(command) + + create_buildbot_upload_zip(builder, [(package_filepath, package_filename)]) def pack_win(builder): + info = buildbot_utils.VersionInfo(builder) + os.chdir(builder.build_dir) cleanup_files(builder.build_dir, '.zip') - package_name = get_package_name(builder, 'win' + str(builder.bits)) + # CPack will add the platform name + cpack_name = get_package_name(builder, None) + package_name = get_package_name(builder, 'windows' + str(builder.bits)) + + command = ['cmake', '-DCPACK_OVERRIDE_PACKAGENAME:STRING=' + cpack_name, '.'] + buildbot_utils.call(builder.command_prefix + command) + command = ['cpack', '-G', 'ZIP'] + buildbot_utils.call(builder.command_prefix + command) + package_filename = package_name + '.zip' + package_filepath = os.path.join(builder.build_dir, package_filename) + package_files = [(package_filepath, package_filename)] - buildbot_utils.call(['cpack', '-G', 'ZIP']) - package_filepath = find_file(builder.build_dir, '.zip') + if info.version_cycle == 'release': + # Installer only for final release builds, otherwise will get + # 'this product is already installed' messages. + command = ['cpack', '-G', 'WIX'] + buildbot_utils.call(builder.command_prefix + command) - create_buildbot_upload_zip(builder, package_filepath, package_filename) + package_filename = package_name + '.msi' + package_filepath = os.path.join(builder.build_dir, package_filename) + package_files += [(package_filepath, package_filename)] + + create_buildbot_upload_zip(builder, package_files) def pack_linux(builder): @@ -147,7 +171,7 @@ def pack_linux(builder): create_tar_bz2(builder.install_dir, package_filepath, package_name) # Create buildbot_upload.zip - create_buildbot_upload_zip(builder, package_filepath, package_filename) + create_buildbot_upload_zip(builder, [(package_filepath, package_filename)]) if __name__ == "__main__": diff --git a/release/darwin/buildbot/background.tif b/release/darwin/buildbot/background.tif new file mode 100644 index 0000000000000000000000000000000000000000..5253a6bf439615466946e032d908e0418458f5c2 GIT binary patch literal 20286 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%0AL`+7w z=*?t%QjY9NX|c-MeH6lVhGT<NCVlp~9DOHp_TiA`2(q@{v2DO&mVFK8^%zjk7~9z?w{n1@ z_yB}gs^{7Cv!cXFO-&o&bA`6Sqr*H|*3h__xEd^w2xggF$#Ft-LsP?N8@oQX@c^GY zl{57*=c=H8_RC{|s4yrU^d>kVl0?ZHySfls2rDhhX2R;@O4iUB0H6I%TM#G`5C+K0 z*viWJqUIH~_fc4F7$Q%UPn@-Ru;Bd1A|8Ou&IyKV(w38p$|M1&AA3#vRdE5gLqi?R zIP-xSL@~~%kXJz9DSxR^xN<6Ab*t_)c8xLH$eA$)6e^4poAA1-UpDbAc}tn0#(FvZ z_VO@Goi_!YGaivhQ0736PEcU&FMk+b3KE(Eo|{|Ch=({}b*1Plg6q@c$weg8z{j z;OhSutLprZ%>Mr>v#r}}=IW;)BG47+4hU0=xM^6oZ)gGFMGdTf=_a6VaSNb*=xacDZ5J2`WhIGLMTxp0`7yK$J+1 zqpSBEXC8zD{5%Aa0QDqOX9tP5ZvlKjp#K~(^uG<@`DpUyu|Z>On7Mk%;=jD`BTyDd zCYl&oBmVNAj{i4DTr+cLQ{aCWz^}QfgOdw@p&3Baxw|-E=pcZ8;sh`S&}kUj@*f%q zB0*0~{-N7%`e>+20ez+b`njoHn{5 z{y?fA+IoF`-S}VE6k0)`a$qEG{eN9!0(6BCFpBPa2V*DWoB1%|^DPTN(tEjp{pf-~ xM8m)seP;`9uABd3J&*)}?#^9b?*saV6ANTfQP*?=9+054P7{U3a=_LKks literal 0 HcmV?d00001 diff --git a/release/darwin/bundle.sh b/release/darwin/bundle.sh index b0f489e6fc2..91ce4f61d37 100755 --- a/release/darwin/bundle.sh +++ b/release/darwin/bundle.sh @@ -54,6 +54,11 @@ while [[ $# -gt 0 ]]; do shift shift ;; + --background-image) + _background_image="$2" + shift + shift + ;; -h|--help) echo "Usage:" echo " $(basename "$0") --source DIR --dmg IMAGENAME " diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h index db93193bfe3..65086f57616 100644 --- a/source/blender/blenkernel/BKE_blender_version.h +++ b/source/blender/blenkernel/BKE_blender_version.h @@ -37,6 +37,8 @@ #define BLENDER_VERSION_CHAR /** alpha/beta/rc/release, docs use this. */ #define BLENDER_VERSION_CYCLE alpha +/** Optionally set to 1,2,... for example to to get alpha1 or rc2. */ +#define BLENDER_VERSION_CYCLE_NUMBER /** Defined in from blender.c */ extern char versionstr[]; diff --git a/source/blender/windowmanager/intern/wm_splash_screen.c b/source/blender/windowmanager/intern/wm_splash_screen.c index 8629997030f..9cbcab9e3b2 100644 --- a/source/blender/windowmanager/intern/wm_splash_screen.c +++ b/source/blender/windowmanager/intern/wm_splash_screen.c @@ -139,6 +139,11 @@ static void wm_block_splash_add_labels(uiBlock *block, int x, int y) BLENDER_VERSION % 100, version_suffix); + const char *cycle_number_suffix = STRINGIFY(BLENDER_VERSION_CYCLE_NUMBER); + if (strlen(cycle_number_suffix)) { + BLI_snprintf(version_buf, sizeof(version_buf), "%s %s", version_buf, cycle_number_suffix); + } + wm_block_splash_add_label(block, version_buf, x, &y); #ifdef WITH_BUILDINFO