чување d7e072fd7fb23f32a728294890ff61a72fd709f4
родитељ 9729cf9b1bf0634c8c3c06674620491c63fe1588
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Mon, 11 Mar 2024 12:44:03 +0100
Rebuild when the date or version change
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 4, додавања: 40(+), брисања: 18(-)
diff --git a/Makefile b/Makefile
@@ -3,12 +3,12 @@ include config.mk
.SUFFIXES: .1.in .1 .h.in .h .c .o
.1.in.1:
- sh -x lib/replacepat $< > $@
+ sh -x lib/replacepat $< $@
.h.in.h:
- sh -x lib/replacepat $< > $@
+ sh -x lib/replacepat $< $@
-all: $(PROG) $(MANPAGE) examples
+all: $(PROG) $(MANPAGE) examples makedate makeversion
examples:
cd examples && make all
@@ -19,17 +19,19 @@ date:
version:
sh lib/makeversion
-slweb.o: slweb.c defs.h utf8.h version.h
+makedate:
+ sh lib/makedate
-$(MANPAGE): $(MANPAGE).in version date
+makeversion:
+ sh lib/makeversion
-version.h: version.h.in version date
+slweb.o: slweb.c defs.h utf8.h version.h
-utf8.o: utf8.c utf8.h
+$(MANPAGE): $(MANPAGE).in date version
-strlcpy.o: strlcpy.c
+version.h: version.h.in date version
-strlcat.o: strlcat.c
+utf8.o: utf8.c utf8.h
$(PROG): $(OBJS)
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
@@ -63,4 +65,4 @@ test: all
pack: all version
sh -x lib/mkpack
-.PHONY: all clean examples install uninstall pack test
+.PHONY: clean examples install makedate makeversion pack test uninstall
diff --git a/lib/makedate b/lib/makedate
@@ -9,12 +9,22 @@ e_user=$(id -un)
if [ -d .git ] && command -v git >/dev/null 2>&1; then
if [ "$e_user" = "$user" ]; then
git log --format=format:%cd \
- --date=format:"%B %d, %Y" -1 @ >date
+ --date=format:"%B %d, %Y" -1 @ >date.new
else
su "${user}" -c 'env LC_ALL=C git log --format=format:%cd \
- --date=format:"%B %d, %Y" -1 @' >date
+ --date=format:"%B %d, %Y" -1 @' >date.new
fi
- echo >>date
+ echo >>date.new
else
- printf "%s\n" "$FALLBACKDATE" >date
+ printf "%s\n" "$FALLBACKDATE" >date.new
+fi
+
+if [ -f date ]; then
+ if diff date date.new >/dev/null; then
+ rm date.new
+ else
+ mv date.new date
+ fi
+else
+ mv date.new date
fi
diff --git a/lib/makeversion b/lib/makeversion
@@ -8,11 +8,21 @@ user=$(unalias ls >/dev/null 2>&1 || true; \
e_user=$(id -un)
if [ -d .git ] && command -v git >/dev/null 2>&1; then
if [ "$e_user" = "$user" ]; then
- git describe 2>/dev/null | sed 's/^v//' >version
+ git describe 2>/dev/null | sed 's/^v//' >version.new
else
su "${user}" -c 'git describe' 2>/dev/null |
- sed 's/^v//' >version
+ sed 's/^v//' >version.new
fi
else
- printf "%s\n" "$FALLBACKVER" >version
+ printf "%s\n" "$FALLBACKVER" >version.new
+fi
+
+if [ -f version ]; then
+ if diff version version.new >/dev/null; then
+ rm version.new
+ else
+ mv version.new version
+ fi
+else
+ mv version.new version
fi
diff --git a/lib/replacepat b/lib/replacepat
@@ -2,4 +2,4 @@
# vim: set ft=bash:
DATE=$(cat date)
VERSION=$(cat version)
-sed -e 's|%VERSION%|'"$VERSION"'|g' -e 's|%DATE%|'"$DATE"'|g' $1
+sed -e 's|%VERSION%|'"$VERSION"'|g' -e 's|%DATE%|'"$DATE"'|g' "$1" > "$2"