@@ -15,8 +15,8 @@ CLEANFILES := *.tmp
1515CLEANDIRS :=
1616Q := $(if $(findstring 1, $(V ) ) ,, @)
1717QGEN = @echo ' GEN ' $@
18- INSTALL := install -c
19- RM := rm -f
18+ QSKIP := $( if $( findstring s, $( MAKEFLAGS ) ) ,: )
19+ QECHO = @QECHO() { Q1="$$1"; shift; QR=" $$* "; QOUT= $$( printf ' %-8s ' "$$Q1" ; echo "$$QR" ) && $( QSKIP ) echo "$$QOUT"; }; QECHO
2020
2121# == Compare Versions ==
2222# Shell command that is true if $1 <= $2 in version comparisons
@@ -54,24 +54,6 @@ man/markdown-flavour := -f markdown+hard_line_breaks+autolink_bare_uris+emoji+li
5454CLEANFILES += doc/jj-fzf.1 doc/*.tmp*
5555all : doc/jj-fzf.1
5656
57- # == install & uninstall ==
58- install : all
59- $(QGEN )
60- mkdir -p $(DESTDIR )$(PRJDIR ) /doc $(DESTDIR )$(BINDIR ) $(DESTDIR )$(MANDIR ) /man1
61- install -c version.sh jj-fzf $(DESTDIR )$(PRJDIR )
62- @ # Note, .gitattributes:export-subst + git archive + tar are used to hardcode version in $(PRJDIR)/version.sh
63- test ! -e .gitattributes || git archive HEAD version.sh | tar xC $(DESTDIR )$(PRJDIR )
64- install -c doc/jj-fzf.1 $(DESTDIR )$(PRJDIR ) /doc
65- ln -sf ../../../$(LIBEXEC ) /doc/jj-fzf.1 $(DESTDIR )$(MANDIR ) /man1/
66- ln -sf ../$(LIBEXEC ) /jj-fzf $(DESTDIR )$(BINDIR ) /jj-fzf
67- installcheck :
68- $(QGEN )
69- $Q $(DESTDIR )$(BINDIR ) /jj-fzf --version > /dev/null || { echo " $@ : ERROR: failed to start $( BINDIR) /jj-fzf" >&2 ; false ; }
70- $Q man $(DESTDIR )$(PRJDIR ) /doc/jj-fzf.1 | grep -qF jj-fzf || { echo " $@ : ERROR: failed to render $( DESTDIR) $( PRJDIR) /doc/jj-fzf.1" >&2 ; false ; }
71- uninstall :
72- $(QGEN )
73- rm -r -f $(DESTDIR )$(PRJDIR ) $(DESTDIR )$(BINDIR ) /jj-fzf $(DESTDIR )$(MANDIR ) /man1/jj-fzf.1
74-
7557# == tests ==
7658tests-basics.sh :
7759 $Q tests/basics.sh
@@ -96,6 +78,51 @@ check-help:
9678 $Q ./jj-fzf --help | grep -qF jj-fzf || { echo " $@ : ERROR: failed to render \` ./jj-fzf --help\` " >&2 ; false ; }
9779check : check-deps check-gsed check-help shellcheck-error tests-basics.sh
9880
81+ # == install & uninstall ==
82+ install : all
83+ $(QGEN )
84+ mkdir -p $(DESTDIR )$(PRJDIR ) /doc $(DESTDIR )$(BINDIR ) $(DESTDIR )$(MANDIR ) /man1
85+ install -c version.sh jj-fzf $(DESTDIR )$(PRJDIR )
86+ @ # Note, .gitattributes:export-subst + git archive + tar are used to hardcode version in $(PRJDIR)/version.sh
87+ test ! -e .gitattributes || git archive HEAD version.sh | tar xC $(DESTDIR )$(PRJDIR )
88+ install -c doc/jj-fzf.1 $(DESTDIR )$(PRJDIR ) /doc
89+ ln -sf ../../../$(LIBEXEC ) /doc/jj-fzf.1 $(DESTDIR )$(MANDIR ) /man1/
90+ ln -sf ../$(LIBEXEC ) /jj-fzf $(DESTDIR )$(BINDIR ) /jj-fzf
91+ installcheck :
92+ $(QGEN )
93+ $Q $(DESTDIR )$(BINDIR ) /jj-fzf --version > /dev/null || { echo " $@ : ERROR: failed to start $( BINDIR) /jj-fzf" >&2 ; false ; }
94+ $Q man $(DESTDIR )$(PRJDIR ) /doc/jj-fzf.1 | grep -qF jj-fzf || { echo " $@ : ERROR: failed to render $( DESTDIR) $( PRJDIR) /doc/jj-fzf.1" >&2 ; false ; }
95+ uninstall :
96+ $(QGEN )
97+ rm -r -f $(DESTDIR )$(PRJDIR ) $(DESTDIR )$(BINDIR ) /jj-fzf $(DESTDIR )$(MANDIR ) /man1/jj-fzf.1
98+
99+ # == distcheck ==
100+ distcheck :
101+ @$(eval distversion != git describe --match='v[0-9]* .[0-9]* .[0-9]* ' | sed 's/^v//')
102+ @$(eval distname := jj-fzf-$(distversion ) )
103+ $(QECHO ) MAKE $(distname ) .tar.zst
104+ $Q test -n " $( distversion) " || { echo -e " #\n# $@ : ERROR: no dist version, is git working?\n#" >&2 ; false ; }
105+ $Q git describe --dirty | grep -qve -dirty || echo -e " #\n# $@ : WARNING: working tree is dirty\n#"
106+ $Q rm -r -f artifacts/ && mkdir -p artifacts/
107+ $Q # Generate ChangeLog with ^^-prefixed records. Tab-indent commit bodies, kill whitespaces and multi-newlines
108+ $Q git log --abbrev=13 --date=short --first-parent HEAD \
109+ --pretty=' ^^%ad %an # %h%n%n%B%n' > artifacts/ChangeLog \
110+ && sed ' s/^/ /; s/^ ^^// ; s/[[:space:]]\+$$// ' -i artifacts/ChangeLog \
111+ && sed ' /^\s*$$/{ N; /^\s*\n\s*$$/D }' -i artifacts/ChangeLog
112+ $Q # Generate and compress artifacts/jj-fzf-*.tar.zst
113+ $Q git archive --prefix=$(distname ) / --add-file artifacts/ChangeLog -o artifacts/$(distname ) .tar HEAD
114+ $Q rm -f artifacts/$(distname ) .tar.zst && zstd --ultra -22 --rm artifacts/$(distname ) .tar && ls -lh artifacts/$(distname ) .tar.zst
115+ $Q T=` mktemp -d` && cd $$ T && tar xf $(abspath artifacts/$(distname ) .tar.zst) \
116+ && cd jj-fzf-$(distversion ) \
117+ && nice make all -j` nproc` \
118+ && make PREFIX=$$ T/inst install \
119+ && make PREFIX=$$ T/inst installcheck -j` nproc` \
120+ && (set -x && $$ T/inst/bin/jj-fzf --version) \
121+ && make PREFIX=$$ T/inst uninstall \
122+ && (set -x && $$ PWD/jj-fzf --version) \
123+ && cd / && rm -r " $$ T"
124+ $Q echo " Archive ready: artifacts/$( distname) .tar.zst" | sed ' 1h; 1s/./=/g; 1p; 1x; $$p; $$x'
125+
99126# == clean ==
100127clean :
101128 rm -f $(CLEANFILES )
0 commit comments