+RFORMAT="%20s :: version=%s release=%s\n"
+define rpm_version_target
+$(1)-version-rpm:
+ @printf $(RFORMAT) $($(1).rpm-name) $($(1).rpm-version) $($(1).rpm-release)
+version-rpms: $(1)-version-rpm
+endef
+
+$(foreach package,$(sort $(ALL)), $(eval $(call rpm_version_target,$(package))))
+
+versions: myplc-release version-build version-svns version-rpms
+.PHONY: versions version-build version-rpms version-svns
+
+#################### package info
+PKGKEYS := tarballs source codebase srpm rpms rpmnames rpm-release rpm-name rpm-version rpm-subversion
+%-pkginfo: package=$(subst -pkginfo,,$@)
+%-pkginfo:
+ @$(foreach key,$(PKGKEYS),echo "$(package).$(key)=$($(package).$(key))";)
+## rpm info
+RPMKEYS := rpm-path package
+%-rpminfo: rpm=$(subst -rpminfo,,$@)
+%-rpminfo:
+ @$(foreach key,$(RPMKEYS),echo "$(rpm).$(key)=$($(rpm).$(key))";)
+
+#################### various lists - designed to run with stage1=true
+packages:
+ @$(foreach package,$(ALL), echo package=$(package) ref_module=$($(package).module) modules=$($(package)-MODULES) rpmnames=$($(package).rpmnames); )
+
+modules:
+ @$(foreach module,$(ALL-MODULES), echo module=$(module) svnpath=$($(module)-SVNPATH); )
+
+branches:
+ @$(foreach module,$(ALL-MODULES), \
+ $(if $($(module)-SVNBRANCH),echo module=$(module) branch=$($(module)-SVNBRANCH);))
+
+module-tools:
+ @$(foreach module,$(ALL-MODULES), \
+ $(if $($(module)-SVNPATH), \
+ $(if $($(module)-SVNBRANCH), \
+ echo $(module):$($(module)-SVNBRANCH); , \
+ echo $(module); )))
+
+info: packages modules branches
+
+.PHONY: info packages modules branches module-tools
+
+####################
+tests_svnpath:
+ @$(if $(tests-SVNPATH), echo $(tests-SVNPATH) > $@, \
+ echo "http://svn.planet-lab.org/svn/tests/trunk" > $@)