Skip to content

Commit 96e714d

Browse files
authored
Merge pull request #870 from guillep/versions
Enhancement(versionning): Extract full semantic version from git
2 parents 49235a5 + 611d79e commit 96e714d

33 files changed

+1540
-282
lines changed

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
# Change log
22

3+
## What's Changed
4+
* Redo 294 by @guillep in https://github.com/pharo-project/pharo-vm/pull/829
5+
* Making it loadable in P12 by @guillep in https://github.com/pharo-project/pharo-vm/pull/825
6+
* Added test on extended store and pop by @guillep in https://github.com/pharo-project/pharo-vm/pull/520
7+
* Update build version to P12 by @guillep in https://github.com/pharo-project/pharo-vm/pull/826
8+
* Improving log of old space limit error reporting by @tesonep in https://github.com/pharo-project/pharo-vm/pull/833
9+
* a better comment support for Slang by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/838
10+
* a first version of Slang with no type conflict and an exception if one appear by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/819
11+
* remove unused cast and expression by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/837
12+
* fix warnings related to multiple include of the same header file by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/840
13+
* Fix a lot of unused expression by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/832
14+
* add a comment explaining why declareCVarsIn: is empty in some subclasses by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/842
15+
* small change in dead code elimination to considers a method with only comments empty by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/843
16+
* small change in copyWithoutReturn to handle CCoerce by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/836
17+
* Remove hostname lookup on network initialization by @guillep in https://github.com/pharo-project/pharo-vm/pull/845
18+
* Update SDL2 version in OSX (Intel & Apple) by @tesonep in https://github.com/pharo-project/pharo-vm/pull/849
19+
* Adding option for pin behaviour by @tesonep in https://github.com/pharo-project/pharo-vm/pull/844
20+
21+
**Full Changelog**: https://github.com/pharo-project/pharo-vm/compare/v10.3.0...v10.3.1
22+
323
## v10.3.0
424

525
* New harmonize rule by @RenaudFondeur in https://github.com/pharo-project/pharo-vm/pull/817

