diff --git a/Makefile b/Makefile index 3d60927..3e2b81f 100644 --- a/Makefile +++ b/Makefile @@ -1029,7 +1029,7 @@ CLEAN_DIRS += $(MODVERDIR) CLEAN_FILES += barebox System.map include/generated/barebox_default_env.h \ .tmp_version .tmp_barebox* barebox.bin barebox.map barebox.S \ - .tmp_kallsyms* barebox_default_env* barebox.ldr \ + .tmp_kallsyms* common/barebox_default_env* barebox.ldr \ scripts/bareboxenv-target barebox-flash-image \ Doxyfile.version barebox.srec barebox.s5p barebox.ubl \ barebox.uimage barebox.spi diff --git a/common/Makefile b/common/Makefile index 68582b7..b74c76b 100644 --- a/common/Makefile +++ b/common/Makefile @@ -39,6 +39,7 @@ obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_FLEXIBLE_BOOTARGS) += bootargs.o extra-$(CONFIG_MODULES) += module.lds +extra-y += barebox_default_env ifdef CONFIG_DEFAULT_ENVIRONMENT $(obj)/startup.o: include/generated/barebox_default_env.h @@ -63,8 +64,19 @@ endif # ifdef CONFIG_DEFAULT_ENVIRONMENT -barebox_default_env: $(ENV_FILES) - $(Q)$(srctree)/scripts/genenv $(srctree) $(objtree) $(DEFAULT_ENVIRONMENT_PATH) +# +# Generate a barebox envfs image. +# +# echo $(ENV_FILES) > /dev/null is just for letting if_changed +# recognize that something has changed when the environment has +# other files, +# +quiet_cmd_env = ENV $@ +cmd_env = ($(srctree)/scripts/genenv $(srctree) $(objtree) $@ $(DEFAULT_ENVIRONMENT_PATH)) || \ + (echo $(ENV_FILES) > /dev/null; rm -f $@ ; false) + +$(obj)/barebox_default_env: $(ENV_FILES) FORCE + $(call if_changed,env) barebox_default_env_comp = ifeq ($(CONFIG_DEFAULT_ENVIRONMENT_COMPRESSED_GZIP),y) @@ -77,22 +89,18 @@ barebox_default_env_comp = .lzo endif -barebox_default_env.gz: barebox_default_env +$(obj)/barebox_default_env.gz: $(obj)/barebox_default_env $(call if_changed,gzip) -barebox_default_env.bz2: barebox_default_env +$(obj)/barebox_default_env.bz2: $(obj)/barebox_default_env $(call if_changed,bzip2) -barebox_default_env.lzo: barebox_default_env +$(obj)/barebox_default_env.lzo: $(obj)/barebox_default_env $(call if_changed,lzo) -include/generated/barebox_default_env.h: barebox_default_env$(barebox_default_env_comp) - $(Q)cat $< | $(objtree)/scripts/bin2c default_environment > $@ - $(Q)echo "const int default_environment_uncompress_size=`stat -c%s barebox_default_env`;" >> $@ - -CLEAN_FILES += include/generated/barebox_default_env.h barebox_default_env -CLEAN_FILES += barebox_default_env.gz barebox_default_env.bz2 -CLEAN_FILES += barebox_default_env.lzo +include/generated/barebox_default_env.h: $(obj)/barebox_default_env$(barebox_default_env_comp) + $(Q)cat $< | (cd $(obj) && $(objtree)/scripts/bin2c default_environment) > $@ + $(Q)echo "const int default_environment_uncompress_size=`stat -c%s $(obj)/barebox_default_env`;" >> $@ # dependencies on generated files need to be listed explicitly $(obj)/version.o: include/generated/compile.h diff --git a/scripts/bareboxenv.c b/scripts/bareboxenv.c index a4aec94..f44a1f8 100644 --- a/scripts/bareboxenv.c +++ b/scripts/bareboxenv.c @@ -130,7 +130,8 @@ "options:\n" " -s save (directory -> environment sector)\n" " -l load (environment sector -> directory)\n" - " -p pad output file to given size\n", + " -p pad output file to given size\n" + " -v verbose\n", prgname); } @@ -139,8 +140,9 @@ int opt; int save = 0, load = 0, pad = 0, fd; char *filename = NULL, *dirname = NULL; + int verbose = 0; - while((opt = getopt(argc, argv, "slp:")) != -1) { + while((opt = getopt(argc, argv, "slp:v")) != -1) { switch (opt) { case 's': save = 1; @@ -151,6 +153,9 @@ case 'p': pad = strtoul(optarg, NULL, 0); break; + case 'v': + verbose = 1; + break; } } @@ -184,11 +189,13 @@ } if (load) { - printf("loading env from file %s to %s\n", filename, dirname); + if (verbose) + printf("loading env from file %s to %s\n", filename, dirname); envfs_load(filename, dirname); } if (save) { - printf("saving contents of %s to file %s\n", dirname, filename); + if (verbose) + printf("saving contents of %s to file %s\n", dirname, filename); envfs_save(filename, dirname); } exit(0); diff --git a/scripts/genenv b/scripts/genenv index ff7972b..374db6d 100755 --- a/scripts/genenv +++ b/scripts/genenv @@ -1,15 +1,20 @@ #!/bin/bash # Generate the default environment file from a list of directories -# usage: genenv ... +# usage: genenv ... # where is the base directory for relative pathes in # where is the base directory for relative pathes for result +# and is the resulting binary environment objtree=$2 -cd $1 || exit 1 -shift 2 +basedir=$1 +target=$3 +shift 3 -tempdir=$(mktemp -d tmp.XXXXXX) +tempdir="$objtree/.barebox_default_env" +mkdir -p "$tempdir" + +(cd $basedir for i in $*; do if [ -d $i ]; then cp -r $i/* $tempdir @@ -17,10 +22,10 @@ cp -a $i $tempdir fi done +) find $tempdir -name '.svn' -o -name '*~' | xargs --no-run-if-empty rm -r -$objtree/scripts/bareboxenv -s $tempdir $objtree/barebox_default_env +$objtree/scripts/bareboxenv -s $tempdir $target rm -r $tempdir -