Browse Source

ccanlint: make _info ported an empty string on success.

Otherwise it describes what we need.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell 10 years ago
parent
commit
9a8344b2cd
4 changed files with 27 additions and 21 deletions
  1. 2 2
      ccan/altstack/_info
  2. 5 2
      tools/ccanlint/tests/info_ported.c
  3. 18 15
      tools/depends.c
  4. 2 2
      tools/tools.h

+ 2 - 2
ccan/altstack/_info

@@ -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
 	}
 

+ 5 - 2
tools/ccanlint/tests/info_ported.c

@@ -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,

+ 18 - 15
tools/depends.c

@@ -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,

+ 2 - 2
tools/tools.h

@@ -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. */