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[]) ...@@ -124,9 +124,9 @@ int main(int argc, char *argv[])
if (strcmp(argv[1], "ported") == 0) { if (strcmp(argv[1], "ported") == 0) {
#ifdef __x86_64__ #ifdef __x86_64__
printf("1\n"); printf("\n");
#else #else
printf("0\n"); printf("Only x86-64 supported\n");
#endif #endif
} }
......
...@@ -15,13 +15,16 @@ ...@@ -15,13 +15,16 @@
static const char *can_build(struct manifest *m) static const char *can_build(struct manifest *m)
{ {
char *msg;
/* FIXME: In safe mode, we'd need complex guesstiparsing. */ /* FIXME: In safe mode, we'd need complex guesstiparsing. */
if (safe_mode) if (safe_mode)
return NULL; 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 NULL;
return "'_info ported' says not supported"; return tal_fmt(m, "'_info ported' says '%s'", msg);
} }
static void check_info_ported(struct manifest *m, static void check_info_ported(struct manifest *m,
......
...@@ -282,31 +282,33 @@ char **get_cflags(const void *ctx, const char *dir, ...@@ -282,31 +282,33 @@ char **get_cflags(const void *ctx, const char *dir,
return flags; return flags;
} }
static bool get_one_ported(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 *(*get_info)(const void *ctx, const char *dir))
{ {
char **ported = get_one_prop(ctx, dir, "ported", get_info); char **ported = get_one_prop(ctx, dir, "ported", get_info);
/* No news is good news. */ /* No news is good news. */
if (!ported || tal_count(ported) == 0) if (!ported || tal_count(ported) == 0)
return true; return NULL;
if (tal_count(ported) != 1) if (tal_count(ported) != 1)
errx(1, "%s/_info ported gave %zu lines, not one", errx(1, "%s/_info ported gave %zu lines, not one",
dir, tal_count(ported)); dir, tal_count(ported));
if (streq(ported[0], "1")) if (streq(ported[0], ""))
return true; return NULL;
else if (streq(ported[0], "0")) else
return false; return ported[0];
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_ported(const void *ctx, const char *dir, bool recurse,
char *(*get_info)(const void *ctx, const char *dir)) char *(*get_info)(const void *ctx, const char *dir))
{ {
if (!get_one_ported(ctx, dir, get_info)) char *msg;
return false;
msg = get_one_ported(ctx, dir, get_info);
if (msg)
return msg;
if (recurse) { if (recurse) {
size_t i; size_t i;
...@@ -317,11 +319,12 @@ bool get_ported(const void *ctx, const char *dir, bool recurse, ...@@ -317,11 +319,12 @@ bool get_ported(const void *ctx, const char *dir, bool recurse,
continue; continue;
subdir = path_join(ctx, find_ccan_dir(dir), deps[i]); subdir = path_join(ctx, find_ccan_dir(dir), deps[i]);
if (!get_one_ported(ctx, subdir, get_info)) msg = get_one_ported(ctx, subdir, get_info);
return false; if (msg)
return msg;
} }
} }
return true; return NULL;
} }
char **get_libs(const void *ctx, const char *dir, const char *style, 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, ...@@ -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_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_ported(const void *ctx, const char *dir, bool recurse,
char *(*get_info)(const void *ctx, const char *dir)); 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. */
......
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