aboutsummaryrefslogtreecommitdiff
path: root/contrib/credential
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2025-03-03 08:53:02 -0800
committerJunio C Hamano <gitster@pobox.com>2025-03-03 08:53:03 -0800
commitca39da6997dbc4eb295219d7764fd68ecd80361e (patch)
tree69733cd32637a21c8c0d485fdf7f8cda0d2222b6 /contrib/credential
parent85e342adbdea3adbd70d607c0748c8a036d26c34 (diff)
parent63a597dd94079887a1b5ad72f64a8b0ee822dc27 (diff)
downloadgit-ca39da6997dbc4eb295219d7764fd68ecd80361e.tar.xz
Merge branch 'ps/meson-contrib-bits'
Update meson-based build procedure to cover contrib/ and other places as well. * ps/meson-contrib-bits: ci: exercise credential helpers ci: fix propagating UTF-8 test locale in musl-based Meson job meson: wire up static analysis via Coccinelle meson: wire up git-contacts(1) meson: wire up credential helpers contrib/credential: fix compilation of "osxkeychain" helper contrib/credential: fix compiling "libsecret" helper contrib/credential: fix compilation of wincred helper with MSVC contrib/credential: fix "netrc" tests with out-of-tree builds GIT-BUILD-OPTIONS: propagate project's source directory
Diffstat (limited to 'contrib/credential')
-rw-r--r--contrib/credential/libsecret/git-credential-libsecret.c10
-rw-r--r--contrib/credential/libsecret/meson.build9
-rw-r--r--contrib/credential/meson.build3
-rw-r--r--contrib/credential/netrc/meson.build20
-rwxr-xr-xcontrib/credential/netrc/t-git-credential-netrc.sh2
-rwxr-xr-xcontrib/credential/netrc/test.pl7
-rw-r--r--contrib/credential/osxkeychain/git-credential-osxkeychain.c2
-rw-r--r--contrib/credential/osxkeychain/meson.build9
-rw-r--r--contrib/credential/wincred/git-credential-wincred.c2
-rw-r--r--contrib/credential/wincred/meson.build5
10 files changed, 59 insertions, 10 deletions
diff --git a/contrib/credential/libsecret/git-credential-libsecret.c b/contrib/credential/libsecret/git-credential-libsecret.c
index 90034d0cf1..941b2afd5e 100644
--- a/contrib/credential/libsecret/git-credential-libsecret.c
+++ b/contrib/credential/libsecret/git-credential-libsecret.c
@@ -59,10 +59,10 @@ static void credential_clear(struct credential *c);
/* ----------------- Secret Service functions ----------------- */
static const SecretSchema schema = {
- "org.git.Password",
+ .name = "org.git.Password",
/* Ignore schema name during search for backwards compatibility */
- SECRET_SCHEMA_DONT_MATCH_NAME,
- {
+ .flags = SECRET_SCHEMA_DONT_MATCH_NAME,
+ .attributes = {
/*
* libsecret assumes attribute values are non-confidential and
* unchanging, so we can't include oauth_refresh_token or
@@ -168,7 +168,7 @@ static int keyring_get(struct credential *c)
g_free(c->password);
c->password = g_strdup("");
}
- for (int i = 1; i < g_strv_length(parts); i++) {
+ for (guint i = 1; i < g_strv_length(parts); i++) {
if (g_str_has_prefix(parts[i], "password_expiry_utc=")) {
g_free(c->password_expiry_utc);
c->password_expiry_utc = g_strdup(&parts[i][20]);
@@ -424,7 +424,7 @@ int main(int argc, char *argv[])
struct credential_operation const *try_op = credential_helper_ops;
struct credential cred = CREDENTIAL_INIT;
- if (!argv[1]) {
+ if (argc < 2 || !*argv[1]) {
usage(argv[0]);
exit(EXIT_FAILURE);
}
diff --git a/contrib/credential/libsecret/meson.build b/contrib/credential/libsecret/meson.build
new file mode 100644
index 0000000000..0137660fe0
--- /dev/null
+++ b/contrib/credential/libsecret/meson.build
@@ -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',
+)
diff --git a/contrib/credential/meson.build b/contrib/credential/meson.build
new file mode 100644
index 0000000000..4216296ae0
--- /dev/null
+++ b/contrib/credential/meson.build
@@ -0,0 +1,3 @@
+foreach helper : get_option('credential_helpers')
+ subdir(helper)
+endforeach
diff --git a/contrib/credential/netrc/meson.build b/contrib/credential/netrc/meson.build
new file mode 100644
index 0000000000..a990dbb86d
--- /dev/null
+++ b/contrib/credential/netrc/meson.build
@@ -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,
+)
diff --git a/contrib/credential/netrc/t-git-credential-netrc.sh b/contrib/credential/netrc/t-git-credential-netrc.sh
index bf2777308a..1b7b8b3a9a 100755
--- a/contrib/credential/netrc/t-git-credential-netrc.sh
+++ b/contrib/credential/netrc/t-git-credential-netrc.sh
@@ -15,7 +15,7 @@
export PERL5LIB="$GITPERLLIB"
test_expect_success 'git-credential-netrc' '
- perl "$GIT_BUILD_DIR"/contrib/credential/netrc/test.pl
+ perl "$GIT_SOURCE_DIR"/contrib/credential/netrc/test.pl
'
test_done
diff --git a/contrib/credential/netrc/test.pl b/contrib/credential/netrc/test.pl
index c0fb3718b2..67a0ede564 100755
--- a/contrib/credential/netrc/test.pl
+++ b/contrib/credential/netrc/test.pl
@@ -15,10 +15,11 @@ BEGIN {
my @global_credential_args = @ARGV;
my $scriptDir = dirname rel2abs $0;
-my ($netrc, $netrcGpg, $gcNetrc) = map { catfile $scriptDir, $_; }
+my ($netrc, $netrcGpg) = map { catfile $scriptDir, $_; }
qw(test.netrc
- test.netrc.gpg
- git-credential-netrc);
+ test.netrc.gpg);
+my $gcNetrc = $ENV{CREDENTIAL_NETRC_PATH} || catfile $scriptDir, qw(git-credential-netrc);
+
local $ENV{PATH} = join ':'
, $scriptDir
, $ENV{PATH}
diff --git a/contrib/credential/osxkeychain/git-credential-osxkeychain.c b/contrib/credential/osxkeychain/git-credential-osxkeychain.c
index 1c8310d7fe..611c9798b3 100644
--- a/contrib/credential/osxkeychain/git-credential-osxkeychain.c
+++ b/contrib/credential/osxkeychain/git-credential-osxkeychain.c
@@ -422,7 +422,7 @@ int main(int argc, const char **argv)
const char *usage =
"usage: git credential-osxkeychain <get|store|erase>";
- if (!argv[1])
+ if (argc < 2 || !*argv[1])
die("%s", usage);
if (open(argv[0], O_RDONLY | O_EXLOCK) == -1)
diff --git a/contrib/credential/osxkeychain/meson.build b/contrib/credential/osxkeychain/meson.build
new file mode 100644
index 0000000000..3c7677f736
--- /dev/null
+++ b/contrib/credential/osxkeychain/meson.build
@@ -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',
+)
diff --git a/contrib/credential/wincred/git-credential-wincred.c b/contrib/credential/wincred/git-credential-wincred.c
index 4be0d58cd8..04145b5118 100644
--- a/contrib/credential/wincred/git-credential-wincred.c
+++ b/contrib/credential/wincred/git-credential-wincred.c
@@ -12,7 +12,9 @@
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
+#ifndef _MSC_VER
__attribute__((format (printf, 1, 2)))
+#endif
static void die(const char *err, ...)
{
char msg[4096];
diff --git a/contrib/credential/wincred/meson.build b/contrib/credential/wincred/meson.build
new file mode 100644
index 0000000000..6de23ca17d
--- /dev/null
+++ b/contrib/credential/wincred/meson.build
@@ -0,0 +1,5 @@
+executable('git-credential-wincred',
+ sources: 'git-credential-wincred.c',
+ install: true,
+ install_dir: get_option('libexecdir') / 'git-core',
+)