+###########################################################################
+# Standard debian rules
-lib/00_version.sh:
- echo "version='`git describe --tag`'" >$@
-.PHONY: lib/00_version.sh
+clean::
+ fakeroot debian/rules clean
+.PHONY: clean
-# The $(wildcard ...) return value is sorted and duplicates are
-# removed from the list of dependencies. I need to mention
-# lib/00_version.sh explicitly since it might not yet exist
-mapsectorsh: mapsector lib/00_version.sh $(wildcard lib/[0-9][0-9]_*.sh)
- @echo "generating $@"
- @( \
- sed -n -e '1p' $<; \
- echo "#"; \
- echo "# $@ automatically generated from"; \
- for script in $^; do \
- echo "# $$script"; \
- done; \
- sed -n -e '2,/^load$$/p' $<; \
- for script in $^; do \
- if [ "$$script" == "$<" ]; then continue; fi; \
- echo "#### $$script"; \
- echo; \
- cat $$script; \
- echo; \
- done; \
- sed -n -e '/^load$$/,$$p' $<; \
- ) >$@
- @sed -i -e 's/^load$$/####/' -eT -eh -eG -eH -eG -eH -eG -e'y/\n/#/' $@
- @chmod ugo+rx $@
+prepare::
+.PHONY: prepare
+
+deb: prepare
+ dpkg-buildpackage -us -uc -rfakeroot -I.git -I.gitignore -I.gitmodules
+.PHONY: deb
-NAME := mapsector
+###########################################################################
+# Generate debian/changelog from git log
+
+NAME := $(shell awk '/^Source:/{print $$2}' debian/control)
CLOGDIR := .git/changelogs
CHANGELOGS := $(shell lasttag=HEAD; \
(git tag -l 'v*'; echo) \
@echo "generating $@"
@mkdir -p "$(CLOGDIR)"
@( \
+ set -e; \
version="$@"; version="$${version#$(CLOGDIR)/}"; \
from="$${version%-*}"; version="$${version#*-}"; to="$$version"; \
if [ "$$from" == "$$to" ]; then from=""; fi; \
- case "$$version" in \
- HEAD) version="`git describe --tag --match='v*' | sed -e 's/-/~/' -e 's/-/./g'`"; \
- release="UNRELEASED" ;; \
- v*) release="unstable" ;; \
- esac; \
+ release="unstable"; \
+ if [ "$$version" == "HEAD" ]; then \
+ version="`git describe --tag --match='v*' | sed -e 's/-/~/' -e 's/-/./g'`"; \
+ release="UNRELEASED"; \
+ fi; \
version="$${version#v}"; \
echo "$(NAME) ($$version) $$release; urgency=low"; \
echo; \
| while read commit description; do \
echo " * [$$commit] $$description"; \
done; \
- echo; \
- date="`git log --format='%cD' $$to'^!'`"; \
- author="`git log --format='%an <%ae>' $$to'^!'`"; \
- echo " -- $$author $$date"; \
- echo; \
- ) >$@
-.PHONY: $(word 1,$(CHANGELOGS))
+ git log --format='%n -- %an <%ae> %cD%n' $$to'^!'; \
+ ) >$@ || (rm -f $@; false)
+.PHONY: $(word 1,$(CHANGELOGS)) # The first changelog entry must be recreated on each call
debian/changelog: $(CHANGELOGS)
- cat $^ > $@
-
-prepare: lib/00_version.sh debian/changelog
-.PHONY: prepare
+ cat $^ > $@ || (rm -f $@; false)
-clean:
- fakeroot debian/rules clean
- rm -f mapsectorsh
+clean::
rm -f debian/changelog
+ rm -rf $(CLOGDIR)
+
+prepare:: debian/changelog
+
+###########################################################################
+###########################################################################
+
+prepare::
+ echo "version='`git describe --tag`'" >lib/00_version.sh
+clean::
rm -f lib/00_version.sh
- rm -rf .git/changelogs
-.PHONY: clean
+
+# The $(wildcard ...) return value is sorted and duplicates are
+# removed from the list of dependencies. I need to mention
+# lib/00_version.sh explicitly since it might not yet exist
+mapsectorsh: mapsector lib/00_version.sh $(wildcard lib/[0-9][0-9]_*.sh)
+ @echo "generating $@"
+ @( \
+ set -e; \
+ sed -n -e '1p' $<; \
+ echo "#"; \
+ echo "# $@ automatically generated from"; \
+ for script in $^; do \
+ echo "# $$script"; \
+ done; \
+ sed -n -e '2,/^load$$/p' $<; \
+ for script in $^; do \
+ if [ "$$script" == "$<" ]; then continue; fi; \
+ echo "#### $$script"; \
+ echo; \
+ cat $$script; \
+ echo; \
+ done; \
+ sed -n -e '/^load$$/,$$p' $<; \
+ ) >$@ || (rm -f $@; false)
+ @sed -i -e 's/^load$$/####/' -eT -eh -eG -eH -eG -eH -eG -e'y/\n/#/' $@
+ chmod ugo+rx $@
+clean::
+ rm -f mapsectorsh