Move build_version.py script to scripts dir (#7320)

* Delete job-build-raspberry-pi.yaml

* Update ChangeLog

* Delete job-test-raspberry-pi.yaml

* Restore CI/build_version.py

* Move build_version.py to scripts dir

* Update refs to build_version.py

* Update ChangeLog
This commit is contained in:
Nick Bolton 2024-01-09 12:55:55 +00:00 committed by GitHub
parent fe8f405fe8
commit 69e77dcb54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 141 additions and 3 deletions

View file

@ -57,7 +57,7 @@ jobs:
- name: Version Info
id: version
run: |
python3 CI/build_version.py
python3 scripts/build_version.py
mkdir -p version-info && cd version-info && cmake .. && cd ..
. ./version-info/version
rm -rf version-info

View file

@ -47,7 +47,7 @@ jobs:
CMAKE_PREFIX_PATH: "${{ env.Qt5_DIR }};${{ env.OpenSSL_DIR }}"
run: |
export PATH="$Qt5_DIR/bin:$PATH"
python3 CI/build_version.py
python3 scripts/build_version.py
mkdir build
cd build
cmake \

View file

@ -59,7 +59,7 @@ jobs:
env:
CMAKE_BUILD_TYPE: Release
run: |
python3 CI/build_version.py
python3 scripts/build_version.py
mkdir build
cd build
cmake \

View file

@ -19,6 +19,7 @@ CI changes:
- #7317 Bump sonar-scanner-cli to 5.0.1.3006
- #7318 Remove Azure Pipelines config entirely
- #7319 Remove workflows for slow self-hosted RPi runners
- #7320 Move build_version.py script to scripts dir
# 1.14.6

137
scripts/build_version.py Normal file
View file

@ -0,0 +1,137 @@
import subprocess
class VersionPart:
def __init__(self, part = ''):
self.prefix = ''
self.suffix = ''
self.number = 0
if part:
self.__parsePreffix(part)
self.__parseNumber(part)
self.__parseSuffix(part)
def __parsePreffix(self, part):
if not part[0].isdigit():
for i in part:
if not i.isdigit():
self.prefix += i
else:
break
def __parseNumber(self, part):
start = len(self.prefix)
end = part.find('-')
if end > 0:
self.number = int(part[start:end])
else:
self.number = int(part[start:])
def __parseSuffix(self, part):
items = part.split('-')
if len(items) == 2:
self.suffix = '-' + items[1]
def __str__(self):
return self.prefix + str(self.number) + self.suffix
class Version:
def __init__(self, version):
versionParts = version.split('.')
if len(versionParts) == 3:
self.major = VersionPart(versionParts[0])
self.minor = VersionPart(versionParts[1])
self.build = VersionPart(versionParts[2])
self.patch = VersionPart()
self.patch.number = self.build.number
elif len(versionParts) == 4:
self.major = VersionPart(versionParts[0])
self.minor = VersionPart(versionParts[1])
self.patch = VersionPart(versionParts[2])
self.build = VersionPart(versionParts[3])
else:
print('ERROR: Wrong version number')
def isSamePatch(self, version):
return (self.major.number == version.major.number and
self.minor.number == version.minor.number and
self.patch.number == version.patch.number)
def __str__(self):
result = str(self.major) + '.'
result += str(self.minor) + '.'
result += str(self.patch) + '.'
result += str(self.build)
return result
class VersionFile:
def __init__(self, file):
self.file = file
def setOption(self, name, value):
fp = open(self.file, 'rt+')
content = ''
for line in fp:
print(line)
if line.find(name) != -1:
line = 'set ('+ name + ' ' + value + ')'
content += line
fp.write(content)
fp.close()
def findVersion(versions, cmakeVersion):
gitVersion = Version(versions[0])
for version in versions:
ver = Version(version)
if ver.isSamePatch(cmakeVersion):
gitVersion = ver
break
print('INFO: Version '+ str(gitVersion) + ' has been read from git')
return gitVersion
def getVesionFromGit(cmakeVersion):
try:
taggedRevision = subprocess.check_output(('git rev-list --tags --max-count=100').split(), universal_newlines=True)
cmd = ('git describe --tags ' + taggedRevision).split()
versions = subprocess.check_output(cmd, universal_newlines=True).split()
return findVersion(versions, cmakeVersion)
except subprocess.CalledProcessError:
print('ERROR: Unable to get version from git')
exit(1)
def updateVersionFile(number):
fp = open('cmake/Version.cmake')
content = fp.read()
fp.close()
fp = open('cmake/Version.cmake', 'wt')
fp.write(content.replace('set (SYNERGY_VERSION_BUILD 1)', 'set (SYNERGY_VERSION_BUILD ' + str(number) + ')'))
fp.close()
def getOptionValue(source, option):
start = source.find(option)
if (start != -1):
start += len(option) + 1
end = source.find(')', start)
return source[start : end]
else:
print("ERROR: Can't find option <" + option + ">");
def getVersionFromFile():
fp = open('cmake/Version.cmake')
content = fp.read()
fp.close()
major = getOptionValue(content, 'SYNERGY_VERSION_MAJOR')
minor = getOptionValue(content, 'SYNERGY_VERSION_MINOR')
patch = getOptionValue(content, 'SYNERGY_VERSION_PATCH')
return Version(major + '.' + minor + '.' + patch)
if __name__ == '__main__':
cmakeVersion = getVersionFromFile()
gitVersion = getVesionFromGit(cmakeVersion)
updateVersionFile(gitVersion.build.number)
print('INFO: Build number is: <' + str(gitVersion) + '>')