11"""Builder to help build vcpkg state"""
22
3+ from subprocess import CalledProcessError , check_output
34from typing import Any
45
56from packaging .requirements import Requirement
@@ -24,13 +25,21 @@ def generate_manifest(core_data: CorePluginData, data: VcpkgData) -> Manifest:
2425 Returns:
2526 The manifest
2627 """
27- manifest = {
28- 'name' : core_data .pep621_data .name ,
29- 'version_string' : core_data .pep621_data .version ,
30- 'dependencies' : data .dependencies ,
31- }
32-
33- return Manifest (** manifest )
28+ # If builtin_baseline is None, we set it to the current commit of the cloned vcpkg repository
29+ if data .builtin_baseline is None :
30+ try :
31+ # Get the current commit hash from the vcpkg repository
32+ result = check_output (['git' , 'rev-parse' , 'HEAD' ], cwd = str (core_data .project_data .project_root ))
33+ data .builtin_baseline = result .decode ('utf-8' ).strip ()
34+ except (CalledProcessError , FileNotFoundError ) as e :
35+ raise ConfigException ('Failed to get the current commit hash from the vcpkg repository.' , []) from e
36+
37+ return Manifest (
38+ name = core_data .pep621_data .name ,
39+ version_string = core_data .pep621_data .version ,
40+ dependencies = data .dependencies ,
41+ builtin_baseline = data .builtin_baseline ,
42+ )
3443
3544
3645def resolve_vcpkg_data (data : dict [str , Any ], core_data : CorePluginData ) -> VcpkgData :
@@ -64,6 +73,7 @@ def resolve_vcpkg_data(data: dict[str, Any], core_data: CorePluginData) -> Vcpkg
6473 return VcpkgData (
6574 install_directory = modified_install_directory ,
6675 dependencies = vcpkg_dependencies ,
76+ builtin_baseline = parsed_data .builtin_baseline ,
6777 )
6878
6979
@@ -83,18 +93,18 @@ def resolve_vcpkg_dependency(requirement: Requirement) -> VcpkgDependency:
8393 raise ConfigException ('Multiple specifiers are not supported. Please provide a single specifier.' , [])
8494
8595 # Extract the version from the single specifier
86- version = None
96+ min_version = None
8797 if len (specifiers ) == 1 :
8898 specifier = next (iter (specifiers ))
8999 if specifier .operator != '>=' :
90100 raise ConfigException (f"Unsupported specifier '{ specifier .operator } '. Only '>=' is supported." , [])
91- version = specifier .version
101+ min_version = specifier .version
92102
93103 return VcpkgDependency (
94104 name = requirement .name ,
95105 default_features = True ,
96106 features = [],
97- version = version ,
107+ version_ge = min_version ,
98108 platform = None ,
99109 host = False ,
100110 )
0 commit comments