diff options
author | Miguel Costa <miguel.costa@qt.io> | 2023-01-14 00:08:58 +0100 |
---|---|---|
committer | Miguel Costa <miguel.costa@qt.io> | 2023-01-24 15:53:11 +0000 |
commit | 91c36892b8a1bbd73e286c7c215e1f6872b77c1e (patch) | |
tree | abe33f0bd587e9726dbd30faf95347674809ad13 | |
parent | eb3e2b5d574920330a8e51540e2c15d795cfbdc0 (diff) |
Get version from repo tag
The active version of the Qt VS Tools is now determined exclusively by
the repository tag that precedes the current HEAD. Previously, this
information was written both in the repo tags and also a file in the
solution (versions.targets). With this change, there is now a single
source of truth regarding the version information.
Also in this change: the deployment of release packages (copying of the
.vsix file to a deployment dir) is now done in the vstools.bat script.
Previously, this was done in a post-build target of the Package project.
Change-Id: If4d1b285689cfc3684e76339b8cd1a92703ea9ed
Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
(cherry picked from commit 14c4ae513c6ae7bc6d2c71e7b9319a953017d621)
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
-rw-r--r-- | QtVsTools.Package/QtVsTools.Package.csproj | 50 | ||||
-rw-r--r-- | version.targets | 3 | ||||
-rw-r--r-- | version.tt | 62 | ||||
-rw-r--r-- | vstools.bat | 68 |
4 files changed, 93 insertions, 90 deletions
diff --git a/QtVsTools.Package/QtVsTools.Package.csproj b/QtVsTools.Package/QtVsTools.Package.csproj index 39a86dcb..ed1c7e7a 100644 --- a/QtVsTools.Package/QtVsTools.Package.csproj +++ b/QtVsTools.Package/QtVsTools.Package.csproj @@ -554,56 +554,6 @@ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(SolutionDir)\transform.targets" /> <Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" /> - <Target Name="QtVsTools_PostBuild" AfterTargets="Build"> - <Error Condition="!Exists('$(TargetPath)')" Text="Build failed." /> - <PropertyGroup> - <MsvcVersion Condition="'$(VisualStudioVersion)'=='15.0'">2017</MsvcVersion> - <MsvcVersion Condition="'$(VisualStudioVersion)'=='16.0'">2019</MsvcVersion> - <MsvcVersion Condition="'$(VisualStudioVersion)'=='17.0'">2022</MsvcVersion> - </PropertyGroup> - <GetAssemblyIdentity AssemblyFiles="$(TargetPath)"> - <Output TaskParameter="Assemblies" ItemName="QtVsToolsDll" /> - </GetAssemblyIdentity> - <CreateProperty Value="$([System.Version]::Parse(%(QtVsToolsDll.Version)).Revision.ToString('D2'))"> - <Output TaskParameter="ValueSetByTask" PropertyName="QtVSToolsRevision" /> - </CreateProperty> - <CreateProperty Condition="'$(QtVSToolsRevision)' != '' AND '$(QtVSToolsRevision)' != '-1'" Value="msvc$(MsvcVersion)-$(QtVSToolsVersion)-rev.$(QtVSToolsRevision)"> - <Output TaskParameter="ValueSetByTask" PropertyName="PackageName" /> - </CreateProperty> - <CreateProperty Condition="'$(QtVSToolsRevision)' == '' OR '$(QtVSToolsRevision)' == '-1'" Value="msvc$(MsvcVersion)-$(QtVSToolsVersion)"> - <Output TaskParameter="ValueSetByTask" PropertyName="PackageName" /> - </CreateProperty> - <CreateProperty Value="qt-vsaddin-$(PackageName).vsix"> - <Output TaskParameter="ValueSetByTask" PropertyName="ReleasePackage" /> - </CreateProperty> - <Message Importance="High" Text="$(MSBuildProjectName) -> $(PackageName)" /> - <CombinePath Condition="'$(QtVSToolsDeployTarget)' != ''" BasePath="$(QtVSToolsDeployTarget)" Paths="%(QtVsToolsDll.Version)"> - <Output TaskParameter="CombinedPaths" ItemName="DeployTargetPath" /> - </CombinePath> - <ConvertToAbsolutePath Condition="'$(QtVSToolsDeployTarget)' != ''" Paths="@(DeployTargetPath)"> - <Output TaskParameter="AbsolutePaths" ItemName="DeployTargetFullPath" /> - </ConvertToAbsolutePath> - <CreateProperty Condition="'$(QtVSToolsDeployTarget)' != ''" Value="%(DeployTargetFullPath.Identity)"> - <Output TaskParameter="ValueSetByTask" PropertyName="DeployTargetFullPath" /> - </CreateProperty> - <Message Importance="High" Condition="'$(QtVSToolsDeployTarget)' != ''" Text="Deploying to $(DeployTargetFullPath)" /> - <MakeDir Condition="'$(QtVSToolsDeployTarget)' != ''" Directories="$(QtVSToolsDeployTarget)" /> - <Copy Condition="'$(QtVSToolsDeployTarget)' != ''" SourceFiles="$(TargetVsixContainer)" DestinationFiles="$(DeployTargetFullPath)\$(ReleasePackage)" /> - <PropertyGroup> - <!-- Clean up properties --> - <MsvcVersion /> - <QtVSToolsRevision /> - <PackageName /> - <ReleasePackage /> - <DeployTargetFullPath /> - </PropertyGroup> - <ItemGroup> - <!-- Clean up items --> - <QtVsToolsDll Remove="@(QtVsToolsDll)" /> - <DeployTargetPath Remove="@(DeployTargetPath)" /> - <DeployTargetFullPath Remove="@(DeployTargetFullPath)" /> - </ItemGroup> - </Target> <!-- ///////////////////////////////////////////////////////////////////////////////////////////////// // NuGet native libs diff --git a/version.targets b/version.targets index 62776db9..54279100 100644 --- a/version.targets +++ b/version.targets @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Condition="'$(QtVSToolsVersion)' == ''"> - <QtVSToolsVersion>2.10.0</QtVSToolsVersion> + <QtVSToolsVersion + >$([System.IO.File]::ReadAllText('$(SolutionDir)\version.log'))</QtVSToolsVersion> </PropertyGroup> </Project> @@ -38,44 +38,36 @@ ** ****************************************************************************/ - Func<string> GetRevisionData = new Func<string>(() => - { - var proc = System.Diagnostics.Process.Start(new ProcessStartInfo - { - FileName = "git", - Arguments = "describe --tags", - WorkingDirectory = Directory.GetParent(SolutionDir).FullName, - CreateNoWindow = true, UseShellExecute = false, - RedirectStandardOutput = true, RedirectStandardError = true, - }); - return proc.WaitForExit(3000) && proc.ExitCode == 0 ? proc.StandardOutput.ReadLine() : ""; - }); - string REVISION_TAG = GetRevisionData(); - int REVISION_NUMBER = Convert.ToInt32(REVISION_TAG.Split('-').Skip(1).FirstOrDefault()); + Version v; + try { + var versionText = File + .ReadAllText(Path.Combine(SolutionDir, "version.log")) + .Replace("\r\n", "") + .Trim(); + v = new Version(versionText); + } catch (Exception) { + Error("Error reading extension version"); + v = new Version("0.0.0.0"); + } -/***************************************************************************/ + string QT_VS_TOOLS_VERSION = $"{v.Major}.{v.Minor}.{v.Build}"; - string QT_VS_TOOLS_VERSION = (string)XDocument.Load(SolutionDir + @"\version.targets") - .Descendants() - .Where(x => x.Name.LocalName == "QtVSToolsVersion") - .FirstOrDefault(); + string QT_VS_TOOLS_VERSION_TAG = $"{v.Major}{v.Minor}{v.Build}"; -/***************************************************************************/ + string QT_VS_TOOLS_VERSION_ASSEMBLY = + (v.Revision == -1) + ? $"{v.Major}.{v.Minor}.{v.Build}.0" + : $"{v.Major}.{v.Minor}.{v.Build}.{v.Revision}"; - string QT_VS_TOOLS_VERSION_TAG - = QT_VS_TOOLS_VERSION.Replace(".", ""); + string QT_VS_TOOLS_VERSION_ASSEMBLY_FILE = QT_VS_TOOLS_VERSION_ASSEMBLY; - string QT_VS_TOOLS_VERSION_ASSEMBLY - = string.Format("{0}.{1}", QT_VS_TOOLS_VERSION, REVISION_NUMBER); + string QT_VS_TOOLS_VERSION_USER = + (v.Revision <= 0) + ? $"{v.Major}.{v.Minor}.{v.Build}" + : $"{v.Major}.{v.Minor}.{v.Build} (rev.{v.Revision})"; - string QT_VS_TOOLS_VERSION_ASSEMBLY_FILE - = string.Format("{0}.{1}", QT_VS_TOOLS_VERSION, REVISION_NUMBER); - - string QT_VS_TOOLS_VERSION_USER - = REVISION_NUMBER > 0 - ? string.Format("{0} (rev.{1})", QT_VS_TOOLS_VERSION, REVISION_NUMBER) - : QT_VS_TOOLS_VERSION; - - string QT_VS_TOOLS_VERSION_MANIFEST - = REVISION_NUMBER > 0 ? QT_VS_TOOLS_VERSION_ASSEMBLY : QT_VS_TOOLS_VERSION; -#>
\ No newline at end of file + string QT_VS_TOOLS_VERSION_MANIFEST = + (v.Revision <= 0) + ? $"{v.Major}.{v.Minor}.{v.Build}" + : $"{v.Major}.{v.Minor}.{v.Build}.{v.Revision}"; +#> diff --git a/vstools.bat b/vstools.bat index 332c90bf..d0519a61 100644 --- a/vstools.bat +++ b/vstools.bat @@ -37,6 +37,7 @@ SET CLEAN=%FALSE% SET BINARYLOG=%FALSE% SET CONFIGURATION=Release SET DO_INSTALL=%FALSE% +SET DEPLOY=%FALSE% SET TRANSFORM_INCREMENTAL=true SET START_VS=%FALSE% SET LIST_VERSIONS=%FALSE% @@ -71,7 +72,8 @@ IF NOT "%1"=="" ( SHIFT ) ) ELSE IF "%1"=="-deploy" ( - SET QtVSToolsDeployTarget=%~f2 + SET DEPLOY=%TRUE% + SET DEPLOY_DIR=%~f2 SHIFT ) ELSE IF "%1"=="-install" ( SET DO_INSTALL=%TRUE% @@ -191,6 +193,11 @@ IF NOT %VSWHERE_OK% ( EXIT /B 1 ) +WHERE /Q git.exe || ( + ECHO Error: could not find git. + EXIT /B 1 +) + REM /////////////////////////////////////////////////////////////////////////////////////////////// REM // Cycle through installed VS products @@ -227,6 +234,10 @@ FOR %%v IN (%VS_VERSIONS%) DO ( FOR /F %ALL% %%f IN (`CMD /C "ECHO %%PLATFORM_VS%%e%%"`) DO ( IF %VERBOSE% ECHO ## platform: %%f + IF %VERBOSE% ECHO ## git describe --tags + FOR /F "tokens=1,2,3,4 delims=v.- usebackq" %%q IN (`git describe --tags`) DO ( + IF %VERBOSE% ECHO ## ^( %%q, %%r, %%s, %%t ^) + IF %LIST_VERSIONS% ( IF %VERBOSE% ECHO ## listVersion ECHO %%n ^(%%i^) @@ -251,7 +262,12 @@ FOR %%v IN (%VS_VERSIONS%) DO ( ECHO Error: msbuild not found EXIT /B 3 ) - IF NOT "%QtVSToolsDeployTarget%"=="" ECHO ## Deploy to: %QtVSToolsDeployTarget% + IF "%%t"=="" ( + ECHO ## Qt VSTools version: %%q.%%r.%%s + ) ELSE ( + ECHO ## Qt VSTools version: %%q.%%r.%%s ^(rev.%%t^) + ) + IF NOT "%DEPLOY_DIR%"=="" ECHO ## Deploy to: %DEPLOY_DIR% ECHO ################################################################################ ECHO. @@ -280,6 +296,16 @@ FOR %%v IN (%VS_VERSIONS%) DO ( ECHO. ECHO ############################################################################### + ECHO ## Logging extension version + ECHO ############################################################################### + IF "%%t"=="" ( + ECHO %%q.%%r.%%s.0 > version.log + ) ELSE ( + ECHO %%q.%%r.%%s.%%t > version.log + ) + ECHO. + + ECHO ############################################################################### ECHO ## Restoring packages... ECHO ############################################################################### msbuild ^ @@ -296,6 +322,17 @@ FOR %%v IN (%VS_VERSIONS%) DO ( ) ) + IF NOT EXIST version.log ( + ECHO ############################################################################### + ECHO ## Logging extension version + ECHO ############################################################################### + IF "%%t"=="" ( + ECHO %%q.%%r.%%s.0 > version.log + ) ELSE ( + ECHO %%q.%%r.%%s.%%t > version.log + ) + ) + IF %INIT% ( ECHO ################################################################################ ECHO ## Building pre-requisites... @@ -352,6 +389,11 @@ FOR %%v IN (%VS_VERSIONS%) DO ( && ( ECHO ################################################################################ ECHO ## %%n ^(%%i^) + IF "%%t"=="" ( + ECHO ## Qt VSTools version: %%q.%%r.%%s + ) ELSE ( + ECHO ## Qt VSTools version: %%q.%%r.%%s ^(rev.%%t^) + ) ECHO ## Solution build successful. ECHO ################################################################################ ECHO. @@ -363,9 +405,27 @@ FOR %%v IN (%VS_VERSIONS%) DO ( EXIT /B %ERRORLEVEL% ) + IF %DEPLOY% ( + ECHO ################################################################################ + ECHO ## Deploying to %DEPLOY_DIR%... + ECHO ################################################################################ + IF "%%t"=="" ( + ECHO QtVsTools.vsix -^> qt-vsaddin-msvc%%e-%%q.%%r.%%s.vsix + MD "%DEPLOY_DIR%\%%q.%%r.%%s.0" > NUL 2>&1 + COPY /Y QtVsTools.Package\bin\Release\QtVsTools.vsix ^ + "%DEPLOY_DIR%\%%q.%%r.%%s.0\qt-vsaddin-msvc%%e-%%q.%%r.%%s.vsix" + ) ELSE ( + ECHO QtVsTools.vsix -^> qt-vsaddin-msvc%%e-%%q.%%r.%%s-rev.%%t.vsix + MD "%DEPLOY_DIR%\%%q.%%r.%%s.%%t" > NUL 2>&1 + COPY /Y QtVsTools.Package\bin\Release\QtVsTools.vsix ^ + "%DEPLOY_DIR%\%%q.%%r.%%s.%%t\qt-vsaddin-msvc%%e-%%q.%%r.%%s-rev.%%t.vsix" + ) + ECHO. + ) + IF %DO_INSTALL% ( ECHO ################################################################################ - ECHO ## Installing VSIX package + ECHO ## Installing extension package ECHO ################################################################################ ECHO Removing previous installation... IF "%%e"=="2022" ( @@ -390,7 +450,7 @@ FOR %%v IN (%VS_VERSIONS%) DO ( ) ECHO. - ))))))) + )))))))) ENDLOCAL ) |