CMakeLists.txt

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ option(FEATURE_COMPILE_GNUISATION "Use gcc gnu extensions to compile the VM"
3333
option(PHARO_DEPENDENCIES_PREFER_DOWNLOAD_BINARIES "Prefer downloading dependencies" OFF)
3434
option(FEATURE_COMPILE_INLINE_MEMORY_ACCESSORS "Use inline memory accessors instead of macros" ON)
3535
option(PHARO_VM_IN_WORKER_THREAD "Have support for pharo running in a different thread that the main one" ON)
36-
option(BUILD_IS_RELEASE "Is this a release version?" OFF)
3736
option(DEPENDENCIES_FORCE_BUILD "Force build libraries" OFF)
3837
option(BUILD_WITH_GRAPHVIZ "Generate dependency graphs" ON)
38+
option(VERSION_UPDATE_FROM_GIT "Extract version information from git tags. Default to true. Follow vX.Y.Z-suffix" TRUE)
39+
3940

4041
set(APPNAME "Pharo" CACHE STRING "VM Application name")
4142
set(FLAVOUR "CoInterpreter" CACHE STRING "The kind of VM to generate. Possible values: StackVM, CoInterpreter")
@@ -47,24 +48,6 @@ if(VERBOSE_BUILD)
4748
set(CMAKE_VERBOSE_MAKEFILE TRUE)
4849
endif(VERBOSE_BUILD)
4950

50-
# Extract VCS information
51-
include(cmake/versionExtraction.cmake)
52-
extractVCSInformation(GIT_COMMIT_HASH GIT_DESCRIBE GIT_COMMIT_DATE)
53-
54-
set(VERSION_MAJOR 10)
55-
set(VERSION_MINOR 3)
56-
set(VERSION_PATCH_NUMBER 0)
57-
58-
if(BUILD_IS_RELEASE)
59-
set(VERSION_PATCH "${VERSION_PATCH_NUMBER}")
60-
else()
61-
set(VERSION_PATCH "${VERSION_PATCH_NUMBER}-${GIT_COMMIT_HASH}")
62-
endif(BUILD_IS_RELEASE)
63-
64-
message(STATUS "Building version ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
65-
message(STATUS "Commit hash ${GIT_COMMIT_HASH} : ${GIT_COMMIT_DATE}")
66-
67-
6851
# Visual Studio stores user build settings in file 'CmakeSettings.json'. We would like to manage that via a project template.
6952
# To push out new template, update 'template_uuid' field in 'template_file' with value from https://www.uuidgenerator.net/
7053
set(user_file "${CMAKE_SOURCE_DIR}/CMakeSettings.json" )
@@ -99,10 +82,6 @@ endif()
9982
# Configure CMake to load our modules
10083
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
10184

102-
#Variable used to set the VM date
103-
set(BUILT_FROM "${GIT_DESCRIBE} - Commit: ${GIT_COMMIT_HASH} - Date: ${GIT_COMMIT_DATE}")
104-
message(STATUS ${BUILT_FROM})
105-
10685
# Avoid using the d postfix to debug libraries
10786
# Otherwise, debug libraries change name and breaks FFI bindings
10887
set(CMAKE_DEBUG_POSTFIX "")
@@ -126,6 +105,12 @@ endif()
126105
#This needs to be at this point, after setting the toolchain configuration
127106
project(PharoVM)
128107

108+
include(cmake/versionExtraction.cmake)
109+
110+
set(BUILT_FROM "${PharoVM_VERSION_STRING_FULL} - Commit: ${PharoVM_VERSION_GIT_SHA} - Date: ${PharoVM_VERSION_GIT_COMMIT_DATE}")
111+
message(STATUS ${BUILT_FROM})
112+
113+
129114
# Correctly set the system processor under MSVC
130115
# This is required because CMake will set the HOST_PROCESSOR in windows
131116
# And not care about our Visual Studio settings
@@ -198,7 +183,6 @@ if(MSVC)
198183
set(OS_TYPE "Win32")
199184
get_platform_name(VM_TARGET_OS)
200185
message(STATUS "Building for ${VM_TARGET_OS}")
201-
set(CMAKE_CURRENT_SOURCE_DIR_TO_OUT ${CMAKE_CURRENT_SOURCE_DIR})
202186

203187
# Define WIN32_LEAN_AND_MEAN to exclude APIs such as Cryptography, DDE, RPC, Shell, and Windows Sockets
204188
# They can be included if needed
@@ -212,17 +196,6 @@ elseif(WIN)
212196
unset(UNIX)
213197
unset(UNIX CACHE)
214198

215-
# transform the path into a windows path with unix backslashes C:/bla/blu
216-
# this is the path required to send as argument to libraries outside of the control of cygwin (like pharo itself)
217-
execute_process(
218-
COMMAND cygpath ${CMAKE_CURRENT_SOURCE_DIR} --mixed
219-
OUTPUT_VARIABLE CMAKE_CURRENT_SOURCE_DIR_TO_OUT
220-
OUTPUT_STRIP_TRAILING_WHITESPACE)
221-
execute_process(
222-
COMMAND cygpath ${CMAKE_CURRENT_BINARY_DIR} --mixed
223-
OUTPUT_VARIABLE CMAKE_CURRENT_BINARY_DIR_TO_OUT
224-
OUTPUT_STRIP_TRAILING_WHITESPACE)
225-
226199
set(CMAKE_SHARED_LIBRARY_PREFIX "")
227200
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
228201
set(CMAKE_SHARED_MODULE_PREFIX "")
@@ -247,10 +220,6 @@ elseif(WIN)
247220

248221
elseif(UNIX)
249222

250-
# Use the default path to send as argument of extrernal apps (like pharo itself)
251-
set(CMAKE_CURRENT_SOURCE_DIR_TO_OUT ${CMAKE_CURRENT_SOURCE_DIR})
252-
set(CMAKE_CURRENT_BINARY_DIR_TO_OUT ${CMAKE_CURRENT_BINARY_DIR})
253-
254223
set(COMMON_FLAGS "-Wall -Werror=implicit-function-declaration")
255224

256225
add_compile_definitions(LSB_FIRST=1)
@@ -273,9 +242,9 @@ endif()
273242
# If we are generating sources, set the binary dir as the generation source dir, as vmmaker will generate the C files here. (we do not alter the source directory)
274243
# Otherwise set it to by default to the current binary dir, parametrizable
275244
if(${GENERATE_SOURCES})
276-
set(GENERATED_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR_TO_OUT})
245+
set(GENERATED_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR})
277246
else()
278-
set(GENERATED_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR_TO_OUT} CACHE STRING "Source directory where to find the generated source. Default value is CMAKE_CURRENT_BINARY_DIR")
247+
set(GENERATED_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "Source directory where to find the generated source. Default value is CMAKE_CURRENT_BINARY_DIR")
279248
endif()
280249

