meson: wire up credential helpers

We've got a couple of credential helpers in "contrib/credential", all
of which aren't yet wired up via Meson. Do so.

Note that ideally, we'd also wire up t0303 to be executed with each of
the credential helpers to verify their functionality. Unfortunately
though, none of them pass the test suite right now, so this is left for
a future change.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2025-02-18 08:45:54 +01:00
committed by Junio C Hamano
parent 3f22889276
commit 1cee22ebff
8 changed files with 51 additions and 1 deletions

View File

@ -0,0 +1,9 @@
executable('git-credential-libsecret',
sources: 'git-credential-libsecret.c',
dependencies: [
dependency('glib-2.0'),
dependency('libsecret-1'),
],
install: true,
install_dir: get_option('libexecdir') / 'git-core',
)

View File

@ -0,0 +1,3 @@
foreach helper : get_option('credential_helpers')
subdir(helper)
endforeach

View File

@ -0,0 +1,20 @@
credential_netrc = custom_target(
input: 'git-credential-netrc.perl',
output: 'git-credential-netrc',
command: generate_perl_command,
depends: [git_version_file],
install: true,
install_dir: get_option('libexecdir') / 'git-core',
)
credential_netrc_testenv = test_environment
credential_netrc_testenv.set('CREDENTIAL_NETRC_PATH', credential_netrc.full_path())
test('t-git-credential-netrc',
shell,
args: [ meson.current_source_dir() / 't-git-credential-netrc.sh' ],
workdir: meson.current_source_dir(),
env: credential_netrc_testenv,
depends: test_dependencies + bin_wrappers + [credential_netrc],
timeout: 0,
)

View File

@ -0,0 +1,9 @@
executable('git-credential-osxkeychain',
sources: 'git-credential-osxkeychain.c',
dependencies: [
dependency('CoreFoundation'),
dependency('Security'),
],
install: true,
install_dir: get_option('libexecdir') / 'git-core',
)

View File

@ -0,0 +1,5 @@
executable('git-credential-wincred',
sources: 'git-credential-wincred.c',
install: true,
install_dir: get_option('libexecdir') / 'git-core',
)

View File

@ -1,3 +1,5 @@
foreach feature : get_option('contrib')
subdir(feature)
endforeach
subdir('credential')

View File

@ -771,7 +771,7 @@ endif
# features. It is optional if you want to neither execute tests nor use any of
# these optional features.
perl_required = get_option('perl')
if get_option('tests') or get_option('gitweb').enabled()
if get_option('tests') or get_option('gitweb').enabled() or 'netrc' in get_option('credential_helpers')
perl_required = true
endif

View File

@ -29,6 +29,8 @@ option('version', type: 'string', value: '',
# Features supported by Git.
option('contrib', type: 'array', value: [ 'completion' ], choices: [ 'completion', 'subtree' ],
description: 'Contributed features to include.')
option('credential_helpers', type: 'array', value: [ ], choices: [ 'libsecret', 'netrc', 'osxkeychain', 'wincred' ],
description: 'Contributed features to include.')
option('curl', type: 'feature', value: 'enabled',
description: 'Build helpers used to access remotes with the HTTP transport.')
option('expat', type: 'feature', value: 'enabled',