Added force parameter when fixing git tags so stuff compiles even if tags are updated. Also added the (yet missing) nghttp2 lib as a dependency to CURL if a version >= 8.10.0 is compiled.

This commit is contained in:
Patrick 2024-11-20 20:23:07 +01:00
parent 5490de84eb
commit 349a08b084
2 changed files with 23 additions and 17 deletions

View File

@ -23,7 +23,7 @@ def _git_branch(env: Environment, repo_name: str, remote_url: str, git_ref: str
worktree_dir = os.path.join(env['CLONE_DIR'], 'git', repo_name, hashlib.shake_128(git_ref.encode('utf-8')).hexdigest(6)) # TODO: commit hash would be better, right? -> not if it's a branch!
if not os.path.exists(worktree_dir):
print(f'Checking out into {worktree_dir}.')
origin.fetch(tags=True)
origin.fetch(tags=True, force=True)
os.makedirs(worktree_dir)
repo.git.worktree('add', worktree_dir, git_ref)
elif env['UPDATE_REPOSITORIES']:
@ -50,13 +50,16 @@ def _make_callable(val):
if callable(val):
return val
else:
return lambda env: val
def _wrapped(*args, **kwargs):
return val
return _wrapped
def _git_recipe(env: Environment, globals: dict, repo_name, repo_url, cook_fn, versions = None, tag_pattern = None, tag_fn = None, ref_fn = None, dependencies: dict = {}) -> None:
_repo_name = _make_callable(repo_name)
_repo_url = _make_callable(repo_url)
_tag_pattern = _make_callable(tag_pattern)
versions_cb = versions and _make_callable(versions)
dependencies_cb = _make_callable(dependencies)
def _versions(env: Environment, update: bool = False, options: dict = {}):
if 'ref' in options:
@ -78,7 +81,7 @@ def _git_recipe(env: Environment, globals: dict, repo_name, repo_url, cook_fn, v
return [(0, 0, 0)]
def _dependencies(env: Environment, version) -> 'dict':
return dependencies
return dependencies_cb(env, version)
def _cook(env: Environment, version, options: dict = {}) -> dict:
if 'ref' in options:

View File

@ -26,19 +26,22 @@ def _git_cook(env: Environment, repo: dict) -> dict:
'CPPDEFINES': ['CURL_STATICLIB=1']
}
_DEPENDENCIES = {
'posix': {
'openssl': {},
'zlib': {},
'psl': {}
},
'nt': {
'wincrypt': {},
'winldap': {},
'winsock2': {}
}
}
def _git_dependencies(env: Environment, version) -> 'dict':
deps = {
'posix': {
'openssl': {},
'zlib': {},
'psl': {}
},
'nt': {
'wincrypt': {},
'winldap': {},
'winsock2': {}
}
}.get(os.name, {})
if os.name == 'posix' and version >= (8, 10, 0):
deps['nghttp2'] = {}
return deps
env.GitRecipe(
globals = globals(),
@ -47,5 +50,5 @@ env.GitRecipe(
tag_pattern = re.compile(r'^curl-([0-9]+)_([0-9]+)_([0-9]+)$'),
tag_fn = lambda version: f'curl-{version[0]}_{version[1]}_{version[2]}',
cook_fn = _git_cook,
dependencies = _DEPENDENCIES.get(os.name, {})
dependencies = _git_dependencies
)