281250
if (${FEATURE_COMPILE_INLINE_MEMORY_ACCESSORS})

Jenkinsfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ def runBuild(platformName, configuration, headless = true, someAdditionalParamet
111111
def additionalParameters = someAdditionalParameters
112112

113113
additionalParameters += headless ? "" : " -DALWAYS_INTERACTIVE=1 "
114-
additionalParameters += isRelease() ? " -DBUILD_IS_RELEASE=ON " : " -DBUILD_IS_RELEASE=OFF "
115114

116115
if(configuration == 'StackVM'){
117116
additionalParameters += " -DFEATURE_MESSAGE_COUNT=TRUE "

cmake/Windows.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
set(WIN 1)
22

33
set(VM_EXECUTABLE_CONSOLE_NAME "${VM_EXECUTABLE_NAME}Console")
4-
set(VM_VERSION_FILEVERSION "${APPNAME}VM-${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${GIT_COMMIT_HASH}")
4+
set(VM_VERSION_FILEVERSION "${APPNAME}VM-${PharoVM_VERSION_STRING_FULL}")
55

66
set(Win32ResourcesFolder "${CMAKE_CURRENT_SOURCE_DIR}/resources/windows")
77

cmake/packaging.cmake

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,13 @@ install(
7979
FILES_MATCHING PATTERN *.h)
8080

8181
set(CPACK_PACKAGE_DESCRIPTION "${APPNAME} Headless VM for ${FULL_PLATFORM_NAME}")
82-
set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
83-
set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
84-
set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}")
8582
set(CPACK_PACKAGE_VENDOR "${APPNAME}")
8683
set(CPACK_PACKAGE_HOMEPAGE_URL "https://pharo.org")
8784

8885
if(ALWAYS_INTERACTIVE)
89-
set(CPACK_PACKAGE_FILE_NAME "${APPNAME}VM-${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH_NUMBER}-${GIT_COMMIT_HASH}-${FULL_PLATFORM_NAME}-stockReplacement")
86+
set(CPACK_PACKAGE_FILE_NAME "${APPNAME}VM-${PharoVM_VERSION_STRING_FULL}-${FULL_PLATFORM_NAME}-stockReplacement")
9087
else()
91-
set(CPACK_PACKAGE_FILE_NAME "${APPNAME}VM-${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH_NUMBER}-${GIT_COMMIT_HASH}-${FULL_PLATFORM_NAME}")
88+
set(CPACK_PACKAGE_FILE_NAME "${APPNAME}VM-${PharoVM_VERSION_STRING_FULL}-${FULL_PLATFORM_NAME}")
9289
endif()
9390

9491
set(CPACK_PACKAGE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/packages")

cmake/versionExtraction.cmake

Lines changed: 128 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,129 @@
1-
macro(get_commit_hash VARNAME)
2-
execute_process(
3-
COMMAND git log -1 --format=%h
4-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
5-
OUTPUT_VARIABLE ${VARNAME}
6-
OUTPUT_STRIP_TRAILING_WHITESPACE)
7-
endmacro()
8-
9-
macro(get_git_describe VARNAME)
10-
execute_process(
11-
COMMAND git describe --always --tags --first-parent
12-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
13-
OUTPUT_VARIABLE ${VARNAME}
14-
OUTPUT_STRIP_TRAILING_WHITESPACE)
15-
endmacro()
16-
17-
macro(get_git_date VARNAME)
18-
execute_process(
19-
COMMAND git log -1 --format=%ai
20-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
21-
OUTPUT_VARIABLE ${VARNAME}
22-
OUTPUT_STRIP_TRAILING_WHITESPACE)
23-
endmacro()
24-
25-
macro(extractVCSInformation COMMIT_VARNAME DESCRIBE_VARNAME COMMIT_DATE_VARNAME)
26-
get_commit_hash(${COMMIT_VARNAME})
27-
get_git_describe(${DESCRIBE_VARNAME})
28-
get_git_date(${COMMIT_DATE_VARNAME})
29-
30-
if("${${COMMIT_VARNAME}}" STREQUAL "")
31-
#If I don't have information I try to get it from the version.info file next to the sources (if one)
32-
message(STATUS "I couldn't get version information from git, using the version.info next to the sources")
33-
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/version.info FILECONTENT LIMIT_COUNT 3)
34-
list(GET FILECONTENT 0 ${COMMIT_VARNAME})
35-
list(GET FILECONTENT 1 ${DESCRIBE_VARNAME})
36-
list(GET FILECONTENT 2 ${COMMIT_DATE_VARNAME})
37-
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/version.info DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
38-
else()
39-
#If I have information for the Commit ID, I store it in the version.info file
40-
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.info ${${COMMIT_VARNAME}}\n)
41-
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/version.info ${${DESCRIBE_VARNAME}}\n)
42-
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/version.info ${${COMMIT_DATE_VARNAME}})
1+
#
2+
# This cmake module sets the project version and partial version
3+
# variables by analysing the git tag and commit history. It expects git
4+
# tags defined with semantic versioning 2.0.0 (http://semver.org/).
5+
#
6+
# The module expects the PROJECT_NAME variable to be set, and recognizes
7+
# the GIT_FOUND, GIT_EXECUTABLE and VERSION_UPDATE_FROM_GIT variables.
8+
# If Git is found and VERSION_UPDATE_FROM_GIT is set to boolean TRUE,
9+
# the project version will be updated using information fetched from the
10+
# most recent git tag and commit. Otherwise, the module will try to read
11+
# a VERSION file containing the full and partial versions. The module
12+
# will update this file each time the project version is updated.
13+
#
14+
# Once done, this module will define the following variables:
15+
#
16+
# ${PROJECT_NAME}_VERSION_STRING - Version string without metadata
17+
# such as "v2.0.0" or "v1.2.41-beta.1". This should correspond to the
18+
# most recent git tag.
19+
# ${PROJECT_NAME}_VERSION_STRING_FULL - Version string with metadata
20+
# such as "v2.0.0+3.a23fbc" or "v1.3.1-alpha.2+4.9c4fd1"
21+
# ${PROJECT_NAME}_VERSION - Same as ${PROJECT_NAME}_VERSION_STRING,
22+
# without the preceding 'v', e.g. "2.0.0" or "1.2.41-beta.1"
23+
# ${PROJECT_NAME}_VERSION_FULL - Same as ${PROJECT_NAME}_VERSION_STRING_FULL,
24+
# such as "2.0.0+3.a23fbc" or "1.3.1-alpha.2+4.9c4fd1"
25+
# ${PROJECT_NAME}_VERSION_MAJOR - Major version integer (e.g. 2 in v2.3.1-RC.2+21.ef12c8)
26+
# ${PROJECT_NAME}_VERSION_MINOR - Minor version integer (e.g. 3 in v2.3.1-RC.2+21.ef12c8)
27+
# ${PROJECT_NAME}_VERSION_PATCH - Patch version integer (e.g. 1 in v2.3.1-RC.2+21.ef12c8)
28+
# ${PROJECT_NAME}_VERSION_TWEAK - Tweak version string (e.g. "RC.2" in v2.3.1-RC.2+21.ef12c8)
29+
# ${PROJECT_NAME}_VERSION_AHEAD - How many commits ahead of last tag (e.g. 21 in v2.3.1-RC.2+21.ef12c8)
30+
# ${PROJECT_NAME}_VERSION_GIT_SHA - The git sha1 of the most recent commit (e.g. the "ef12c8" in v2.3.1-RC.2+21.ef12c8)
31+
#
32+
# This module is public domain, use it as it fits you best.
33+
#
34+
# Author: Nuno Fachada
35+
36+
# Check if git is found...
37+
if (VERSION_UPDATE_FROM_GIT)
38+
find_package(Git)
39+
endif()
40+
41+
if (GIT_FOUND AND VERSION_UPDATE_FROM_GIT)
42+
43+
# Get last tag from git
44+
execute_process(COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags
45+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
46+
OUTPUT_VARIABLE ${PROJECT_NAME}_VERSION_STRING
47+
OUTPUT_STRIP_TRAILING_WHITESPACE)
48+
49+
#How many commits since last tag
50+
execute_process(COMMAND ${GIT_EXECUTABLE} rev-list ${${PROJECT_NAME}_VERSION_STRING}^..HEAD --count
51+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
52+
OUTPUT_VARIABLE ${PROJECT_NAME}_VERSION_AHEAD
53+
OUTPUT_STRIP_TRAILING_WHITESPACE)
54+
55+
# Get current commit SHA from git
56+
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
57+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
58+
OUTPUT_VARIABLE ${PROJECT_NAME}_VERSION_GIT_SHA
59+
OUTPUT_STRIP_TRAILING_WHITESPACE)
60+
61+
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%ai
62+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
63+
OUTPUT_VARIABLE ${PROJECT_NAME}_VERSION_GIT_COMMIT_DATE
64+
OUTPUT_STRIP_TRAILING_WHITESPACE)
65+
66+
# Get partial versions into a list
67+
string(REGEX MATCHALL "-.*$|[0-9]+" ${PROJECT_NAME}_PARTIAL_VERSION_LIST
68+
${${PROJECT_NAME}_VERSION_STRING})
69+
70+
# Set the version numbers
71+
list(GET ${PROJECT_NAME}_PARTIAL_VERSION_LIST
72+
0 ${PROJECT_NAME}_VERSION_MAJOR)
73+
list(GET ${PROJECT_NAME}_PARTIAL_VERSION_LIST
74+
1 ${PROJECT_NAME}_VERSION_MINOR)
75+
list(GET ${PROJECT_NAME}_PARTIAL_VERSION_LIST
76+
2 ${PROJECT_NAME}_VERSION_PATCH)
77+
78+
# The tweak part is optional, so check if the list contains it
79+
list(LENGTH ${PROJECT_NAME}_PARTIAL_VERSION_LIST
80+
${PROJECT_NAME}_PARTIAL_VERSION_LIST_LEN)
81+
if (${PROJECT_NAME}_PARTIAL_VERSION_LIST_LEN GREATER 3)
82+
list(GET ${PROJECT_NAME}_PARTIAL_VERSION_LIST 3 ${PROJECT_NAME}_VERSION_TWEAK)
83+
string(SUBSTRING ${${PROJECT_NAME}_VERSION_TWEAK} 1 -1 ${PROJECT_NAME}_VERSION_TWEAK)
4384
endif()
44-
endmacro()
85+
86+
# Unset the list
87+
unset(${PROJECT_NAME}_PARTIAL_VERSION_LIST)
88+
89+
# Set full project version string
90+
set(${PROJECT_NAME}_VERSION_STRING_FULL
91+
${${PROJECT_NAME}_VERSION_STRING}+${${PROJECT_NAME}_VERSION_AHEAD}.${${PROJECT_NAME}_VERSION_GIT_SHA})
92+
93+
# Save version to file (which will be used when Git is not available
94+
# or VERSION_UPDATE_FROM_GIT is disabled)
95+
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.info ${${PROJECT_NAME}_VERSION_STRING_FULL}
96+
"*" ${${PROJECT_NAME}_VERSION_STRING}
97+
"*" ${${PROJECT_NAME}_VERSION_MAJOR}
98+
"*" ${${PROJECT_NAME}_VERSION_MINOR}
99+
"*" ${${PROJECT_NAME}_VERSION_PATCH}
100+
"*" ${${PROJECT_NAME}_VERSION_TWEAK}
101+
"*" ${${PROJECT_NAME}_VERSION_AHEAD}
102+
"*" ${${PROJECT_NAME}_VERSION_GIT_SHA}
103+
"*" ${${PROJECT_NAME}_VERSION_GIT_COMMIT_DATE})
104+
105+
else()
106+
107+
# Git not available, get version from file
108+
file(STRINGS ${CMAKE_SOURCE_DIR}/version.info ${PROJECT_NAME}_VERSION_LIST)
109+
string(REPLACE "*" ";" ${PROJECT_NAME}_VERSION_LIST ${${PROJECT_NAME}_VERSION_LIST})
110+
# Set partial versions
111+
list(GET ${PROJECT_NAME}_VERSION_LIST 0 ${PROJECT_NAME}_VERSION_STRING_FULL)
112+
list(GET ${PROJECT_NAME}_VERSION_LIST 1 ${PROJECT_NAME}_VERSION_STRING)
113+
list(GET ${PROJECT_NAME}_VERSION_LIST 2 ${PROJECT_NAME}_VERSION_MAJOR)
114+
list(GET ${PROJECT_NAME}_VERSION_LIST 3 ${PROJECT_NAME}_VERSION_MINOR)
115+
list(GET ${PROJECT_NAME}_VERSION_LIST 4 ${PROJECT_NAME}_VERSION_PATCH)
116+
list(GET ${PROJECT_NAME}_VERSION_LIST 5 ${PROJECT_NAME}_VERSION_TWEAK)
117+
list(GET ${PROJECT_NAME}_VERSION_LIST 6 ${PROJECT_NAME}_VERSION_AHEAD)
118+
list(GET ${PROJECT_NAME}_VERSION_LIST 7 ${PROJECT_NAME}_VERSION_GIT_SHA)
119+
list(GET ${PROJECT_NAME}_VERSION_LIST 8 ${PROJECT_NAME}_VERSION_GIT_COMMIT_DATE)
120+
121+
endif()
122+
123+
124+
# Set project version (without the preceding 'v')
125+
set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH})
126+
set(${PROJECT_NAME}_VERSION_FULL ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH})
127+
if (${PROJECT_NAME}_VERSION_TWEAK)
128+
set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_VERSION}-${${PROJECT_NAME}_VERSION_TWEAK})
129+
endif()

