diff --git a/common/Makefile b/common/Makefile index ce34d98..0429336 100644 --- a/common/Makefile +++ b/common/Makefile @@ -65,23 +65,16 @@ DEFAULT_ENVIRONMENT_PATH += $(CONFIG_DEFAULT_ENVIRONMENT_PATH) endif -ENV_FILES := $(shell cd $(srctree); for i in $(DEFAULT_ENVIRONMENT_PATH); do find $${i} -type f ; done) - endif # ifdef CONFIG_DEFAULT_ENVIRONMENT # # 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) +quiet_cmd_envs = ENV $@ +cmd_envs = ($(srctree)/scripts/genenv $(srctree) $(objtree) $@ $(DEFAULT_ENVIRONMENT_PATH)) -$(obj)/barebox_default_env: $(ENV_FILES) FORCE - $(call if_changed,env) +$(obj)/barebox_default_env: FORCE + $(call cmd,envs) barebox_default_env_comp = ifeq ($(CONFIG_DEFAULT_ENVIRONMENT_COMPRESSED_GZIP),y) diff --git a/scripts/genenv b/scripts/genenv index c14cd87..d0b0ffd 100755 --- a/scripts/genenv +++ b/scripts/genenv @@ -10,7 +10,8 @@ target=$3 shift 3 -tempdir="$objtree/.barebox_default_env" +tempdir="${target}.genenv.tmp" +tmpfile="$(mktemp)" mkdir -p "$tempdir" @@ -26,6 +27,13 @@ find $tempdir -name '.svn' -o -name '*~' -delete -$objtree/scripts/bareboxenv -s $tempdir $target +$objtree/scripts/bareboxenv -s $tempdir ${tmpfile} + +diff "${tmpfile}" "${target}" >/dev/null 2>/dev/null +if [ $? != 0 ]; then + mv "${tmpfile}" "${target}" +else + rm ${tmpfile} +fi rm -r $tempdir