12 # # # # # # # # # # Release variables (for maintainer only):
14 # Files removed from `cvs export' output before creating the tar-ball:
15 CVS_IGNORE_FILES
= .cvsignore contrib
/.cvsignore etc
/.cvsignore \
16 lisp
/.cvsignore texi
/.cvsignore texi
/ps
/.cvsignore .arch-inventory
17 # Name and mail address in ChangeLog format for the release commit:
18 COMMITTER
= Lars Magne Ingebrigtsen
<lars@ingebrigtsen.no
>
19 # CODENAME for development releases (CODENAME must have a trailing space,
22 # Codename initial (lower case), e.g. 'n' for "No Gnus".
24 # Files with hard-coded versions numbers:
25 RELEASE_COMMIT_FILES
= ChangeLog README \
26 lisp
/ChangeLog lisp
/gnus.el \
27 texi
/ChangeLog texi
/gnus.texi texi
/message.texi texi
/gnus-faq.texi
28 # Pattern matching previous version(s):
29 OLD_PATTERN
= \
(5.10.
[0-9]*\|
0\.
[1-9][0-9]*\
)
30 # CVS tag of the previous version:
32 # CVS tag of the current release:
36 # - release-bump-version
38 # - release-files or release-files-signed
40 # # # # # # # # # # End of release variables
45 cd lisp
&& $(MAKE
) EMACS
="$(EMACS)" lispdir
="$(lispdir)" all
48 cd lisp
&& $(MAKE
) EMACS
="$(EMACS)" lispdir
="$(lispdir)" install
49 cd texi
&& $(MAKE
) EMACS
="$(EMACS)" install
50 cd etc
&& $(MAKE
) EMACS
="$(EMACS)" install
52 list-installed-shadows
:
53 cd lisp
&& $(MAKE
) EMACS
="$(EMACS)" lispdir
="$(lispdir)" list-installed-shadows
55 remove-installed-shadows
:
56 cd lisp
&& $(MAKE
) EMACS
="$(EMACS)" lispdir
="$(lispdir)" remove-installed-shadows
59 cd lisp
&& $(MAKE
) lispdir
="$(lispdir)" uninstall
60 cd texi
&& $(MAKE
) uninstall
61 cd etc
&& $(MAKE
) uninstall
63 GNUS-NEWS
: texi
/gnus-news.texi
64 cd texi
&& $(MAKE
) GNUS-NEWS
66 # Rule for Lars and nobody else.
68 cd lisp
&& $(MAKE
) EMACS
="$(EMACS)" some
70 cd lisp
&& $(MAKE
) EMACS
="$(EMACS)" clever
73 cd texi
&& $(MAKE
) EMACS
="$(EMACS)" all
76 for i in lisp texi etc texi
/ps
; do
(cd
$$i; $(MAKE
) clean); done
80 cd lisp
&& rm -f
*.elc auto-autoloads.el custom-load.el gnus-load.el
83 $(MAKE
) EMACS
=$(XEMACS
)
86 $(MAKE
) EMACS
="$(XEMACS)" some
89 for i in lisp texi etc texi
/ps
; do
(cd
$$i; $(MAKE
) distclean); done
90 rm -f config.log config.status config.cache Makefile
92 config.status
: $(srcdir)/configure
93 $(SHELL
) .
/config.status
--recheck
94 $(srcdir)/configure
: $(srcdir)/configure.in
95 cd
$(srcdir) && autoconf
96 Makefile
: $(srcdir)/Makefile.in config.status
97 CONFIG_FILES
=$@ CONFIG_HEADERS
= $(SHELL
) .
/config.status
99 # # # # # # # # # # Release targets (for maintainer only):
101 release-check-settings
:
103 @echo
"COMMITTER = '$(COMMITTER)'"
104 @echo
" (example: 'Foo Bar <foo.bar@somewhere.invalid>')"
105 @echo
"VERSION = '$(VERSION)' (example: '5.10.6')"
106 @echo
"CODENAME = '$(CODENAME)' (example: 'No ')"
107 @echo
"CIN = '$(CIN)' (example: 'n', codename initial)"
108 @echo
"TAG = '$(TAG)' (example: 'v5-10-6')"
109 @echo
"OLD_TAG = '$(OLD_TAG)' (example: 'v5-10-5')"
111 @if
[ x
"$(VERSION)" = x
]; then echo
"error: No VERSION given."; exit
1; else :; fi
112 @if
[ x
"$(TAG)" = x
]; then echo
"error: No TAG given."; exit
1; else :; fi
114 @echo Settings checked successfully.
116 @echo You may now make...
117 @echo release-bump-version
119 @echo release-files or release-files-signed
121 # Needs GNU grep and a recent GNU sed:
122 release-bump-version
: release-check-settings
123 sed
-i
-e
'/^(defconst gnus-version-number /s,"$(OLD_PATTERN)","$(VERSION)",' lisp
/gnus.el
124 sed
-i
-e
'/^.newcommand{.gnusversionname}{[A-Za-z ]*Gnus v/s,$(OLD_PATTERN),$(VERSION),' texi
/gnus.texi
125 sed
-i
-e
'/^This manual corresponds to [A-Za-z ]*Gnus v/s,$(OLD_PATTERN),$(VERSION),' texi
/gnus.texi
126 sed
-i
-e
'/^corresponding to this manual is [A-Za-z ]*Gnus v/s,$(OLD_PATTERN),$(VERSION),' texi
/message.texi
127 sed
-i
-e
's,/[a-z]*gnus-[0-9.]*/,/$(CIN)gnus-$(VERSION)/,' README
128 if
[ "x$(CODENAME)" = "x" ]; then \
129 sed
-i
-e
'/The current release ($(OLD_PATTERN)) should/s,$(OLD_PATTERN),$(VERSION),' texi
/gnus-faq.texi
; \
133 @if grep
-q
"$(CODENAME)Gnus v$(VERSION) is released" ChangeLog
; then \
134 echo
"ChangeLog is already updated"; \
136 sed
-i
-e
"1s|^|`date -I` $(COMMITTER)\n\n\t* README: $(CODENAME)Gnus v$(VERSION) is released.\n\n|" ChangeLog
; \
138 @if grep
-q
"$(CODENAME)Gnus v$(VERSION) is released" texi
/ChangeLog
; then \
139 echo
"texi/ChangeLog is already updated"; \
141 sed
-i
-e
"1s|^|`date -I` $(COMMITTER)\n\n\t* gnus.texi, gnus-faq.texi, message.texi: $(CODENAME)Gnus v$(VERSION) is released.\n\n|" texi
/ChangeLog
; \
143 @if grep
-q
"$(CODENAME)Gnus v$(VERSION) is released" lisp
/ChangeLog
; then \
144 echo
"lisp/ChangeLog is already updated"; \
146 sed
-i
-e
"1s|^|`date -I` $(COMMITTER)\n\n\t* gnus.el: $(CODENAME)Gnus v$(VERSION) is released.\n\n|" lisp
/ChangeLog
; \
148 cvs diff
-U0
$(RELEASE_COMMIT_FILES
); sleep
2
150 release-revert-files
:
151 rm -i
$(RELEASE_COMMIT_FILES
)
152 cvs update
$(RELEASE_COMMIT_FILES
)
154 release-commit
: release-check-settings
157 @echo
"Really do the release-commit for $(CODENAME)Gnus v$(VERSION)?"
158 @echo
"Command line:"
159 @echo
" " cvs commit
-m
"$(CODENAME)Gnus v$(VERSION) is released." $(RELEASE_COMMIT_FILES
)
161 @echo
"Hit RET to continue or Ctrl-C to abort."
164 cvs commit
-m
"$(CODENAME)Gnus v$(VERSION) is released." $(RELEASE_COMMIT_FILES
)
166 @echo
"Add tag $(TAG) to CVS?"
167 @echo
"Command line:"
168 @echo
" " cvs tag
$(TAG
)
169 @echo
"Hit RET to continue or Ctrl-C to abort."
174 release-files
: release-make-tar-ball release-diff
175 @echo
"Release files have been created:"
176 @ls
-l
$(CIN
)gnus-
$(VERSION
).
tar.gz
177 @ls
-l
$(CIN
)gnus-
`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz
179 release-files-signed
: release-files release-sign-files
181 # Sign prepared files:
183 if
[ "x$$GPG_AGENT_INFO" = "x" ]; then \
184 read
-sp
"Enter pass phrase: " phrase
; \
185 gpg_opt
="--passphrase-fd 0"; \
187 gpg_opt
=""; phrase
=""; \
189 for i in
$(CIN
)gnus-
$(VERSION
).
tar.gz \
190 $(CIN
)gnus-
`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz
; do \
192 echo
"$$phrase" | gpg
--detach-sign
$$gpg_opt $$i; \
194 @ls
-l
$(CIN
)gnus-
$(VERSION
).
tar.gz
{.sig
,}
195 @ls
-l
$(CIN
)gnus-
`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz
{.sig
,}
196 @gpg
--verify
$(CIN
)gnus-
$(VERSION
).
tar.gz
{.sig
,}
197 @gpg
--verify
$(CIN
)gnus-
`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz
{.sig
,}
199 release-cvs-export
$(CIN
)gnus-
$(VERSION
): release-check-settings
200 rm -fr
$(CIN
)gnus-
$(VERSION
)
201 cvs
export -d
$(CIN
)gnus-
$(VERSION
) -r
$(TAG
) gnus
203 release-make-tar-ball
: $(CIN
)gnus-
$(VERSION
)
204 [ -d
$(CIN
)gnus-
$(VERSION
) ] && cd
$(CIN
)gnus-
$(VERSION
) && \
205 rm $(CVS_IGNORE_FILES
) || true
206 tar zcvf
$(CIN
)gnus-
$(VERSION
).
tar.gz
$(CIN
)gnus-
$(VERSION
)
207 ls
-l
$(CIN
)gnus-
$(VERSION
).
tar.gz
209 # Make a diff between current and previous release. Example:
210 # ftp://quimby.gnus.org/pub/gnus/ding-patches/gnus-5.10.5-5.10.6.diff.gz
211 release-diff
: release-check-settings
212 cvs diff
-r
$(OLD_TAG
) -r
$(TAG
) | sed
-e
'/^\? /d' > temp.diff || true
213 mv temp.diff
$(CIN
)gnus-
`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff
214 $(GZIP_PROG
) $(CIN
)gnus-
`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff
215 ls
-l
$(CIN
)gnus-
`echo $(OLD_TAG)%$(TAG)|tr - .|tr -d v|tr % -`.diff.gz
217 release-post-clean
: release-check-settings
218 rm -fr
$(CIN
)gnus-
$(TAG
) temp.diff
220 # # # # # # # # # # End of release targets
222 # Tell versions [3.59,3.63) of GNU make to not export all variables.
223 # Otherwise a system limit (for SysV at least) may be exceeded.