9
0
Fork 0

defaultenv: simplify env dependencies

Finding out whether to rebuild the environment is a difficult task
since we have to track all files in a directory. Instead of trying
this, just rebuild the environment during every build and only if
it differs to the last one overwrite the target. This way make
only sees a change when the environment is changed.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2014-02-17 17:47:38 +01:00
parent 72230bad19
commit 658af1caf3
2 changed files with 14 additions and 13 deletions

View File

@ -65,23 +65,16 @@ ifneq ($(CONFIG_DEFAULT_ENVIRONMENT_PATH),"")
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)

View File

@ -10,7 +10,8 @@ basedir=$1
target=$3
shift 3
tempdir="$objtree/.barebox_default_env"
tempdir="${target}.genenv.tmp"
tmpfile="$(mktemp)"
mkdir -p "$tempdir"
@ -26,6 +27,13 @@ done
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