From b22d289e8c7503af01baca6a0cfeb58e77c3e01a Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Tue, 26 Apr 2022 23:52:12 +0200 Subject: [PATCH] Add utilities to update version of client, vboxwrapper and wrapper Signed-off-by: Vitalii Koshura --- set-vboxwrapper-version.py | 72 +++++++++++++++++++ set-version | 29 -------- set-version.py | 137 +++++++++++++++++++++++++++++++++++++ set-wrapper-version.py | 72 +++++++++++++++++++ 4 files changed, 281 insertions(+), 29 deletions(-) create mode 100644 set-vboxwrapper-version.py delete mode 100755 set-version create mode 100644 set-version.py create mode 100644 set-wrapper-version.py diff --git a/set-vboxwrapper-version.py b/set-vboxwrapper-version.py new file mode 100644 index 0000000000..63a76e4bed --- /dev/null +++ b/set-vboxwrapper-version.py @@ -0,0 +1,72 @@ +# This file is part of BOINC. +# https://boinc.berkeley.edu +# Copyright (C) 2022 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + +import sys + +def set_configure_ac(version): + with open('configure.ac', 'r') as f: + lines = f.readlines() + with open('configure.ac', 'w') as f: + for line in lines: + if line.startswith('VBOXWRAPPER_RELEASE='): + line = 'VBOXWRAPPER_RELEASE=%s\n' % (version) + f.write(line) + +def set_version_h(version): + with open('version.h', 'r') as f: + lines = f.readlines() + with open('version.h', 'w') as f: + for line in lines: + if line.startswith('#define VBOXWRAPPER_RELEASE'): + line = '#define VBOXWRAPPER_RELEASE %s\n' % (version) + f.write(line) + +def set_vcxproj(version): + for vcxproj in ['win_build/vboxwrapper.vcxproj', + 'win_build/vboxwrapper_vs2013.vcxproj', + 'win_build/vboxwrapper_vs2019.vcxproj']: + with open(vcxproj, 'r') as f: + lines = f.readlines() + with open(vcxproj, 'w') as f: + for line in lines: + if line.startswith(' vboxwrapper_'): + line = ' vboxwrapper_%s_windows_x86_64\n' % (version) + elif line.startswith(' vboxwrapper_'): + line = ' vboxwrapper_%s_windows_x86_64\n' % (version) + elif line.startswith(' vboxwrapper_'): + line = ' vboxwrapper_%s_windows_intelx86\n' % (version) + elif line.startswith(' vboxwrapper_'): + line = ' vboxwrapper_%s_windows_intelx86\n' % (version) + elif line.startswith(' vboxwrapper_'): + line = ' vboxwrapper_%s_windows_arm64\n' % (version) + elif line.startswith(' vboxwrapper_'): + line = ' vboxwrapper_%s_windows_arm64\n' % (version) + f.write(line) + +if (len(sys.argv) != 2): + print('Usage: set-vboxwrapper-version.py VERSION') + exit(1) + +version = sys.argv[1] + +print('Setting vboxwrapper version to %s...' % (version)) + +set_configure_ac(version) +set_version_h(version) +set_vcxproj(version) + +print('Done.') diff --git a/set-version b/set-version deleted file mode 100755 index 1c20e88937..0000000000 --- a/set-version +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# $Id$ - -# Change boinc version number in configure.ac and generate files. - -# syntax: set-version 7.17 - -die() -{ - echo "$@" >&2 - exit 1 -} - -cmd() -{ - "$@" || die "couldn't $*" -} - -if [ "$1" ]; then - echo "Setting BOINC version to $1." - - cmd mv configure.ac configure.ac.old - cmd sed "s/^AC_INIT.*/AC_INIT(BOINC, $1)/" configure.ac.old > configure.ac -else - echo "Updating files for BOINC version (assuming you manually changed configure.ac)" -fi - -cmd ./_autosetup -c diff --git a/set-version.py b/set-version.py new file mode 100644 index 0000000000..04a7549534 --- /dev/null +++ b/set-version.py @@ -0,0 +1,137 @@ +# This file is part of BOINC. +# https://boinc.berkeley.edu +# Copyright (C) 2022 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + +import os +import subprocess +import sys + +def split_version(version): + major = int(version.split('.')[0]) + minor = int(version.split('.')[1]) + release = int(version.split('.')[2]) + return major, minor, release + +def is_release(minor): + return minor % 2 == 0 + +def set_configure_ac(version): + with open('configure.ac', 'r') as f: + lines = f.readlines() + with open('configure.ac', 'w') as f: + for line in lines: + if line.startswith('AC_INIT'): + line = 'AC_INIT(BOINC, %s)\n' % (version) + f.write(line) + +def set_version_h(version): + major, minor, release = split_version(version) + with open('version.h', 'r') as f: + lines = f.readlines() + with open('version.h', 'w') as f: + for line in lines: + if line.startswith('#define BOINC_MAJOR_VERSION'): + line = '#define BOINC_MAJOR_VERSION %s\n' % (major) + elif line.startswith('#define BOINC_MINOR_VERSION'): + line = '#define BOINC_MINOR_VERSION %s\n' % (minor) + elif line.startswith('#define BOINC_RELEASE'): + line = '#define BOINC_RELEASE %s\n' % (release) + elif line.startswith('#define BOINC_VERSION_STRING'): + line = '#define BOINC_VERSION_STRING "%s.%s.%s"\n' % (major, minor, release) + elif line.startswith('#define PACKAGE_STRING'): + line = '#define PACKAGE_STRING "BOINC %s.%s.%s"\n' % (major, minor, release) + elif line.startswith('#define PACKAGE_VERSION'): + line = '#define PACKAGE_VERSION "%s.%s.%s"\n' % (major, minor, release) + elif line.find('#define BOINC_PRERELEASE 1') != -1: + if is_release(minor): + line = '//#define BOINC_PRERELEASE 1\n' + else: + line = '#define BOINC_PRERELEASE 1\n' + f.write(line) + +def set_version_log(version): + with open('version.log', 'w') as f: + line = '%s\n' % (version) + f.write(line) + +def set_build_gradle(version): + _, minor, _ = split_version(version) + if (is_release(minor)): + return + with open('android/BOINC/app/build.gradle', 'r') as f: + lines = f.readlines() + with open('android/BOINC/app/build.gradle', 'w') as f: + for line in lines: + if line.startswith(' def version = '): + line = ' def version = \'%s : DEVELOPMENT\'\n' % (version) + f.write(line) + +def set_vcpkg_json(version): + for json in ['android/vcpkg_config_apps/vcpkg.json', + 'android/vcpkg_config_client/vcpkg.json', + 'android/vcpkg_config_libs/vcpkg.json', + 'lib/vcpkg.json', + 'lib/vcpkg_config_android/vcpkg.json', + 'linux/vcpkg_config_apps/vcpkg.json', + 'linux/vcpkg_config_client/vcpkg.json', + 'linux/vcpkg_config_libs/vcpkg.json', + 'mingw/vcpkg_config_apps/vcpkg.json', + 'win_build/vcpkg_config_msbuild_ARM64/vcpkg.json', + 'win_build/vcpkg_config_msbuild_x64/vcpkg.json']: + with open(json, 'r') as f: + lines = f.readlines() + with open(json, 'w') as f: + for line in lines: + if line.startswith(' "version-string":'): + line = ' "version-string": "%s",\n' % (version) + f.write(line) + +def set_installshield(version): + for ism in ['win_build/installerv2/BOINCx64_vbox.ism', 'win_build/installerv2/BOINCx64.ism']: + with open(ism, 'r') as f: + lines = f.readlines() + with open(ism, 'w') as f: + for line in lines: + if line.startswith(' ProductVersion'): + line = ' ProductVersion%s\n' % (version) + f.write(line) + +if (len(sys.argv) != 2): + print('Usage: set-version.py VERSION') + exit(1) + +version = sys.argv[1] + +_, minor, release = split_version(version) + +if (not is_release(minor) and release != 0): + print('ERROR: for development version release number should be 0 but it\'s set to %s' % (release)) + exit(1) + +print('Setting BOINC version to %s...' % (version)) + +set_configure_ac(version) +set_version_h(version) +set_version_log(version) +set_build_gradle(version) +set_vcpkg_json(version) +set_installshield(version) + +if (os.name == 'posix' and sys.platform != 'darwin'): + print('Running autosetup...') + subprocess.call('./_autosetup -c', shell=True) + +print('Done.') diff --git a/set-wrapper-version.py b/set-wrapper-version.py new file mode 100644 index 0000000000..906e6e42e5 --- /dev/null +++ b/set-wrapper-version.py @@ -0,0 +1,72 @@ +# This file is part of BOINC. +# https://boinc.berkeley.edu +# Copyright (C) 2022 University of California +# +# BOINC is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# BOINC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with BOINC. If not, see . + +import sys + +def set_configure_ac(version): + with open('configure.ac', 'r') as f: + lines = f.readlines() + with open('configure.ac', 'w') as f: + for line in lines: + if line.startswith('WRAPPER_RELEASE='): + line = 'WRAPPER_RELEASE=%s\n' % (version) + f.write(line) + +def set_version_h(version): + with open('version.h', 'r') as f: + lines = f.readlines() + with open('version.h', 'w') as f: + for line in lines: + if line.startswith('#define WRAPPER_RELEASE'): + line = '#define WRAPPER_RELEASE %s\n' % (version) + f.write(line) + +def set_vcxproj(version): + for vcxproj in ['win_build/wrapper.vcxproj', + 'win_build/wrapper_vs2013.vcxproj', + 'win_build/wrapper_vs2019.vcxproj']: + with open(vcxproj, 'r') as f: + lines = f.readlines() + with open(vcxproj, 'w') as f: + for line in lines: + if line.startswith(' wrapper_'): + line = ' wrapper_%s_windows_x86_64\n' % (version) + elif line.startswith(' wrapper_'): + line = ' wrapper_%s_windows_x86_64\n' % (version) + elif line.startswith(' wrapper_'): + line = ' wrapper_%s_windows_intelx86\n' % (version) + elif line.startswith(' wrapper_'): + line = ' wrapper_%s_windows_intelx86\n' % (version) + elif line.startswith(' wrapper_'): + line = ' wrapper_%s_windows_arm64\n' % (version) + elif line.startswith(' wrapper_'): + line = ' wrapper_%s_windows_arm64\n' % (version) + f.write(line) + +if (len(sys.argv) != 2): + print('Usage: set-wrapper-version.py VERSION') + exit(1) + +version = sys.argv[1] + +print('Setting wrapper version to %s...' % (version)) + +set_configure_ac(version) +set_version_h(version) +set_vcxproj(version) + +print('Done.')