Commit 9a8344b2 authored by Rusty Russell's avatar Rusty Russell

ccanlint: make _info ported an empty string on success.

Otherwise it describes what we need.
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 0ca50da9
......@@ -124,9 +124,9 @@ int main(int argc, char *argv[])
if (strcmp(argv[1], "ported") == 0) {
#ifdef __x86_64__
printf("1\n");
printf("\n");
#else
printf("0\n");
printf("Only x86-64 supported\n");
#endif
}
......
......@@ -15,13 +15,16 @@
static const char *can_build(struct manifest *m)
{
char *msg;
/* FIXME: In safe mode, we'd need complex guesstiparsing. */
if (safe_mode)
return NULL;
if (get_ported(m, m->dir, true, get_or_compile_info))
msg = get_ported(m, m->dir, true, get_or_compile_info);
if (!msg)
return NULL;
return "'_info ported' says not supported";
return tal_fmt(m, "'_info ported' says '%s'", msg);
}
static void check_info_ported(struct manifest *m,
......
......@@ -282,31 +282,33 @@ char **get_cflags(const void *ctx, const char *dir,
return flags;
}
static bool get_one_ported(const void *ctx, const char *dir,
char *(*get_info)(const void *ctx, const char *dir))
static char *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;
return NULL;
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]);
if (streq(ported[0], ""))
return NULL;
else
return ported[0];
}
bool get_ported(const void *ctx, const char *dir, bool recurse,
char *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;
char *msg;
msg = get_one_ported(ctx, dir, get_info);
if (msg)
return msg;
if (recurse) {
size_t i;
......@@ -317,11 +319,12 @@ bool get_ported(const void *ctx, const char *dir, bool recurse,
continue;
subdir = path_join(ctx, find_ccan_dir(dir), deps[i]);
if (!get_one_ported(ctx, subdir, get_info))
return false;
msg = get_one_ported(ctx, subdir, get_info);
if (msg)
return msg;
}
}
return true;
return NULL;
}
char **get_libs(const void *ctx, const char *dir, const char *style,
......
......@@ -46,8 +46,8 @@ char **get_libs(const void *ctx, const char *dir, const char *style,
char **get_cflags(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));
char *get_ported(const void *ctx, const char *dir, bool recurse,
char *(*get_info)(const void *ctx, const char *dir));
/* From tools.c */
/* If set, print all commands run, all output they give and exit status. */
......
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