mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2024-12-28 02:26:16 +00:00
gradle: Use our own groovy code to compute a version from git
git worktree is not supported by androidgitversion This makes it work with git worktrees and submodules, unlike the plugin we used before. Unlike some other gradle plugins, this allows us to set our own filter for tags that get included in the version. Thanks to Tao Pei for noticing the problem and proposing an initial fix. Co-authored-by: tao.pei <tao.pei@xjmz.com> Part-of: <https://gitlab.freedesktop.org/monado/monado/-/merge_requests/2204>
This commit is contained in:
parent
44552a1722
commit
de9b9f79ea
|
@ -16,6 +16,7 @@
|
|||
- mr.1377
|
||||
- mr.1385
|
||||
- mr.2232
|
||||
- mr.2204
|
||||
---
|
||||
|
||||
More improvements to the Android port.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright 2020-2022, Collabora, Ltd.
|
||||
// Copyright 2020-2024, Collabora, Ltd.
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
import groovy.xml.XmlUtil
|
||||
|
||||
|
@ -8,7 +8,6 @@ plugins {
|
|||
|
||||
id 'com.mikepenz.aboutlibraries.plugin'
|
||||
|
||||
id "com.gladed.androidgitversion"
|
||||
id "de.undercouch.download"
|
||||
|
||||
// Hilt dependency injection
|
||||
|
@ -35,12 +34,6 @@ spotless {
|
|||
}
|
||||
}
|
||||
|
||||
androidGitVersion {
|
||||
tagPattern(/^v[0-9]+.*/)
|
||||
codeFormat = 'MMNPBBBBB'
|
||||
format = '%tag%%-count%%-gcommit%%-dirty%'
|
||||
}
|
||||
|
||||
def parseOpenXRVersion(def fn) {
|
||||
def matches = file(fn).readLines().find {
|
||||
it.contains('XR_CURRENT_API_VERSION')
|
||||
|
@ -97,6 +90,60 @@ if (!(new File(project.file(project.eigenIncludeDir), "Eigen/Core")).exists()) {
|
|||
unpackEigen.enabled = false
|
||||
}
|
||||
|
||||
// ***
|
||||
// Git version handling
|
||||
// ***
|
||||
|
||||
// Supplied with major, minor, patch, commit count
|
||||
def versionCodeFormatPattern = "%02d%01d%01d%05d"
|
||||
|
||||
// parsed using this regex
|
||||
def gitDescribePattern = ~/v(?<tag>(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+))-(?<commits>\d+)-g(?<hash>[0-9a-f]+)/
|
||||
|
||||
// Get the version code from git describe output
|
||||
def getVersionCode = { ->
|
||||
try {
|
||||
def stdout = new ByteArrayOutputStream()
|
||||
exec {
|
||||
commandLine 'git', 'describe', '--always', '--long', '--match', 'v*'
|
||||
standardOutput = stdout
|
||||
workingDir rootDir
|
||||
}
|
||||
def longOutput = stdout.toString().trim()
|
||||
def matcher = longOutput =~ gitDescribePattern
|
||||
if (!matcher.matches()) {
|
||||
println "Could not find an annotated git tag matching the regex!"
|
||||
return null
|
||||
}
|
||||
def codeAsString = String.format(versionCodeFormatPattern,
|
||||
Integer.parseInt(matcher.group('major')),
|
||||
Integer.parseInt(matcher.group('minor')),
|
||||
Integer.parseInt(matcher.group('patch')),
|
||||
Integer.parseInt(matcher.group('commits')))
|
||||
return Integer.parseInt(codeAsString)
|
||||
}
|
||||
catch (ignored) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Get the version string from git describe output
|
||||
def getVersionString = { ->
|
||||
try {
|
||||
def stdout = new ByteArrayOutputStream()
|
||||
exec {
|
||||
commandLine 'git', 'describe', '--always', '--dirty', '--match', 'v*'
|
||||
standardOutput = stdout
|
||||
workingDir rootDir
|
||||
}
|
||||
return stdout.toString().trim()
|
||||
}
|
||||
catch (ignored) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Pass -PsharedStl=true on the gradle command line to build with the shared runtime library.
|
||||
// This has potential compatibility issues and should only be used if you're consuming another
|
||||
// library that exposes a C++ interface.
|
||||
|
@ -117,10 +164,11 @@ android {
|
|||
minSdkVersion project.sharedMinSdk
|
||||
targetSdkVersion project.sharedTargetSdk
|
||||
|
||||
versionCode androidGitVersion.code()
|
||||
versionName androidGitVersion.name()
|
||||
versionCode = getVersionCode()
|
||||
versionName = getVersionString()
|
||||
|
||||
println versionName
|
||||
println versionCode
|
||||
|
||||
resValue "string", "monado_lib_version", "${versionName}"
|
||||
|
||||
|
|
Loading…
Reference in a new issue