Merge pull request #173 from OpenVR-Advanced-Settings/version-string-file

Convert version string to be read from single file
This commit is contained in:
Kung-vr
2019-04-21 16:26:00 +09:00
committed by GitHub
12 changed files with 110 additions and 65 deletions
+1
View File
@@ -28,6 +28,7 @@ init:
- set TAG_NAME=%APPVEYOR_REPO_TAG_NAME%
build_script:
- python ./build_scripts/append_to_version_file.py %APPVEYOR_REPO_COMMIT:~0,8%
- python ./build_scripts/run-clang-format.py ./src -r --clang-format-executable "C:\Program Files\LLVM\bin\clang-format.exe" --color always
- call "build_windows.cmd"
+3 -1
View File
@@ -2,6 +2,7 @@ debug
release
assets
bin
build
Makefile*
*.vcxproj*
*.log
@@ -12,4 +13,5 @@ Makefile*
installer/*.exe
*.user*
build_scripts/win/__pycache__
build_scripts/win/current_build.bat
build_scripts/win/current_build.bat
AdvancedSettings_resource.rc
+11
View File
@@ -3,6 +3,17 @@ CONFIG += c++1z
DEFINES += ELPP_THREAD_SAFE ELPP_QT_LOGGING ELPP_NO_DEFAULT_LOG_FILE
VERSION = "$$cat($$PWD/build_scripts/compile_version_string.txt)"
DEFINES += APPLICATION_VERSION=\\\"$$VERSION\\\"
# Qmake can't handle non-integers in the version string,
# so we take out anything after the dash.
SPLIT_VERSION_STRING = $$split(VERSION, -)
NUMERICAL_VERSION_NUMBER = $$member(SPLIT_VERSION_STRING, 0, 0)
VERSION = $$NUMERICAL_VERSION_NUMBER
# Keep the literal version number in the description field for debugging.
QMAKE_TARGET_DESCRIPTION = "$$cat($$PWD/build_scripts/compile_version_string.txt)"
lessThan(QT_MAJOR_VERSION, 5): error("requires Qt 5.12 or higher")
lessThan(QT_MINOR_VERSION, 12): error("requires Qt 5.12 or higher")
+28
View File
@@ -0,0 +1,28 @@
#!/usr/bin/env python
from sys import argv
from os import path, remove
current_path = path.dirname(path.realpath(__file__))
version_file_path = path.join(current_path, "compile_version_string.txt")
def get_version_string():
with open(version_file_path, "r") as file:
contents = file.readline()
return contents.strip('"')
def set_version_string(new_version_string):
remove(version_file_path)
with open(version_file_path, "w") as file:
file.write(new_version_string)
def main():
current_version = get_version_string()
if "-release" in current_version.lower():
current_version.replace("-release", "")
else:
new_version = current_version + "+" + argv[1]
set_version_string(new_version)
if __name__ == "__main__":
main()
+1
View File
@@ -0,0 +1 @@
3.1.0-dev
+1 -1
View File
@@ -47,4 +47,4 @@ DISTFILES += \
src/res/qml/desktop_overlay_page/translation_back_forwards/SteamDesktopTranslationBackForwards.qml \
src/res/qml/desktop_overlay_page/translation_up_down/SteamDesktopTranslationUpDown.qml \
RC_FILE = src/res/icon.rc
win32:RC_ICONS += src/res/img/icons/advicon256px.ico
+2
View File
@@ -154,6 +154,8 @@ def build():
COMPILE_MODE = ""
COMPILER = ""
say("Attempting to build version: " + VERSION_STRING)
say("Testing if all required build environment variables are set:")
QT_LOC = get_required_env_var_path(QT_LOC_VAR_NAME, QT_LOC_DEFAULT)
VS_LOC = get_required_env_var_path(VS_LOC_VAR_NAME, VS_LOC_DEFAULT)
+53 -48
View File
@@ -8,10 +8,15 @@ import subprocess
import shutil
import distutils.dir_util
def get_version_string():
dir_path = os.path.dirname(os.path.realpath(__file__))
with open(dir_path + "/../compile_version_string.txt", "r") as file:
contents = file.readline()
return contents
#Const globals
#Version string must be bumped every release.
#TODO: See developer documentation.
VERSION_STRING = "3-1-0-dev"
VERSION_STRING = get_version_string()
EXIT_CODE_SUCCESS = 0
EXIT_CODE_FAILURE_BUILD_APP = 1
@@ -62,17 +67,17 @@ def say(message: str):
"""
global current_activity
print(current_activity + ": " + message)
def say_error(message: str):
"""
Prints an error message to the console.
Not currently different from say, but put in incase somebody wanted to
Not currently different from say, but put in incase somebody wanted to
do something fancy with outputting to stderr or something instead.
"""
global current_activity
print(current_activity + ": " + message)
print(current_activity + ": " + message)
def is_env_var_set(env_var_name: str):
"""
Returns whether or not an environment variable is set.
@@ -81,7 +86,7 @@ def is_env_var_set(env_var_name: str):
if var is None:
return False
return True
def add_line_to_run_bat_file(line: str):
"""
Adds a line ended by a newline to the batch file.
@@ -92,7 +97,7 @@ def add_line_to_run_bat_file(line: str):
def add_error_handling_line_to_bat_file():
"""
Adds an error handling line to the batch file.
This is because some applications don't cause the script to error out
even if they exit with an error.
"""
@@ -117,23 +122,23 @@ def get_required_env_var_path(env_var_name: str, default_env_var_value: str):
exit_on_error(EXIT_CODE_FAILURE_BUILD_LOCATION)
say(f"{env_var_name} exists.")
return path
def create_batch_file():
"""
Creates a batch file in the dir. Must be called by another outside batch file.
"""
file = open(get_project_dir() + "\\build_scripts\\win\\current_build.bat", "w+")
file.write(bat_file_contents)
file.close()
file.close()
def exit_on_error(error_number):
"""Wrapper around sys.exit."""
sys.exit(error_number)
def set_dirs():
"""
Sets up the directories.
We know that the project dir will always be two dirs up from the dir the file is in.
"""
global ORIGINAL_DIR
@@ -142,50 +147,50 @@ def set_dirs():
ORIGINAL_DIR = os.path.dirname(__file__)
PROJECT_DIR = os.path.abspath(os.path.join(ORIGINAL_DIR, r"..\.."))
DEPLOY_DIR = DEPLOY_DIR = PROJECT_DIR + OUTPUT_DIR
print(ORIGINAL_DIR)
def get_project_dir():
return PROJECT_DIR
def get_original_dir():
return ORIGINAL_DIR
return ORIGINAL_DIR
def get_deploy_dir():
return DEPLOY_DIR
def copy_file(src, dest):
"""Copies a file and outputs status to console."""
say(f"Copying {src} to {dest}")
shutil.copy(src, dest)
say(f"{src} to {dest} copied.")
say(f"{src} to {dest} copied.")
def copy_folder(src, dest):
"""Copies a folder and outputs status to console."""
say(f"Copying {src} to {dest}")
distutils.dir_util.copy_tree(src, dest)
say(f"{src} to {dest} copied.")
distutils.dir_util.copy_tree(src, dest)
say(f"{src} to {dest} copied.")
+6 -12
View File
@@ -1,23 +1,17 @@
<a name="top"></a>
# OpenVR Advanced Settings Developer Docs
For things that don't directly belong a single place in the source code.
> * [New Patch Release Checklist](#patch_checklist)
> * [Increment Version Numbers](#inc_vers_numbers)
# New Patch Release Checklist
<a name="patch_checklist"></a>
## New Patch Release Checklist
## Increment Version Numbers
<a name="inc_vers_numbers"></a>
### Increment Version Numbers
The version number string is kept in the `./build_scripts/compile_version_string.txt` file. The file is read by at compile time by whatever needs the current version number. Currently it is being used in 3 locations.
Currently there are three version strings in the source.
1. `src\overlaycontroller.h` - Variable named `applicationVersionString`.
1. `advancedSettings.pro` - `VERSION` variable and `APPLICATION_VERSION` define.
2. `build_scripts\win\common.py` - Variable named `VERSION_STRING`.
3. `installer\installer.nsi` - Variable named `VERSION_STRING`.
The first string should be three digits separated by dots (periods), as described in [semantic versioning](https://semver.org/) (like "2.8.0"). The second and third should be three digits separated by hyphens/dashes (like "2-8-0").
The string should be three digits separated by dots (periods), as described in [semantic versioning](https://semver.org/) (like "2.8.0"). Additional qualifiers may be appended with a dash (and only a dash). The `QMAKE` build script relies on there only being dot separated integers before the first dash. If there are non-integers (or letters) before the first dash the Windows build will fail.
The reason for the difference is that the first string is only used as a string in the source code, while the second and third are used to name files. Some operating system can become confused with more than one dot in the file name (like Windows). It's better to just avoid the situation entirely.
The AppVeyor build server will append the last 8 digits of the commit hash. This is in order to make debugging various versions easier. If `-release` is found in the original version string, `-release` will be removed and a hash will not be appended.
+1 -1
View File
@@ -11,7 +11,7 @@
!define THIRDDIR "..\third-party"
!define PACKAGEDIR "..\src\package_files"
!define PROJECTDIR "..\"
!define VERSION_STRING "3-1-0-dev"
!define /file VERSION_STRING "..\build_scripts\compile_version_string.txt"
;Installer icon
+3 -1
View File
@@ -48,7 +48,9 @@ constexpr auto applicationOrganizationName = "AdvancedSettings-Team";
constexpr auto applicationName = "OpenVRAdvancedSettings";
constexpr const char* applicationKey = "OVRAS-Team.AdvancedSettings";
constexpr const char* applicationDisplayName = "Advanced Settings";
constexpr const char* applicationVersionString = "v3.1.0-dev";
constexpr const char* applicationVersionString = APPLICATION_VERSION;
} // namespace application_strings
// application namespace
-1
View File
@@ -1 +0,0 @@
IDI_ICON1 ICON DISCARDABLE "img/icons/advicon256px.ico"