1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
# Copyright (C) 2013-2021 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
all::
RSYNC = rsync
RSYNC_DEST = public-inbox.org:/srv/public-inbox/
AWK = awk
MAN = man
LEXGROG = lexgrog
# this is "xml" on FreeBSD and maybe some other distros:
XMLSTARLET = xmlstarlet
# libgraph-easy-perl from Debian, Graph::Easy from CPAN
GRAPH_EASY = graph-easy
INSTALL = install
PODMAN = pod2man
PODMAN_OPTS = -v --stderr -d 1993-10-02 -c 'public-inbox user manual'
PODMAN_OPTS += -r public-inbox.git
podman = $(PODMAN) $(PODMAN_OPTS)
man2text = COLUMNS=80 MANWIDTH=80 TERM=dumb MANOPT='--nj --nh' man
all:: man
manpages = $(man1) $(man5) $(man7) $(man8)
man: $(manpages)
prefix ?= $(PREFIX)
prefix ?= $(HOME)
mandir ?= $(INSTALLMAN1DIR)/..
man5dir = $(mandir)/man5
man7dir = $(mandir)/man7
man8dir = $(mandir)/man8
install-man: man
$(INSTALL) -d -m 755 $(DESTDIR)$(INSTALLMAN1DIR)
$(INSTALL) -d -m 755 $(DESTDIR)$(man5dir)
$(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)
$(INSTALL) -d -m 755 $(DESTDIR)$(man8dir)
$(INSTALL) -m 644 $(man1) $(DESTDIR)$(INSTALLMAN1DIR)
$(INSTALL) -m 644 $(man5) $(DESTDIR)$(man5dir)
$(INSTALL) -m 644 $(man7) $(DESTDIR)$(man7dir)
$(INSTALL) -m 644 $(man8) $(DESTDIR)$(man8dir)
doc_install :: install-man
check :: check-man
check_man = $(AWK) \
'{gsub(/\b./,"")}$$0 !~ /\.onion/&&length>80{print;e=1}END{exit(e)}' \
>&2
check-man :: $(check_80)
check-lexgrog :: $(check_lexgrog)
all :: $(docs)
txt2pre = $(PERL) -I lib ./Documentation/txt2pre >$@
Documentation/standards.txt : Documentation/standards.perl
$(PERL) -w Documentation/standards.perl >$@+
touch -r Documentation/standards.perl $@+
mv $@+ $@
# flow.txt is checked into git since Graph::Easy isn't in many distros
Documentation/flow.txt : Documentation/flow.ge
(sed -ne '1,/^$$/p' <Documentation/flow.ge; \
$(GRAPH_EASY) Documentation/flow.ge || \
cat Documentation/flow.txt; \
echo; \
sed -ne '/^# Copyright/,$$p' <Documentation/flow.ge \
) >$@+
touch -r Documentation/flow.ge $@+
mv $@+ $@
Documentation/lei-q.pod : lib/PublicInbox/Search.pm Documentation/common.perl
$(PERL) -I lib -w Documentation/common.perl $@
NEWS NEWS.atom NEWS.html : $(news_deps)
$(PERL) -I lib -w Documentation/mknews.perl $@ $(RELEASES)
# check for internal API changes:
check :: NEWS .NEWS.atom.check NEWS.html
.NEWS.atom.check: NEWS.atom
$(XMLSTARLET) val NEWS.atom || \
{ e=$$?; test $$e -eq 0 || test $$e -eq 127; }
>$@
html: $(docs_html)
doc: $(docs)
%.gz: %
gzip -9 --rsyncable <$< >$@+
touch -r $< $@+
mv $@+ $@
gz-doc: $(gz_docs)
rsync-doc: NEWS.atom.gz
# /usr/share/doc/rsync/scripts/git-set-file-times{.gz} on Debian systems
# It is also at: https://yhbt.net/git-set-file-times
-git set-file-times $(docs) $(txt)
$(MAKE) gz-doc
$(RSYNC) --chmod=Fugo=r -av $(rsync_docs) $(RSYNC_DEST)
clean-doc:
$(RM_F) $(man1) $(man5) $(man7) $(man8) $(gz_docs) $(docs_html) \
$(mantxt) \
NEWS NEWS.atom NEWS.html Documentation/standards.txt \
Documentation/flow.html Documentation/flow.html.gz \
Documentation/flow.txt.gz
clean :: clean-doc
# No camel-cased tarballs or pathnames which MakeMaker creates,
# this may not always be a Perl project. This should match what
# cgit generate, since git maintainers ensure git-archive has
# stable tar output
DIST_TREE = HEAD^{tree}
DIST_VER =
git-dist :
ver=$$(git describe $(DIST_VER) | sed -ne s/v//p); \
pkgpfx=public-inbox-$$ver; \
git archive --prefix=$$pkgpfx/ --format=tar $(DIST_TREE) \
| gzip -n >$$pkgpfx.tar.gz; \
echo $$pkgpfx.tar.gz created
|