Commit 60814843 authored by Rusty Russell's avatar Rusty Russell

tools: commit missing support for _info ported flag.

Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent e5e620e2
...@@ -87,6 +87,10 @@ test, but happy: ...@@ -87,6 +87,10 @@ test, but happy:
CCAN module must have '_info' file describing. No this score is 0. CCAN module must have '_info' file describing. No this score is 0.
However, *ccanlint* question may help to write one. However, *ccanlint* question may help to write one.
*info_ported*::
CCAN module '_info' can say 'ported' arg; if says '0' not ported, few tests
run.
*depends_exist*:: *depends_exist*::
'_info' file CCAN other module without saying, must find. It is not score 0. '_info' file CCAN other module without saying, must find. It is not score 0.
......
...@@ -227,7 +227,7 @@ get_all_deps(const void *ctx, const char *dir, const char *style, ...@@ -227,7 +227,7 @@ get_all_deps(const void *ctx, const char *dir, const char *style,
return deps; return deps;
} }
/* Can return NULL: _info may not support 'libs'. */ /* Can return NULL: _info may not support prop. */
static char **get_one_prop(const void *ctx, const char *dir, const char *prop, static char **get_one_prop(const void *ctx, const char *dir, const char *prop,
char *(*get_info)(const void *ctx, const char *dir)) char *(*get_info)(const void *ctx, const char *dir))
{ {
...@@ -282,6 +282,48 @@ char **get_cflags(const void *ctx, const char *dir, ...@@ -282,6 +282,48 @@ char **get_cflags(const void *ctx, const char *dir,
return flags; return flags;
} }
static bool get_one_ported(const void *ctx, const char *dir,
char *(*get_info)(const void *ctx, const char *dir))
{
char **ported = get_one_prop(ctx, dir, "ported", get_info);
/* No news is good news. */
if (!ported || tal_count(ported) == 0)
return true;
if (tal_count(ported) != 1)
errx(1, "%s/_info ported gave %zu lines, not one",
dir, tal_count(ported));
if (streq(ported[0], "1"))
return true;
else if (streq(ported[0], "0"))
return false;
errx(1, "%s/_info ported gave invalid output '%s'", dir, ported[0]);
}
bool get_ported(const void *ctx, const char *dir, bool recurse,
char *(*get_info)(const void *ctx, const char *dir))
{
if (!get_one_ported(ctx, dir, get_info))
return false;
if (recurse) {
size_t i;
char **deps = get_deps(ctx, dir, "depends", true, get_info);
for (i = 0; deps[i]; i++) {
char *subdir;
if (!strstarts(deps[i], "ccan/"))
continue;
subdir = path_join(ctx, find_ccan_dir(dir), deps[i]);
if (!get_one_ported(ctx, subdir, get_info))
return false;
}
}
return true;
}
char **get_libs(const void *ctx, const char *dir, const char *style, char **get_libs(const void *ctx, const char *dir, const char *style,
char *(*get_info)(const void *ctx, const char *dir)) char *(*get_info)(const void *ctx, const char *dir))
{ {
......
...@@ -46,6 +46,9 @@ char **get_libs(const void *ctx, const char *dir, const char *style, ...@@ -46,6 +46,9 @@ char **get_libs(const void *ctx, const char *dir, const char *style,
char **get_cflags(const void *ctx, const char *dir, char **get_cflags(const void *ctx, const char *dir,
char *(*get_info)(const void *ctx, const char *dir)); char *(*get_info)(const void *ctx, const char *dir));
bool get_ported(const void *ctx, const char *dir, bool recurse,
char *(*get_info)(const void *ctx, const char *dir));
/* From tools.c */ /* From tools.c */
/* If set, print all commands run, all output they give and exit status. */ /* If set, print all commands run, all output they give and exit status. */
extern bool tools_verbose; extern bool tools_verbose;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment