[cmake-developers] Deterministic identifiers in CPack WiX generator

Nils Gladitz nilsgladitz at gmail.com
Thu Oct 10 15:14:13 EDT 2013


I just pushed my first branch "wix-deterministic-ids" to the topic stage 
(I hope).
Since the whole workflow is quite new to me I'd be glad for any input 
that anyone may provide.

I chose to generate identifiers after the following format:

CM_<ID_TYPE><SCHEME_TYPE>_<ID_CONTENT>(_<COUNTER>)

<ID_TYPE> is:
     D - Directory
     C - Component
     F - File

<SCHEME_TYPE> is:
     P - Path
     H - Hash

<ID_CONTENT> depends on <SCHEME_TYPE>:
     Path (P):
         <component_1>(.<component_n>)
         e.g. doc.cmake_2.8 for "doc/cmake-2.8"
     Hash (H):
         <SHA1 of path truncated to 7 characters>_<last_component>
         e.g. b44dc2f_BasicConfigVersion_SameMajorVersion.cmake.in for 
"share/cmake-2.8/Modules/BasicConfigVersion-SameMajorVersion.cmake.in"

<COUNTER> is used to disambiguate identifiers and only present when 
necessary.

The Path scheme is preferred.
Should more than 33% of the characters in the path not be representable 
in identifiers or the path exceed the identifier limit of 72 characters 
the Hash scheme is used instead.

Some full sample identifiers:
     CM_DP_share.cmake_2.8.Modules
     CM_CP_share.cmake_2.8.Modules.BundleUtilities.cmake
     CM_FP_share.cmake_2.8.Modules.AutomocInfo.cmake.in
     CM_FH_b44dc2f_BasicConfigVersion_SameMajorVersion.cmake.in

Nils



More information about the cmake-developers mailing list