lav-sdl

SDL верзија програма Лавиринт
git clone https://git.sr.ht/~strahinja/lav-sdl
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 5a1f535555293fcefe73b7c37faeb04f178edac2
родитељ 0a38938499cd4158078062c3d61c3f74d2e8ff08
Аутор: Страхиња Радић <sr@strahinja.org>
Датум:   Tue,  8 Jul 2025 22:29:47 +0200

Add version support

Diffstat:
MMakefile | 15++++++++++++++-
Alib/makedate | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/makeversion | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/mkpack | 16+++++++++++-----
измењених датотека: 4, додавања: 152(+), брисања: 6(-)

diff --git a/Makefile b/Makefile @@ -7,10 +7,23 @@ include config.mk .h.in.h: sh -c 'DATADIR=$(DATADIR) lib/replacepat $< $@' -all: $(PROG) +all: makedate makeversion $(PROG) + if [ -f .rebuild ]; then rm .rebuild; make -e all; else true; fi local.h: local.h.in +date: + sh lib/makedate + +version: + sh lib/makeversion + +makedate: + sh lib/makedate -l + +makeversion: + sh lib/makeversion -l + lav-sdl.o: lav-sdl.c local.h $(PROG): $(OBJS) $(SRC) $(HEADERS) diff --git a/lib/makedate b/lib/makedate @@ -0,0 +1,61 @@ +#!/bin/sh -x +# vim: set ft=bash: +FALLBACKDATE=${FALLBACKDATE:-unknown} +LC_ALL=C +export LC_ALL + +if [ -d .got ] && command -v got >/dev/null 2>&1; then + got log | + awk ' + /^date: / { + sub(/^date: /,"",$0) + # Convert to proper form for `mandoc -Tlint` + month_names["Jan"] = "January" + month_names["Feb"] = "February" + month_names["Mar"] = "March" + month_names["Apr"] = "April" + month_names["May"] = "May" + month_names["Jun"] = "June" + month_names["Jul"] = "July" + month_names["Aug"] = "August" + month_names["Sep"] = "September" + month_names["Oct"] = "October" + month_names["Nov"] = "November" + month_names["Dec"] = "December" + print month_names[$2] " " $3 ", " $5 + exit + }' >date.new +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \ + command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}') + if [ -z "$user" ]; then + printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2 + exit 1 + fi + e_user=$(id -un) + if [ "$e_user" = "$user" ]; then + git log --format=format:%cd \ + --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.new + fi + echo >>date.new +else + 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 + touch .rebuild + fi +else + mv date.new date + touch .rebuild +fi +if [ "$1" = "-l" ]; then + printf "DATE=\"%s\"\n" "$(cat date)" +fi diff --git a/lib/makeversion b/lib/makeversion @@ -0,0 +1,66 @@ +#!/bin/sh -x +# vim: set ft=bash: +FALLBACKVER=${FALLBACKVER:-unknown} + +if [ -d .got ] && command -v got >/dev/null 2>&1; then + lastcommit=$(got log | + awk '/^commit/ {print substr($2,1,7); exit}') + got tag -l | + awk -v lastcommit="$lastcommit" ' + /^object: commit/ { + if (!lasttagcom) + { + lasttagcom = substr($3,1,7) + } + next + } + /^tag/ { + if (!ver) + { + sub(/^v/,"",$2) + ver = $2 + } + next + } + END { + printf "%s", ver + if (lastcommit != lasttagcom) + { + printf "-g%s", lastcommit + } + printf "\n" + }' >version.new +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + LC_ALL=C + export LC_ALL + user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \ + command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}') + if [ -z "$user" ]; then + printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2 + exit 1 + fi + e_user=$(id -un) + if [ "$e_user" = "$user" ]; then + git describe 2>/dev/null | sed 's/^v//' >version.new + else + su "$user" -c 'git describe' 2>/dev/null | + sed 's/^v//' >version.new + fi +else + 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 + touch .rebuild + fi +else + mv version.new version + touch .rebuild +fi +if [ "$1" = "-l" ]; then + printf "VERSION=\"%s\"\n" "$(cat version)" +fi diff --git a/lib/mkpack b/lib/mkpack @@ -1,11 +1,17 @@ #!/bin/sh -x # vim: set ft=bash: -DISTDIR=$(grep ^PROG config.mk | - sed -E 's,.*=[[:space:]]+([[:alpha:]]+),\1,') -# To be able to create the directory with the same name -rm lav-sdl +DISTDIR=$(grep '^PROG[[:space:]]\{1,\}=' config.mk | + sed -E 's,.*=[[:space:]]+([[:alpha:]]+),\1,')-$(cat version) mkdir "$DISTDIR" -for f in $(git ls-files); do +if [ -d .got ] && command -v got >/dev/null 2>&1; then + files=$(got tree | sed -e 's,[@/*$]$,,g') +elif [ -d .git ] && command -v git >/dev/null 2>&1; then + files=$(git ls-files) +else + printf "Either got or git are required for 'make pack'\n" >&2 + exit 1 +fi +for f in $files; do d="$DISTDIR"/"$(dirname "$f")" mkdir -p "$d" cp "$f" "$d"/