diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Kbuild.include | 10 | ||||
-rw-r--r-- | scripts/Makefile.lib | 27 | ||||
-rw-r--r-- | scripts/Makefile.xpl | 10 | ||||
-rw-r--r-- | scripts/dtc/dtc-lexer.l | 2 | ||||
-rw-r--r-- | scripts/dtc/dtc-parser.y | 13 | ||||
-rw-r--r-- | scripts/dtc/livetree.c | 33 | ||||
-rw-r--r-- | scripts/dtc/util.c | 11 | ||||
-rw-r--r-- | scripts/dtc/util.h | 1 | ||||
-rwxr-xr-x | scripts/make_pip.sh | 6 |
9 files changed, 70 insertions, 43 deletions
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index edc91b24e45..054dd157485 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include @@ -324,18 +324,16 @@ endif # do not delete intermediate files automatically .SECONDARY: -ifdef CONFIG_XPL_BUILD -XPL_ := SPL_ +ifeq ($(CONFIG_SPL_BUILD),y) +PHASE_ := SPL_ +else ifeq ($(CONFIG_VPL_BUILD),y) PHASE_ := VPL_ else ifeq ($(CONFIG_TPL_BUILD),y) PHASE_ := TPL_ else -PHASE_ := SPL_ +PHASE_ := endif endif -else -XPL_ := -PHASE_ := endif diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 275c308154b..83fd5ff6c31 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -377,35 +377,8 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ ; \ sed "s:$(pre-tmp):$(<):" $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) -capsule_esl_input_file=$(srctree)/lib/efi_loader/capsule_esl.dtsi.in -capsule_crt_file=$(subst $(quote),,$(CONFIG_EFI_CAPSULE_CRT_FILE)) -capsule_esl_dtsi=.capsule_esl.dtsi - -quiet_cmd_capsule_esl_gen = CAPSULE_ESL_GEN $@ -cmd_capsule_esl_gen = cert-to-efi-sig-list $< $@ - -$(obj)/capsule_esl_file: $(capsule_crt_file) FORCE -ifeq ($(CONFIG_EFI_CAPSULE_CRT_FILE),"") - $(error "CONFIG_EFI_CAPSULE_CRT_FILE is empty, EFI capsule authentication \ - public key must be specified when CONFIG_EFI_CAPSULE_AUTHENTICATE is enabled") -else - $(call cmd,capsule_esl_gen) -endif - -quiet_cmd_capsule_dtsi_gen = CAPSULE_DTSI_GEN $@ -cmd_capsule_dtsi_gen = \ - $(shell sed "s:ESL_BIN_FILE:$(abspath $<):" $(capsule_esl_input_file) > $@) - -$(obj)/$(capsule_esl_dtsi): $(obj)/capsule_esl_file FORCE - $(call cmd,capsule_dtsi_gen) - dtsi_include_list_deps := $(addprefix $(u_boot_dtsi_loc),$(subst $(quote),,$(dtsi_include_list))) -ifdef CONFIG_EFI_CAPSULE_AUTHENTICATE -dtsi_include_list += $(capsule_esl_dtsi) -dtsi_include_list_deps += $(obj)/$(capsule_esl_dtsi) -endif - ifneq ($(CHECK_DTBS),) DT_CHECKER ?= dt-validate DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m) diff --git a/scripts/Makefile.xpl b/scripts/Makefile.xpl index abc49fbe6c9..43f27874f9f 100644 --- a/scripts/Makefile.xpl +++ b/scripts/Makefile.xpl @@ -58,20 +58,18 @@ endif export SPL_NAME -ifdef CONFIG_XPL_BUILD -XPL_ := SPL_ +ifeq ($(CONFIG_SPL_BUILD),y) +PHASE_ := SPL_ +else ifeq ($(CONFIG_VPL_BUILD),y) PHASE_ := VPL_ else ifeq ($(CONFIG_TPL_BUILD),y) PHASE_ := TPL_ else -PHASE_ := SPL_ +PHASE_ := endif endif -else -XPL_ := -PHASE_ := endif ifeq ($(obj)$(CONFIG_SUPPORT_SPL),spl) diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l index d3694d6cf20..d34e1b04220 100644 --- a/scripts/dtc/dtc-lexer.l +++ b/scripts/dtc/dtc-lexer.l @@ -215,7 +215,7 @@ static void PRINTF(1, 2) lexical_error(const char *fmt, ...); return DT_REF; } -<*>"&{/"{PATHCHAR}*\} { /* new-style path reference */ +<*>"&{"{PATHCHAR}*\} { /* new-style path reference */ yytext[yyleng-1] = '\0'; DPRINT("Ref: %s\n", yytext+2); yylval.labelref = xstrdup(yytext+2); diff --git a/scripts/dtc/dtc-parser.y b/scripts/dtc/dtc-parser.y index 011a5b25539..b3b9c83873d 100644 --- a/scripts/dtc/dtc-parser.y +++ b/scripts/dtc/dtc-parser.y @@ -34,6 +34,12 @@ extern void yyerror(char const *s); extern struct dt_info *parser_output; extern bool treesource_error; + +static bool is_ref_relative(const char *ref) +{ + return ref[0] != '/' && strchr(&ref[1], '/'); +} + %} %union { @@ -176,12 +182,17 @@ devicetree: */ if (!($<flags>-1 & DTSF_PLUGIN)) ERROR(&@2, "Label or path %s not found", $1); + else if (is_ref_relative($1)) + ERROR(&@2, "Label-relative reference %s not supported in plugin", $1); $$ = add_orphan_node(name_node(build_node(NULL, NULL), ""), $2, $1); } | devicetree DT_LABEL DT_REF nodedef { struct node *target = get_node_by_ref($1, $3); + if (($<flags>-1 & DTSF_PLUGIN) && is_ref_relative($3)) + ERROR(&@2, "Label-relative reference %s not supported in plugin", $3); + if (target) { add_label(&target->labels, $2); merge_nodes(target, $4); @@ -197,6 +208,8 @@ devicetree: * so $-1 is what we want (plugindecl) */ if ($<flags>-1 & DTSF_PLUGIN) { + if (is_ref_relative($2)) + ERROR(&@2, "Label-relative reference %s not supported in plugin", $2); add_orphan_node($1, $3, $2); } else { struct node *target = get_node_by_ref($1, $2); diff --git a/scripts/dtc/livetree.c b/scripts/dtc/livetree.c index ba06ef348be..4cfc2adccdd 100644 --- a/scripts/dtc/livetree.c +++ b/scripts/dtc/livetree.c @@ -583,12 +583,39 @@ struct node *get_node_by_phandle(struct node *tree, cell_t phandle) struct node *get_node_by_ref(struct node *tree, const char *ref) { + struct node *target = tree; + const char *label = NULL, *path = NULL; + if (streq(ref, "/")) return tree; - else if (ref[0] == '/') - return get_node_by_path(tree, ref); + + if (ref[0] == '/') + path = ref; else - return get_node_by_label(tree, ref); + label = ref; + + if (label) { + const char *slash = strchr(label, '/'); + char *buf = NULL; + + if (slash) { + buf = xstrndup(label, slash - label); + label = buf; + path = slash + 1; + } + + target = get_node_by_label(tree, label); + + free(buf); + + if (!target) + return NULL; + } + + if (path) + target = get_node_by_path(target, path); + + return target; } cell_t get_node_phandle(struct node *root, struct node *node) diff --git a/scripts/dtc/util.c b/scripts/dtc/util.c index 23334d39bb6..25d4db1e8c2 100644 --- a/scripts/dtc/util.c +++ b/scripts/dtc/util.c @@ -46,6 +46,17 @@ char *xstrdup(const char *s) return d; } +char *xstrndup(const char *s, size_t n) +{ + size_t len = strnlen(s, n) + 1; + char *d = xmalloc(len); + + memcpy(d, s, len - 1); + d[len - 1] = '\0'; + + return d; +} + /* based in part from (3) vsnprintf */ int xasprintf(char **strp, const char *fmt, ...) { diff --git a/scripts/dtc/util.h b/scripts/dtc/util.h index 211d584435d..23e32962385 100644 --- a/scripts/dtc/util.h +++ b/scripts/dtc/util.h @@ -70,6 +70,7 @@ static inline void *xrealloc(void *p, size_t len) } extern char *xstrdup(const char *s); +extern char *xstrndup(const char *s, size_t len); extern int PRINTF(2, 3) xasprintf(char **strp, const char *fmt, ...); extern char *join_path(const char *path, const char *name); diff --git a/scripts/make_pip.sh b/scripts/make_pip.sh index d2639ffd6e4..33ad51ada70 100755 --- a/scripts/make_pip.sh +++ b/scripts/make_pip.sh @@ -106,6 +106,10 @@ fi mkdir ${dir}/tests cd ${dir} +# Use virtual environment +python3 -m venv .venv +source .venv/bin/activate + # Make sure the tools are up to date python3 -m pip install --upgrade build python3 -m pip install --upgrade twine @@ -122,6 +126,8 @@ if [ -n "${upload}" ]; then echo "Completed upload of ${tool}" fi +# Finish using virtual environment +deactivate rm -rf "${dir}" echo -e "done\n\n" |