+$(foreach package, $(ALL), $(eval $(call stage1_package_vars,$(package))))
+
+# compute all modules
+ALL.modules := build tests
+$(foreach package,$(ALL), $(eval ALL.modules+=$($(package)-MODULES)))
+ALL.modules:=$(sort $(ALL.modules))
+
+# extract revision from -SVNPATH or tag from -GITPATH
+define stage1_module_vars
+ifneq "$($(1)-SVNPATH)" ""
+$(1)-SVNPATH := $(strip $($(1)-SVNPATH))
+$(1)-SCMPATH := $(strip $($(1)-SVNPATH))
+else
+$(1)-GITPATH := $$(strip $$($(1)-GITPATH))
+$(1)-SCMPATH := $$(strip $$($(1)-GITPATH))
+$(1).gitrepo := $$(firstword $$(subst @, ,$$($(1)-GITPATH)))
+$(1).gittag := $$(word 2,$$(subst @, ,$$($(1)-GITPATH)))
+$(1).gittag := $$(if $$($(1).gittag),$$($(1).gittag),master)
+endif
+endef
+
+$(foreach module,$(ALL.modules), $(eval $(call stage1_module_vars,$(module))))