util/kconfig: Uprev to Linux 6.1's kconfig
This also cleans up our patch queue. TEST=`util/abuild/abuild -C` output (config.h and config.build) remains the same Change-Id: I79159130ba3515ede59e9fb9fbf087e2ed76257a Signed-off-by: Patrick Georgi <patrick@coreboot.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/79203 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin L Roth <gaumless@gmail.com>
This commit is contained in:
		@@ -553,7 +553,7 @@ static int conf_choice(struct menu *menu)
 | 
				
			|||||||
			print_help(child);
 | 
								print_help(child);
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		sym_set_choice_value(sym, child->sym);
 | 
							sym_set_tristate_value(child->sym, yes);
 | 
				
			||||||
		for (child = child->list; child; child = child->next) {
 | 
							for (child = child->list; child; child = child->next) {
 | 
				
			||||||
			indent += 2;
 | 
								indent += 2;
 | 
				
			||||||
			conf(child);
 | 
								conf(child);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -230,6 +230,13 @@ static const char *conf_get_autoheader_name(void)
 | 
				
			|||||||
	return name ? name : "include/generated/autoconf.h";
 | 
						return name ? name : "include/generated/autoconf.h";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const char *conf_get_rustccfg_name(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char *name = getenv("KCONFIG_RUSTCCFG");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return name ? name : "include/generated/rustc_cfg";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const char *conf_get_autobase_name(void)
 | 
					static const char *conf_get_autobase_name(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	char *name = getenv("KCONFIG_SPLITCONFIG");
 | 
						char *name = getenv("KCONFIG_SPLITCONFIG");
 | 
				
			||||||
@@ -632,6 +639,9 @@ static const struct comment_style comment_style_c = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void conf_write_heading(FILE *fp, const struct comment_style *cs)
 | 
					static void conf_write_heading(FILE *fp, const struct comment_style *cs)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						if (!cs)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fprintf(fp, "%s\n", cs->prefix);
 | 
						fprintf(fp, "%s\n", cs->prefix);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n",
 | 
						fprintf(fp, "%s Automatically generated file; DO NOT EDIT.\n",
 | 
				
			||||||
@@ -787,6 +797,65 @@ static void print_symbol_for_c(FILE *fp, struct symbol *sym)
 | 
				
			|||||||
	free(escaped);
 | 
						free(escaped);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void print_symbol_for_rustccfg(FILE *fp, struct symbol *sym)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						const char *val;
 | 
				
			||||||
 | 
						const char *val_prefix = "";
 | 
				
			||||||
 | 
						char *val_prefixed = NULL;
 | 
				
			||||||
 | 
						size_t val_prefixed_len;
 | 
				
			||||||
 | 
						char *escaped = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (sym->type == S_UNKNOWN)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						val = sym_get_string_value(sym);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (sym->type) {
 | 
				
			||||||
 | 
						case S_BOOLEAN:
 | 
				
			||||||
 | 
						case S_TRISTATE:
 | 
				
			||||||
 | 
							/*
 | 
				
			||||||
 | 
							 * We do not care about disabled ones, i.e. no need for
 | 
				
			||||||
 | 
							 * what otherwise are "comments" in other printers.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							if (*val == 'n')
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/*
 | 
				
			||||||
 | 
							 * To have similar functionality to the C macro `IS_ENABLED()`
 | 
				
			||||||
 | 
							 * we provide an empty `--cfg CONFIG_X` here in both `y`
 | 
				
			||||||
 | 
							 * and `m` cases.
 | 
				
			||||||
 | 
							 *
 | 
				
			||||||
 | 
							 * Then, the common `fprintf()` below will also give us
 | 
				
			||||||
 | 
							 * a `--cfg CONFIG_X="y"` or `--cfg CONFIG_X="m"`, which can
 | 
				
			||||||
 | 
							 * be used as the equivalent of `IS_BUILTIN()`/`IS_MODULE()`.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							fprintf(fp, "--cfg=%s%s\n", CONFIG_, sym->name);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case S_HEX:
 | 
				
			||||||
 | 
							if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X'))
 | 
				
			||||||
 | 
								val_prefix = "0x";
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (strlen(val_prefix) > 0) {
 | 
				
			||||||
 | 
							val_prefixed_len = strlen(val) + strlen(val_prefix) + 1;
 | 
				
			||||||
 | 
							val_prefixed = xmalloc(val_prefixed_len);
 | 
				
			||||||
 | 
							snprintf(val_prefixed, val_prefixed_len, "%s%s", val_prefix, val);
 | 
				
			||||||
 | 
							val = val_prefixed;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* All values get escaped: the `--cfg` option only takes strings */
 | 
				
			||||||
 | 
						escaped = escape_string_value(val);
 | 
				
			||||||
 | 
						val = escaped;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fprintf(fp, "--cfg=%s%s=%s\n", CONFIG_, sym->name, val);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						free(escaped);
 | 
				
			||||||
 | 
						free(val_prefixed);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Write out a minimal config.
 | 
					 * Write out a minimal config.
 | 
				
			||||||
 * All values that has default values are skipped as this is redundant.
 | 
					 * All values that has default values are skipped as this is redundant.
 | 
				
			||||||
@@ -1175,6 +1244,12 @@ int conf_write_autoconf(int overwrite)
 | 
				
			|||||||
	if (ret)
 | 
						if (ret)
 | 
				
			||||||
		return ret;
 | 
							return ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = __conf_write_autoconf(conf_get_rustccfg_name(),
 | 
				
			||||||
 | 
									    print_symbol_for_rustccfg,
 | 
				
			||||||
 | 
									    NULL);
 | 
				
			||||||
 | 
						if (ret)
 | 
				
			||||||
 | 
							return ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * Create include/config/auto.conf. This must be the last step because
 | 
						 * Create include/config/auto.conf. This must be the last step because
 | 
				
			||||||
	 * Kbuild has a dependency on auto.conf and this marks the successful
 | 
						 * Kbuild has a dependency on auto.conf and this marks the successful
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -127,11 +127,6 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym)
 | 
				
			|||||||
	return (struct symbol *)sym->curr.val;
 | 
						return (struct symbol *)sym->curr.val;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return sym_set_tristate_value(chval, yes);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline bool sym_is_choice(struct symbol *sym)
 | 
					static inline bool sym_is_choice(struct symbol *sym)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return sym->flags & SYMBOL_CHOICE ? true : false;
 | 
						return sym->flags & SYMBOL_CHOICE ? true : false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -722,8 +722,8 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 | 
				
			|||||||
	if (!expr_eq(prop->menu->dep, prop->visible.expr))
 | 
						if (!expr_eq(prop->menu->dep, prop->visible.expr))
 | 
				
			||||||
		get_dep_str(r, prop->visible.expr, "  Visible if: ");
 | 
							get_dep_str(r, prop->visible.expr, "  Visible if: ");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	menu = prop->menu->parent;
 | 
						menu = prop->menu;
 | 
				
			||||||
	for (i = 0; menu && i < 8; menu = menu->parent) {
 | 
						for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {
 | 
				
			||||||
		bool accessible = menu_is_visible(menu);
 | 
							bool accessible = menu_is_visible(menu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		submenu[i++] = menu;
 | 
							submenu[i++] = menu;
 | 
				
			||||||
@@ -733,16 +733,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 | 
				
			|||||||
	if (head && location) {
 | 
						if (head && location) {
 | 
				
			||||||
		jump = xmalloc(sizeof(struct jump_key));
 | 
							jump = xmalloc(sizeof(struct jump_key));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (menu_is_visible(prop->menu)) {
 | 
							jump->target = location;
 | 
				
			||||||
			/*
 | 
					 | 
				
			||||||
			 * There is not enough room to put the hint at the
 | 
					 | 
				
			||||||
			 * beginning of the "Prompt" line. Put the hint on the
 | 
					 | 
				
			||||||
			 * last "Location" line even when it would belong on
 | 
					 | 
				
			||||||
			 * the former.
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			jump->target = prop->menu;
 | 
					 | 
				
			||||||
		} else
 | 
					 | 
				
			||||||
			jump->target = location;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (list_empty(head))
 | 
							if (list_empty(head))
 | 
				
			||||||
			jump->index = 0;
 | 
								jump->index = 0;
 | 
				
			||||||
@@ -758,13 +749,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 | 
				
			|||||||
		menu = submenu[i];
 | 
							menu = submenu[i];
 | 
				
			||||||
		if (jump && menu == location)
 | 
							if (jump && menu == location)
 | 
				
			||||||
			jump->offset = strlen(r->s);
 | 
								jump->offset = strlen(r->s);
 | 
				
			||||||
 | 
							str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu));
 | 
				
			||||||
		if (menu == &rootmenu)
 | 
					 | 
				
			||||||
			/* The real rootmenu prompt is ugly */
 | 
					 | 
				
			||||||
			str_printf(r, "%*cMain menu", j, ' ');
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (menu->sym) {
 | 
							if (menu->sym) {
 | 
				
			||||||
			str_printf(r, " (%s [=%s])", menu->sym->name ?
 | 
								str_printf(r, " (%s [=%s])", menu->sym->name ?
 | 
				
			||||||
				menu->sym->name : "<choice>",
 | 
									menu->sym->name : "<choice>",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
===================================================================
 | 
					===================================================================
 | 
				
			||||||
--- kconfig.orig/confdata.c
 | 
					--- kconfig.orig/confdata.c
 | 
				
			||||||
+++ kconfig/confdata.c
 | 
					+++ kconfig/confdata.c
 | 
				
			||||||
@@ -430,6 +430,7 @@ load:
 | 
					@@ -437,6 +437,7 @@ load:
 | 
				
			||||||
 			if (def == S_DEF_USER) {
 | 
					 			if (def == S_DEF_USER) {
 | 
				
			||||||
 				sym = sym_find(line + 2 + strlen(CONFIG_));
 | 
					 				sym = sym_find(line + 2 + strlen(CONFIG_));
 | 
				
			||||||
 				if (!sym) {
 | 
					 				if (!sym) {
 | 
				
			||||||
@@ -27,7 +27,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
 					conf_set_changed(true);
 | 
					 					conf_set_changed(true);
 | 
				
			||||||
 					continue;
 | 
					 					continue;
 | 
				
			||||||
 				}
 | 
					 				}
 | 
				
			||||||
@@ -512,6 +513,13 @@ load:
 | 
					@@ -519,6 +520,13 @@ load:
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 	free(line);
 | 
					 	free(line);
 | 
				
			||||||
 	fclose(in);
 | 
					 	fclose(in);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,7 +40,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
 static void conf_default_message_callback(const char *s)
 | 
					 static void conf_default_message_callback(const char *s)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	printf("#\n# ");
 | 
					 	printf("#\n# ");
 | 
				
			||||||
@@ -440,7 +450,7 @@ load:
 | 
					@@ -447,7 +457,7 @@ load:
 | 
				
			||||||
 					sym->type = S_BOOLEAN;
 | 
					 					sym->type = S_BOOLEAN;
 | 
				
			||||||
 			}
 | 
					 			}
 | 
				
			||||||
 			if (sym->flags & def_flags) {
 | 
					 			if (sym->flags & def_flags) {
 | 
				
			||||||
@@ -49,7 +49,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
 			}
 | 
					 			}
 | 
				
			||||||
 			switch (sym->type) {
 | 
					 			switch (sym->type) {
 | 
				
			||||||
 			case S_BOOLEAN:
 | 
					 			case S_BOOLEAN:
 | 
				
			||||||
@@ -479,7 +489,7 @@ load:
 | 
					@@ -486,7 +496,7 @@ load:
 | 
				
			||||||
 			}
 | 
					 			}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 			if (sym->flags & def_flags) {
 | 
					 			if (sym->flags & def_flags) {
 | 
				
			||||||
@@ -58,7 +58,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
 			}
 | 
					 			}
 | 
				
			||||||
 			if (conf_set_sym_val(sym, def, def_flags, p))
 | 
					 			if (conf_set_sym_val(sym, def, def_flags, p))
 | 
				
			||||||
 				continue;
 | 
					 				continue;
 | 
				
			||||||
@@ -504,7 +514,7 @@ load:
 | 
					@@ -511,7 +521,7 @@ load:
 | 
				
			||||||
 				break;
 | 
					 				break;
 | 
				
			||||||
 			case yes:
 | 
					 			case yes:
 | 
				
			||||||
 				if (cs->def[def].tri != no)
 | 
					 				if (cs->def[def].tri != no)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
===================================================================
 | 
					===================================================================
 | 
				
			||||||
--- kconfig.orig/confdata.c
 | 
					--- kconfig.orig/confdata.c
 | 
				
			||||||
+++ kconfig/confdata.c
 | 
					+++ kconfig/confdata.c
 | 
				
			||||||
@@ -440,7 +440,9 @@ load:
 | 
					@@ -447,7 +447,9 @@ load:
 | 
				
			||||||
 			if (def == S_DEF_USER) {
 | 
					 			if (def == S_DEF_USER) {
 | 
				
			||||||
 				sym = sym_find(line + 2 + strlen(CONFIG_));
 | 
					 				sym = sym_find(line + 2 + strlen(CONFIG_));
 | 
				
			||||||
 				if (!sym) {
 | 
					 				if (!sym) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,7 +62,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
===================================================================
 | 
					===================================================================
 | 
				
			||||||
--- kconfig.orig/confdata.c
 | 
					--- kconfig.orig/confdata.c
 | 
				
			||||||
+++ kconfig/confdata.c
 | 
					+++ kconfig/confdata.c
 | 
				
			||||||
@@ -530,11 +530,7 @@ load:
 | 
					@@ -537,11 +537,7 @@ load:
 | 
				
			||||||
 	free(line);
 | 
					 	free(line);
 | 
				
			||||||
 	fclose(in);
 | 
					 	fclose(in);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
===================================================================
 | 
					===================================================================
 | 
				
			||||||
--- kconfig.orig/confdata.c
 | 
					--- kconfig.orig/confdata.c
 | 
				
			||||||
+++ kconfig/confdata.c
 | 
					+++ kconfig/confdata.c
 | 
				
			||||||
@@ -715,7 +715,12 @@ static void print_symbol_for_dotconfig(F
 | 
					@@ -725,7 +725,12 @@ static void print_symbol_for_dotconfig(F
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static void print_symbol_for_autoconf(FILE *fp, struct symbol *sym)
 | 
					 static void print_symbol_for_autoconf(FILE *fp, struct symbol *sym)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -28,7 +28,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 void print_symbol_for_listconfig(struct symbol *sym)
 | 
					 void print_symbol_for_listconfig(struct symbol *sym)
 | 
				
			||||||
@@ -740,6 +745,10 @@ static void print_symbol_for_c(FILE *fp,
 | 
					@@ -750,6 +755,10 @@ static void print_symbol_for_c(FILE *fp,
 | 
				
			||||||
 	case S_TRISTATE:
 | 
					 	case S_TRISTATE:
 | 
				
			||||||
 		switch (*val) {
 | 
					 		switch (*val) {
 | 
				
			||||||
 		case 'n':
 | 
					 		case 'n':
 | 
				
			||||||
@@ -39,7 +39,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
 			return;
 | 
					 			return;
 | 
				
			||||||
 		case 'm':
 | 
					 		case 'm':
 | 
				
			||||||
 			sym_suffix = "_MODULE";
 | 
					 			sym_suffix = "_MODULE";
 | 
				
			||||||
@@ -751,6 +760,12 @@ static void print_symbol_for_c(FILE *fp,
 | 
					@@ -761,6 +770,12 @@ static void print_symbol_for_c(FILE *fp,
 | 
				
			||||||
 	case S_HEX:
 | 
					 	case S_HEX:
 | 
				
			||||||
 		if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X'))
 | 
					 		if (val[0] != '0' || (val[1] != 'x' && val[1] != 'X'))
 | 
				
			||||||
 			val_prefix = "0x";
 | 
					 			val_prefix = "0x";
 | 
				
			||||||
@@ -52,7 +52,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 	case S_STRING:
 | 
					 	case S_STRING:
 | 
				
			||||||
 		escaped = escape_string_value(val);
 | 
					 		escaped = escape_string_value(val);
 | 
				
			||||||
@@ -1108,8 +1123,9 @@ static int __conf_write_autoconf(const c
 | 
					@@ -1177,8 +1192,9 @@ static int __conf_write_autoconf(const c
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	conf_write_heading(file, comment_style);
 | 
					 	conf_write_heading(file, comment_style);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,8 +21,8 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
===================================================================
 | 
					===================================================================
 | 
				
			||||||
--- kconfig.orig/confdata.c
 | 
					--- kconfig.orig/confdata.c
 | 
				
			||||||
+++ kconfig/confdata.c
 | 
					+++ kconfig/confdata.c
 | 
				
			||||||
@@ -230,6 +230,13 @@ static const char *conf_get_autoheader_n
 | 
					@@ -237,6 +237,13 @@ static const char *conf_get_rustccfg_nam
 | 
				
			||||||
 	return name ? name : "include/generated/autoconf.h";
 | 
					 	return name ? name : "include/generated/rustc_cfg";
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+static const char *conf_get_autobase_name(void)
 | 
					+static const char *conf_get_autobase_name(void)
 | 
				
			||||||
@@ -35,7 +35,7 @@ Index: kconfig/confdata.c
 | 
				
			|||||||
 static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
 | 
					 static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	char *p2;
 | 
					 	char *p2;
 | 
				
			||||||
@@ -1024,19 +1031,19 @@ static int conf_write_autoconf_cmd(const
 | 
					@@ -1093,19 +1100,19 @@ static int conf_write_autoconf_cmd(const
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static int conf_touch_deps(void)
 | 
					 static int conf_touch_deps(void)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,30 +0,0 @@
 | 
				
			|||||||
From 48ad5c23680c81614663e09c6586ebeb26bf8c18 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Richard Marko <srk@48.io>
 | 
					 | 
				
			||||||
Date: Mon, 16 Oct 2023 15:26:33 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH] util/kconfig: chmod +w before savedefconfig
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This prevents a headscratcher when .config in root doesn't have a write
 | 
					 | 
				
			||||||
permission bit set which causes a build failure of savedefconfig
 | 
					 | 
				
			||||||
not able to write to copied file, for example
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
*** Error while saving defconfig to:
 | 
					 | 
				
			||||||
  build/mainboard/emulation/qemu-i440fx/cbfs-file.eU5E0t.out.tmp2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Change-Id: I2e7d35c9f6e8add3e7438d163850bc5fda5a99b2
 | 
					 | 
				
			||||||
Signed-off-by: Richard Marko <srk@48.io>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 util/kconfig/Makefile.inc | 1 +
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: kconfig/Makefile.inc
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- kconfig.orig/Makefile.inc
 | 
					 | 
				
			||||||
+++ kconfig/Makefile.inc
 | 
					 | 
				
			||||||
@@ -34,6 +34,7 @@ oldconfig: KCONFIG_STRICT=
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 savedefconfig: $(objk)/conf
 | 
					 | 
				
			||||||
 	cp $(DOTCONFIG) $(DEFCONFIG)
 | 
					 | 
				
			||||||
+	chmod +w $(DEFCONFIG)
 | 
					 | 
				
			||||||
 	$< --savedefconfig=$(DEFCONFIG) $(KBUILD_KCONFIG)
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 FORCE:
 | 
					 | 
				
			||||||
@@ -10,4 +10,3 @@
 | 
				
			|||||||
0010-reenable-source-in-choice.patch
 | 
					0010-reenable-source-in-choice.patch
 | 
				
			||||||
0013-util-kconfig-detect-ncurses-on-FreeBSD.patch
 | 
					0013-util-kconfig-detect-ncurses-on-FreeBSD.patch
 | 
				
			||||||
0014-util-kconfig-Move-Kconfig-deps-back-into-build-confi.patch
 | 
					0014-util-kconfig-Move-Kconfig-deps-back-into-build-confi.patch
 | 
				
			||||||
0015-util-kconfig-chmod-w-before-savedefconfig.patch
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user