mirror of
https://gitlab.freedesktop.org/pkg-config/pkg-config.git
synced 2026-02-03 10:10:27 +01:00
Enforce that only the first --atleast/exact/max-version option honored
This provides the user with output matching the behavior of the code. When multiple --atleast/exact/max-version options are supplied, only the first will be honored.
This commit is contained in:
parent
548ba5b223
commit
9cd35c624f
3 changed files with 14 additions and 2 deletions
|
|
@ -90,3 +90,8 @@ run_test --print-errors simple \<= $v3
|
|||
EXPECT_RETURN=0
|
||||
RESULT=""
|
||||
run_test --print-errors --max-version=$v3 simple
|
||||
|
||||
# mixing version compare testing is not allowed
|
||||
EXPECT_RETURN=0
|
||||
RESULT='Ignoring incompatible output option "--exact-version"'
|
||||
run_test --atleast-version=1.0.0 --exact-version=1.0.0 simple
|
||||
|
|
|
|||
7
main.c
7
main.c
|
|
@ -156,6 +156,8 @@ static gboolean
|
|||
output_opt_cb (const char *opt, const char *arg, gpointer data,
|
||||
GError **error)
|
||||
{
|
||||
static gboolean vercmp_opt_set = FALSE;
|
||||
|
||||
/* only allow one output mode, with a few exceptions */
|
||||
if (output_opt_set)
|
||||
{
|
||||
|
|
@ -178,7 +180,7 @@ output_opt_cb (const char *opt, const char *arg, gpointer data,
|
|||
bad_opt = FALSE;
|
||||
|
||||
/* --exists allowed with --atleast/exact/max-version */
|
||||
if (want_exists &&
|
||||
if (want_exists && !vercmp_opt_set &&
|
||||
(strcmp (opt, "--atleast-version") == 0 ||
|
||||
strcmp (opt, "--exact-version") == 0 ||
|
||||
strcmp (opt, "--max-version") == 0))
|
||||
|
|
@ -222,16 +224,19 @@ output_opt_cb (const char *opt, const char *arg, gpointer data,
|
|||
{
|
||||
required_atleast_version = g_strdup (arg);
|
||||
want_exists = TRUE;
|
||||
vercmp_opt_set = TRUE;
|
||||
}
|
||||
else if (strcmp (opt, "--exact-version") == 0)
|
||||
{
|
||||
required_exact_version = g_strdup (arg);
|
||||
want_exists = TRUE;
|
||||
vercmp_opt_set = TRUE;
|
||||
}
|
||||
else if (strcmp (opt, "--max-version") == 0)
|
||||
{
|
||||
required_max_version = g_strdup (arg);
|
||||
want_exists = TRUE;
|
||||
vercmp_opt_set = TRUE;
|
||||
}
|
||||
else if (strcmp (opt, "--list-all") == 0)
|
||||
want_list = TRUE;
|
||||
|
|
|
|||
|
|
@ -186,7 +186,9 @@ command line are known to \fIpkg-config\fP, and optionally whether the
|
|||
version number of a package meets certain constraints. If all packages
|
||||
exist and meet the specified version constraints,
|
||||
.I pkg-config
|
||||
exits successfully. Otherwise it exits unsuccessfully.
|
||||
exits successfully. Otherwise it exits unsuccessfully. Only the first
|
||||
VERSION comparing option will be honored. Subsequent options of this
|
||||
type will be ignored.
|
||||
|
||||
Rather than using the version-test options, you can simply give a version
|
||||
constraint after each package name, for example:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue