Basic Makefile and infrastructure to support dist tarballs.
Borrowing slightly from git.git, derive a VERSION-FILE from the current state of user's git working directory. The VERSION is derived relative to the latest git annotated tag object (using git-describe) and includable either in shell scripts or in Makefiles. The basic 'make dist' target generates a .tar.gz and a .zip file named by the detected version. Also include a basic clean target and dummy test target. Signed-off-by: Emil Sit <sit@emilsit.net>
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
VERSION-FILE
|
||||||
38
GEN-VERSION-FILE
Executable file
38
GEN-VERSION-FILE
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Based on git's GIT-VERSION-GEN.
|
||||||
|
|
||||||
|
VF=VERSION-FILE
|
||||||
|
DEF_VER=v2.2
|
||||||
|
|
||||||
|
LF='
|
||||||
|
'
|
||||||
|
|
||||||
|
if test -d .git -o -f .git &&
|
||||||
|
VN=$(git describe --abbrev=4 HEAD 2>/dev/null) &&
|
||||||
|
case "$VN" in
|
||||||
|
*$LF*) (exit 1) ;;
|
||||||
|
v[0-9]*)
|
||||||
|
git update-index -q --refresh
|
||||||
|
test -z "$(git diff-index --name-only HEAD --)" ||
|
||||||
|
VN="$VN-dirty" ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
VN=$(echo "$VN" | sed -e 's/-/./g');
|
||||||
|
else
|
||||||
|
VN="$DEF_VER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
VN=$(expr "$VN" : v*'\(.*\)')
|
||||||
|
|
||||||
|
if test -r $VF
|
||||||
|
then
|
||||||
|
VC=$(sed -e 's/^VERSION=//' <$VF)
|
||||||
|
else
|
||||||
|
VC=unset
|
||||||
|
fi
|
||||||
|
test "$VN" = "$VC" || {
|
||||||
|
echo >&2 "VERSION=$VN"
|
||||||
|
echo "VERSION=$VN" >$VF
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
33
Makefile
Normal file
33
Makefile
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#
|
||||||
|
# Makefile for todo.txt
|
||||||
|
#
|
||||||
|
|
||||||
|
# Dynamically detect/generate version file as necessary
|
||||||
|
# This file will define a variable called VERSION.
|
||||||
|
.PHONY: .FORCE-VERSION-FILE
|
||||||
|
VERSION-FILE: .FORCE-VERSION-FILE
|
||||||
|
@./GEN-VERSION-FILE
|
||||||
|
-include VERSION-FILE
|
||||||
|
|
||||||
|
# Maybe this will include the version in it.
|
||||||
|
todo.sh: VERSION-FILE
|
||||||
|
|
||||||
|
# For packaging
|
||||||
|
DISTFILES := README todo.cfg todo.sh
|
||||||
|
|
||||||
|
DISTNAME=todo.sh-$(VERSION)
|
||||||
|
dist: $(DISTFILES) todo.sh
|
||||||
|
mkdir -p $(DISTNAME)
|
||||||
|
cp -f $(DISTFILES) $(DISTNAME)/
|
||||||
|
tar cf $(DISTNAME).tar $(DISTNAME)/
|
||||||
|
gzip -f -9 $(DISTNAME).tar
|
||||||
|
zip -9r $(DISTNAME).zip $(DISTNAME)/
|
||||||
|
rm -r $(DISTNAME)
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
rm -f $(DISTNAME).tar.gz $(DISTNAME).zip
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
|
test:
|
||||||
|
@echo "TBD!"
|
||||||
Reference in New Issue
Block a user