chiark / gitweb /
git-debpush: check for target suite change since last upload
[dgit.git] / Makefile
1 # dgit
2 # Integration between git and Debian-style archives
3 #
4 # Copyright (C)2013-2016 Ian Jackson
5 #
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19 INSTALL=install
20 INSTALL_DIR=$(INSTALL) -d
21 INSTALL_PROGRAM=$(INSTALL) -m 755
22 INSTALL_DATA=$(INSTALL) -m 644
23
24 prefix?=/usr/local
25
26 bindir=$(prefix)/bin
27 mandir=$(prefix)/share/man
28 perldir=$(prefix)/share/perl5
29 man1dir=$(mandir)/man1
30 man5dir=$(mandir)/man5
31 man7dir=$(mandir)/man7
32 infraexamplesdir=$(prefix)/share/doc/dgit-infrastructure/examples
33 txtdocdir=$(prefix)/share/doc/dgit
34 absurddir=$(prefix)/share/dgit/absurd
35
36 PROGRAMS=dgit dgit-badcommit-fixup
37 MAN1PAGES=dgit.1
38
39 MAN7PAGES=dgit.7                                \
40         dgit-user.7 dgit-nmu-simple.7           \
41         dgit-maint-native.7                     \
42         dgit-maint-merge.7 dgit-maint-gbp.7     \
43         dgit-maint-debrebase.7                  \
44         dgit-downstream-dsc.7                   \
45         dgit-sponsorship.7
46
47 TXTDOCS=README.dsc-import
48 PERLMODULES= \
49         Debian/Dgit.pm \
50         Debian/Dgit/ExitStatus.pm \
51         Debian/Dgit/I18n.pm
52 ABSURDITIES=git
53
54 GDR_PROGRAMS=git-debrebase
55 GDR_PERLMODULES= \
56         Debian/Dgit.pm \
57         Debian/Dgit/GDR.pm \
58         Debian/Dgit/ExitStatus.pm \
59         Debian/Dgit/I18n.pm
60 GDR_MAN1PAGES=git-debrebase.1
61 GDR_MAN5PAGES=git-debrebase.5
62
63 GDP_PROGRAMS=git-debpush
64 GDP_MAN1PAGES=git-debpush.1
65
66 INFRA_PROGRAMS=dgit-repos-server dgit-ssh-dispatch \
67         dgit-repos-policy-debian dgit-repos-admin-debian \
68         dgit-repos-policy-trusting dgit-mirror-rsync
69 INFRA_EXAMPLES=get-dm-txt ssh-wrap drs-cron-wrap get-suites
70 INFRA_PERLMODULES= \
71         Debian/Dgit.pm \
72         Debian/Dgit/Infra.pm \
73         Debian/Dgit/Policy/Debian.pm
74
75 MANPAGES=$(MAN1PAGES) $(MAN5PAGES) $(MAN7PAGES) \
76         $(GDR_MAN1PAGES) $(GDR_MAN5PAGES) \
77         $(GDP_MAN1PAGES)
78
79 all:    $(MANPAGES) $(addprefix substituted/,$(PROGRAMS))
80
81 substituted/%:  %
82         mkdir -p substituted
83         perl -pe 's{\bundef\b}{'\''$(absurddir)'\''} if m/###substituted###/' \
84                 <$< >$@
85
86 install:        installdirs all
87         $(INSTALL_PROGRAM) $(addprefix substituted/,$(PROGRAMS)) \
88                 $(DESTDIR)$(bindir)
89         $(INSTALL_PROGRAM) $(addprefix absurd/,$(ABSURDITIES)) \
90                 $(DESTDIR)$(absurddir)
91         $(INSTALL_DATA) $(MAN1PAGES) $(DESTDIR)$(man1dir)
92         $(INSTALL_DATA) $(MAN7PAGES) $(DESTDIR)$(man7dir)
93         $(INSTALL_DATA) $(TXTDOCS) $(DESTDIR)$(txtdocdir)
94         set -e; for m in $(PERLMODULES); do \
95                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
96         done
97
98 installdirs:
99         $(INSTALL_DIR) $(DESTDIR)$(bindir) \
100                 $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
101                 $(DESTDIR)$(man7dir) \
102                 $(DESTDIR)$(txtdocdir) $(DESTDIR)$(absurddir) \
103                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(PERLMODULES)))
104
105 install-gdp:    installdirs-gdp
106         $(INSTALL_PROGRAM) $(GDP_PROGRAMS) $(DESTDIR)$(bindir)
107         $(INSTALL_DATA) $(GDP_MAN1PAGES) $(DESTDIR)$(man1dir)
108
109 install-gdr:    installdirs-gdr
110         $(INSTALL_PROGRAM) $(GDR_PROGRAMS) $(DESTDIR)$(bindir)
111         $(INSTALL_DATA) $(GDR_MAN1PAGES) $(DESTDIR)$(man1dir)
112         $(INSTALL_DATA) $(GDR_MAN5PAGES) $(DESTDIR)$(man5dir)
113         set -e; for m in $(GDR_PERLMODULES); do \
114                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
115         done
116
117 install-infra:  installdirs-infra
118         $(INSTALL_PROGRAM) $(addprefix infra/, $(INFRA_PROGRAMS)) \
119                 $(DESTDIR)$(bindir)
120         $(INSTALL_PROGRAM) $(addprefix infra/, $(INFRA_EXAMPLES)) \
121                 $(DESTDIR)$(infraexamplesdir)
122         set -e; for m in $(INFRA_PERLMODULES); do \
123                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
124         done
125
126 installdirs-gdp:
127         $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir)
128
129 installdirs-gdr:
130         $(INSTALL_DIR) $(DESTDIR)$(bindir) \
131                 $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
132                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(GDR_PERLMODULES)))
133
134 installdirs-infra:
135         $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(infraexamplesdir) \
136                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(INFRA_PERLMODULES)))
137
138 list-manpages:
139         @echo $(MANPAGES)
140
141 i18n i18n-update:
142         $(MAKE) -C po update
143         $(MAKE) -C po4a update
144
145 i18n-commit:
146         set -e; x=$$(git status --porcelain); set -x; test "x$$x" = x
147         $(MAKE) i18n-update
148         git commit -a -m 'i18n-commit - autogenerated'
149
150 check installcheck:
151
152 clean distclean mostlyclean maintainer-clean:
153         rm -rf tests/tmp substituted
154         set -e; for m in $(MANPAGES); do \
155                 test -e $$m.pod && rm -f $$m; \
156         done
157
158 dgit%: dgit%.pod
159         m=$@; pod2man --section=$${m##*.} --date="Debian Project" \
160                 --center="dgit" --name=$${m%.*} \
161                 $^ $@
162
163 git-debrebase.%: git-debrebase.%.pod
164         pod2man --section=$* --date="Debian Project" --center="git-debrebase" \
165                 --name=$(subst .$*,,$@) \
166                 $^ $@
167
168 git-debpush.1: git-debpush.1.pod
169         pod2man --section=1 --date="Debian Project" --center="git-debpush" \
170                 --name git-debpush \
171                 $^ $@
172
173 %.view: %
174         man -l $*