cmake/vmmaker.cmake

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ set(PLUGIN_GENERATED_FILES
4646
if(GENERATE_SOURCES)
4747

4848
#Setting vmmaker directory and image
49-
set( VMMAKER_DIR "${CMAKE_CURRENT_BINARY_DIR_TO_OUT}/build/vmmaker")
49+
set( VMMAKER_DIR "${CMAKE_CURRENT_BINARY_DIR}/build/vmmaker")
5050

5151
# If we are generating the vmmaker image, set a the image path
5252
# Otherwise set it with a default, but parametrizable
@@ -115,15 +115,23 @@ if(GENERATE_SOURCES)
115115
)
116116
endif()
117117

118+
set(IMAGE_PATH ${VMMAKER_DIR}/image/Pharo12.0-SNAPSHOT-64bit-aa50f9c.image)
119+
120+
convert_cygwin_path_ifNeeded(${IMAGE_PATH} IMAGE_PATH_TO_USE)
121+
convert_cygwin_path_ifNeeded(${VMMAKER_IMAGE} VMMAKER_IMAGE_TO_USE)
122+
convert_cygwin_path_ifNeeded(${CMAKE_CURRENT_SOURCE_DIR} CMAKE_CURRENT_SOURCE_DIR_OUT)
123+
convert_cygwin_path_ifNeeded(${CMAKE_CURRENT_BINARY_DIR} CMAKE_CURRENT_BINARY_DIR_OUT)
124+
118125
if(GENERATE_VMMAKER)
119126
#Bootstrap VMMaker.image from downloaded plain Pharo image
127+
120128
ExternalProject_Add(
121129
vmmaker
122130

123131
URL https://files.pharo.org/image/120/Pharo12.0-SNAPSHOT.build.1519.sha.aa50f9c.arch.64bit.zip
124132
URL_HASH SHA256=b12270631ffc0c6adcb0b6449565b9abfd8e88a863a894a7320f660c05a0af1e
125-
BUILD_COMMAND ${VMMAKER_VM} --headless ${VMMAKER_DIR}/image/Pharo12.0-SNAPSHOT-64bit-aa50f9c.image --no-default-preferences save VMMaker
126-
COMMAND ${VMMAKER_VM} --headless ${VMMAKER_IMAGE} --no-default-preferences --save --quit "${CMAKE_CURRENT_SOURCE_DIR_TO_OUT}/scripts/installVMMaker.st" "${CMAKE_CURRENT_SOURCE_DIR_TO_OUT}" "${ICEBERG_DEFAULT_REMOTE}"
133+
BUILD_COMMAND ${VMMAKER_VM} --headless ${IMAGE_PATH_TO_USE} --no-default-preferences save VMMaker
134+
COMMAND ${VMMAKER_VM} --headless ${VMMAKER_IMAGE_TO_USE} --no-default-preferences --save --quit "${CMAKE_CURRENT_SOURCE_DIR_OUT}/scripts/installVMMaker.st" "${CMAKE_CURRENT_SOURCE_DIR_OUT}" "${ICEBERG_DEFAULT_REMOTE}"
127135
UPDATE_COMMAND ""
128136
CONFIGURE_COMMAND ""
129137
INSTALL_COMMAND ""
@@ -144,7 +152,7 @@ if(GENERATE_SOURCES)
144152
#Custom command that generates the vm source code from VMMaker into the generated folder
145153
add_custom_command(
146154
OUTPUT ${VMSOURCEFILES} ${PLUGIN_GENERATED_FILES}
147-
COMMAND ${VMMAKER_VM} --headless ${VMMAKER_IMAGE} --no-default-preferences perform PharoVMMaker generate:outputDirectory: ${FLAVOUR} ${CMAKE_CURRENT_BINARY_DIR_TO_OUT}
155+
COMMAND ${VMMAKER_VM} --headless ${VMMAKER_IMAGE_TO_USE} --no-default-preferences perform PharoVMMaker generate:outputDirectory: ${FLAVOUR} ${CMAKE_CURRENT_BINARY_DIR_OUT}
148156
VERBATIM
149157
DEPENDS vmmaker ${VMMAKER_IMAGE} ${VMMAKER_VM}
150158
COMMENT "Generating VM files for flavour: ${FLAVOUR}")

0 commit comments

Comments
 (0)