<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">A little late, but finally got a chance to look at this. In CMake 3.12.0, the CPack version handling in <font face="courier new, monospace">Modules/CPack.cmake</font> was changed to take its default from the project version, if set. This was implemented but the following logic:</div><div dir="ltr"><div><br></div><div><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px">if(CMAKE_PROJECT_VERSION_PATCH)</pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px">    ...</pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px">endif()</pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px"><br></pre>This introduced a bug in that a legitimate value of 0 was then treated as FALSE, so the common case of the value being zero was resulting in the value being ignored and falling back to the old default, which was 1. This was fixed in CMake 3.12.1 by changing it to the following:</div><div><br></div><div><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px">if(CMAKE_PROJECT_VERSION_PATCH GREATER_EQUAL 0)</pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px"><div style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;white-space:normal"><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px">    ...</pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px">endif()</pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px"><br></pre>As part of that same change, the following block of code was also added:</div><div><br></div><div><pre style="margin-top:0px;margin-bottom:0px">if(NOT DEFINED CPACK_PACKAGE_VERSION)</pre><pre style="margin-top:0px;margin-bottom:0px">  set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}")</pre><pre style="margin-top:0px;margin-bottom:0px">  if(CPACK_PACKAGE_VERSION_MINOR GREATER_EQUAL 0)</pre><pre style="margin-top:0px;margin-bottom:0px">    string(APPEND CPACK_PACKAGE_VERSION ".${CPACK_PACKAGE_VERSION_MINOR}")</pre><pre style="margin-top:0px;margin-bottom:0px">    if(CPACK_PACKAGE_VERSION_PATCH GREATER_EQUAL 0)</pre><pre style="margin-top:0px;margin-bottom:0px">      string(APPEND CPACK_PACKAGE_VERSION ".${CPACK_PACKAGE_VERSION_PATCH}")</pre><pre style="margin-top:0px;margin-bottom:0px">    endif()</pre><pre style="margin-top:0px;margin-bottom:0px">  endif()</pre><pre style="margin-top:0px;margin-bottom:0px">endif()</pre></div></pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px"><br></pre>Now, your project has been setting <font face="courier new, monospace">CPACK_PACKAGE_VERSION_PATCH</font> to <font face="courier new, monospace">REPLACEME</font>, which is not a valid number, so the patch version will no longer be getting appended to <font face="courier new, monospace">CPACK_PACKAGE_VERSION</font>, as you've observed. This explains at least the history of what happened. I don't know if it was ever considered valid to set it to anything other than a number, so it isn't clear whether this should be considered a regression or not. If you feel strongly enough that it is, I suggest you <a href="https://gitlab.kitware.com/cmake/cmake/issues/new">create an issue in gitlab</a> and transfer the details of this email trail to there.<pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px"><br></pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px"><br></pre><pre style="color:rgb(0,0,0);margin-top:0px;margin-bottom:0px"><br></pre></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 13, 2018 at 5:32 AM Björn Blissing <<a href="mailto:bjorn.blissing@vti.se">bjorn.blissing@vti.se</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
Today we discovered that our generated CPACK_PACKAGE_VERSION variables were broken.<br>
This is probably related to us updating to a newer version of CMake.<br>
<br>
Previously we generated this variable by setting the CPACK_PACKAGE_VERSION_MAJOR and CPACK_PACKAGE_VERSION_MINOR to fixed values, while CPACK_PACKAGE_VERSION_PATCH was set to variable name.<br>
This name was then replaced by running a custom target just before building. In this target the variable name got replaced with the current SVN revision number. This have worked the last years, but now the variable name just gets omitted when we run "generate" in CMake.<br>
<br>
A short example:<br>
================<br>
cmake_minimum_required(VERSION 2.8.9)<br>
project (hello)<br>
add_executable(hello helloworld.cpp)<br>
set(CPACK_PACKAGE_VERSION_MAJOR "1")<br>
set(CPACK_PACKAGE_VERSION_MINOR "0")<br>
set(CPACK_PACKAGE_VERSION_PATCH "REPLACEME")<br>
include(CPack)<br>
<br>
Would result in the following strings in CPackConfig.cmake:<br>
-----------------------------------------------------------<br>
set(CPACK_PACKAGE_VERSION "1.0.REPLACEME") <br>
set(CPACK_PACKAGE_VERSION_MAJOR "1")<br>
set(CPACK_PACKAGE_VERSION_MINOR "0")<br>
set(CPACK_PACKAGE_VERSION_PATCH "REPLACEME")<br>
<br>
<br>
But with the CMake 3.12.2 this will be:<br>
---------------------------------------<br>
set(CPACK_PACKAGE_VERSION "1.0")<br>
set(CPACK_PACKAGE_VERSION_MAJOR "1")<br>
set(CPACK_PACKAGE_VERSION_MINOR "0")<br>
set(CPACK_PACKAGE_VERSION_PATCH "REPLACEME")<br>
<br>
<br>
So our CPACK_PACKAGE_VERSION will omit the variable name, which in turn makes our custom target to fail.<br>
<br>
Our quick fix was to add the following line to our CMakeList.txt file:<br>
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")<br>
<br>
My question is: Is this change of behavior intended? Are only numbers allowed to be part of the CPack version variable?<br>
<br>
Regards<br>
Björn Blissing<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr">Craig Scott<br><div>Melbourne, Australia</div><div><a href="https://crascit.com" target="_blank">https://crascit.com</a><br></div><div><br></div><div>Get the hand-book for every CMake user: <a href="https://crascit.com/professional-cmake/" target="_blank">Professional CMake: A Practical Guide</a><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div>