[U-Boot] [PATCH v4] tools/env: add posibility to inject configuration

Joe Hershberger
2012-10-16T00:40:34Z

Hi Andreas,

On Tue, Jan 24, 2012 at 3:10 AM, Andreas Bie?mann
<andreas.devel@googlemail.com> wrote:
> From: Andreas Bie?mann <biessmann@corscience.de>
>
> If one want to use fw_printenv/fw_setenv in special variants (eg compiled in
> MTD parameters without configuration file) he need to change the sources.
> This patch add the posibillity to change the behaviour of fw_printenv by
> defining a specific configuration header at compile time.
> Therefore no need to patch the sources for special environment which fits
> better into automated build environments.
>
> Signed-off-by: Andreas Bie?mann <biessmann@corscience.de>
> ---
> total: 0 errors, 0 warnings, 164 lines checked
>
> NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE
>
> 0001-tools-env-add-posibility-to-inject-configuration.patch has no obvious style problems and is ready for submission.
>
> changes since v1:
> - use ?= style in Makefile as suggested by Mike
> - remove c++ style comments in header
>
> changes since v2:
> - place copied/generated fw_env_config.h in include/generated
> - adopt tools/env/Makefile to new placement of fw_env_config.h
>
> changes since v3:
> - add (C) header
> - generate empty config.h for unconfigured U-Boot tree
> - rebase
>
> tools/env/Makefile | 29 +++++++++++++++---
> tools/env/fw_env.h | 32 +++-----------------
> tools/env/fw_env_config.h.in | 66 ++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 95 insertions(+), 32 deletions(-)
> create mode 100644 tools/env/fw_env_config.h.in
>
> diff --git a/tools/env/Makefile b/tools/env/Makefile
> index 28b73da..4a0b2b0 100644
> --- a/tools/env/Makefile
> +++ b/tools/env/Makefile
> @@ -2,6 +2,9 @@
> # (C) Copyright 2002-2006
> # Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> #
> +# (C) Copyright 2012
> +# Andreas Bie?mann, Corscience GmbH&Co.KG, biessmann at corscience.de
> +#
> # See file CREDITS for list of people who contributed to this
> # project.
> #
> @@ -24,26 +27,42 @@
> include $(TOPDIR)/config.mk
>
> HOSTSRCS := $(SRCTREE)/lib/crc32.c fw_env.c fw_env_main.c
> -HEADERS := fw_env.h
> +HEADERS := fw_env.h $(OBJTREE)/include/generated/fw_env_config.h
> +FW_ENV_CONFIG ?= fw_env_config.h.in
>
> # Compile for a hosted environment on the target
> HOSTCPPFLAGS = -idirafter $(SRCTREE)/include \
> - -idirafter $(OBJTREE)/include2 \
> -idirafter $(OBJTREE)/include \
> + -idirafter $(OBJTREE)/include/generated \
> -DUSE_HOSTCC
>
> ifeq ($(MTD_VERSION),old)
> HOSTCPPFLAGS += -DMTD_OLD
> endif
>
> -all: $(obj)fw_printenv
> +all: $(obj)fw_printenv
>
> # Some files complain if compiled with -pedantic, use HOSTCFLAGS_NOPED
> -$(obj)fw_printenv: $(HOSTSRCS) $(HEADERS)
> +$(obj)fw_printenv: $(HOSTSRCS) $(HEADERS)
> $(HOSTCC) $(HOSTCFLAGS_NOPED) $(HOSTLDFLAGS) -o $@ $(HOSTSRCS)
>
> +$(OBJTREE)/include/generated/fw_env_config.h: $(FW_ENV_CONFIG)
> + @cp -f $< $@
> +
> +# add additional dependency for .depend
> +$(obj).depend: $(OBJTREE)/include/generated/fw_env_config.h
> +
> +ifneq ($(OBJTREE)/include/config.mk,$(wildcard $(OBJTREE)/include/config.mk))
> +# our U-Boot tree is not configured, generate fake config.h
> +$(OBJTREE)/include/config.h:
> + @cat /dev/null > $@
> +
> +# add additional dependency for .depend
> +$(obj).depend: $(OBJTREE)/include/config.h
> +endif
> +
> clean:
> - rm -f $(obj)fw_printenv
> + rm -f $(obj)fw_printenv $(obj)fw_env_config.h
>
> #########################################################################
>
> diff --git a/tools/env/fw_env.h b/tools/env/fw_env.h
> index 2dcb373..c237154 100644
> --- a/tools/env/fw_env.h
> +++ b/tools/env/fw_env.h
> @@ -20,34 +20,10 @@
> * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> * MA 02111-1307 USA
> */
> +#ifndef _FW_ENV_H_
> +#define _FW_ENV_H_
>
> -/*
> - * To build the utility with the run-time configuration
> - * uncomment the next line.
> - * See included "fw_env.config" sample file
> - * for notes on configuration.
> - */
> -#define CONFIG_FILE "/etc/fw_env.config"
> -
> -#define HAVE_REDUND /* For systems with 2 env sectors */
> -#define DEVICE1_NAME "/dev/mtd1"
> -#define DEVICE2_NAME "/dev/mtd2"
> -#define DEVICE1_OFFSET 0x0000
> -#define ENV1_SIZE 0x4000
> -#define DEVICE1_ESIZE 0x4000
> -#define DEVICE1_ENVSECTORS 2
> -#define DEVICE2_OFFSET 0x0000
> -#define ENV2_SIZE 0x4000
> -#define DEVICE2_ESIZE 0x4000
> -#define DEVICE2_ENVSECTORS 2

Why not just have these settings directly be #define'd in the board
config file? You can still leave the one default here that is
actually used (CONFIG_FILE "/etc/fw_env.config") and make it
overridable. The rest just need to be documented in the README.

This new scheme seems overly complicated and I don't know what it buys
you over the normal place for configuration.

[...]

-Joe