libtool/Makefile.maint
Gary V. Vaughan 35bd5f3176 Enable release procedure to work with lzma OLDRELEASE file.
* Makefile.maint (diffs, prev-tarball, new-tarball): If lzma
tarballs are present use them to generate the diffs, otherwise
use gz tarballs if they are present, or else complain if both
are missing.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
2008-09-07 16:17:37 +08:00

229 lines
7.7 KiB
Makefile

## Makefile.maint -- Makefile rules for libtool maintainers -*-Makefile-*-
##
## Copyright (C) 2004, 2005 Free Software Foundation, Inc.
## Written by Scott James Remnant, 2004
##
## This file is part of GNU Libtool.
##
## GNU Libtool is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## GNU Libtool is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with GNU Libtool; see the file COPYING. If not, a copy
## can be downloaded from http://www.gnu.org/licenses/gpl.html,
## or obtained by writing to the Free ## Software Foundation, Inc.,
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#####
# Need various variables defined by configure, a lot easier to just
# include the Makefile than figure out a way to put them in here too
include Makefile
Makefile:
@echo " *** Run maintainer rules from the build tree, with"
@echo " *** \`make -f../Makefile.maint' for example, where"
@echo " *** \`../' is the relative path back to the directory"
@echo " *** that contains the \`Makefile.maint'. Alternatively,"
@echo " *** run \`./configure' in the source tree for an in"
@echo " *** tree build."
@exit 1
TEXI2HTML = texi2html
$(srcdir)/commit: $(srcdir)/$(auxdir)/mailnotify clcommit.m4sh
$(timestamp); \
cd $(srcdir); \
rm -f commit commit.in commit.tmp; \
$(M4SH) -B $(auxdir) clcommit.m4sh > commit.in; \
input="clcommit.m4sh"; \
$(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" commit.in > commit.tmp; \
chmod a+x commit.tmp; \
chmod a-w commit.tmp; \
mv -f commit.tmp commit; \
rm -f commit.in
$(srcdir)/$(auxdir)/mailnotify: $(auxdir)/mailnotify.m4sh
$(timestamp); \
cd $(srcdir)/$(auxdir); \
rm -f mailnotify mailnotify.in mailnotify.tmp; \
$(M4SH) -B . mailnotify.m4sh > mailnotify.in; \
input="mailnotify.m4sh"; \
$(edit) -e "s,@TIMESTAMP\@,$$TIMESTAMP,g" \
mailnotify.in > mailnotify.tmp; \
chmod a+x mailnotify.tmp; \
chmod a-w mailnotify.tmp; \
mv -f mailnotify.tmp mailnotify; \
rm -f mailnotify.in
.PHONY: git-release
git-release: version-check prev-tarball check-news fetch git-commit git-dist diffs web-manual
@tarname="$(PACKAGE)-$(VERSION).tar.gz"; \
lzmaname="$(PACKAGE)-$(VERSION).tar.lzma"; \
diffname="$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \
echo " *** Upload $$tarname, $$tarname.sig,";\
echo " *** $$tarname.directive.asc, $$lzmaname,";\
echo " *** $$lzmaname.sig, $$lzmaname.directive.asc,";\
echo " *** $$diffname, $$diffname.sig";\
echo " *** and $$diffname.directive.asc to either"; \
echo " *** /incoming/alpha or /incoming/ftp on ftp-upload.gnu.org."
echo " *** You might need to upload manual.html to webcvs/libtool."
.PHONY: version-check
version-check:
@case $(VERSION) in \
*[acegikmoqsuwy]) \
echo "Version \`$(VERSION)' is not a releasable version, please read:"; \
echo " http://www.gnu.org/software/libtool/contribute.html"; \
exit 1; \
;; \
esac
GIT = git # set it to `:' to avoid git write operations
.PHONY: check-commit
check-commit:
@if (cd $(srcdir) && test -d .git && \
$(GIT) status | grep 'modified:'); then \
echo "Cannot make git-dist before commit"; exit 1; else :; fi
.PHONY: check-news
check-news:
## Make sure the NEWS file is up-to-date:
@if sed '1,2d;3q' $(srcdir)/NEWS | grep -e "$(VERSION)" >/dev/null; \
then :; \
else \
echo "NEWS not updated; not releasing" 1>&2; \
exit 1; \
fi
## Program to use to fetch files.
WGET = wget
WGETSGO = $(WGET) 'http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~'
WGET_GIT = $(WGET) 'http://git.savannah.gnu.org/gitweb/?a=blob_plain;hb=HEAD;p='
## Files that we fetch and which we compare against.
## FIXME should be a lot more here
FETCHFILES = \
./INSTALL \
$(auxdir)/install-sh \
$(auxdir)/config.guess \
$(auxdir)/config.sub \
$(auxdir)/texinfo.tex
## Fetch the latest versions of files we care about.
.PHONY: fetch
fetch:
rm -rf Fetchdir > /dev/null 2>&1
mkdir Fetchdir
## If a get fails then that is a problem.
(cd Fetchdir && \
$(WGET_GIT)'gnulib.git;f=doc/INSTALL' -O INSTALL && \
$(WGET_GIT)'automake.git;f=lib/install-sh' -O install-sh && \
$(WGETSGO)/config/config/config.guess -O config.guess && \
$(WGETSGO)/config/config/config.sub -O config.sub && \
$(WGETSGO)/texinfo/texinfo/doc/texinfo.tex -O texinfo.tex )
## Don't exit after test because we want to give as many errors as
## possible.
@stat=0; for file in $(FETCHFILES); do \
fetchedfile=Fetchdir/`echo $$file | sed 's,.*/,,g'`; \
if diff -u $(srcdir)/$$file $$fetchedfile \
>>Fetchdir/update.patch 2>/dev/null; then :; \
else \
stat=1; \
echo "Updating $(srcdir)/$$file..."; \
cp $$fetchedfile $(srcdir)/$$file; \
fi; \
done; \
test $$stat = 1 && \
echo "See Fetchdir/update.patch for a log of the changes."; \
exit $$stat
GPG = gpg # set it to `:' to avoid gpg operations
.PHONY: git-commit
git-commit: check-news
cd $(srcdir) && $(SHELL) ./commit
.PHONY: git-dist
git-dist: check-news check-commit
## Build the distribution:
$(MAKE) distcheck
## Finally, if everything was successful, tag the release
cd $(srcdir) \
&& $(GIT) tag -s "v$(VERSION)"
## Generate signatures and directives for FSF ftp-upload:
for suffix in gz lzma; do \
ofile="$(PACKAGE)-$(VERSION).tar.$$suffix"; \
$(GPG) --detach-sign $$ofile \
&& echo "directory: libtool" > $$ofile.directive \
&& $(GPG) --clearsign $$ofile.directive \
&& rm -f $$ofile.directive; \
done
.PHONY: prev-tarball
prev-tarball:
## Make sure we have the previous release tarball in the tree.
@if test -z "$(LASTRELEASE)"; \
then echo "LASTRELEASE is not set"; exit 1; fi
@ofile="$(PACKAGE)-$(LASTRELEASE).tar.gz"; \
if test -f $$ofile; then :; \
else ofile="$(PACKAGE)-$(LASTRELEASE).tar.lzma"; \
if test -f $$ofile; then :; \
else echo "Cannot make diffs without $$ofile"; exit 1; fi; fi
.PHONY: new-tarball
new-tarball:
## Make sure we have the new release tarball in the tree.
@ofile="$(PACKAGE)-$(VERSION).tar.gz"; \
if test -f $$ofile; then :; \
else ofile="$(PACKAGE)-$(VERSION).tar.lzma"; \
if test -f $$ofile; then :; \
else echo "Cannot make diffs without $$ofile"; exit 1; fi; fi
DIFF = diff
DIFF_OPTIONS = -ruNp
.PHONY: diffs
diffs: prev-tarball new-tarball
## Unpack the tarballs somewhere to diff them
rm -rf delta-diff
mkdir delta-diff
cd delta-diff; \
ofile="../$(PACKAGE)-$(LASTRELEASE)-$(VERSION).diff.gz"; \
otar="../$(PACKAGE)-$(LASTRELEASE).tar"; \
ntar="../$(PACKAGE)-$(VERSION).tar"; \
test -f "$$otar.gz" && otar="$$otar.gz" && ounpack="gzip"; \
test -f "$$ntar.gz" && ntar="$$ntar.gz" && nunpack="gzip"; \
test -f "$$otar.lzma" && otar="$$otar.lzma" && ounpack="lzma"; \
test -f "$$ntar.lzma" && ntar="$$ntar.lzma" && nunpack="zlma"; \
$$ounpack -c -d "$$otar" | tar xf - \
&& $$nunpack -c -d "$$ntar" | tar xf - \
&& $(DIFF) $(DIFF_OPTIONS) \
$(PACKAGE)-$(LASTRELEASE) $(PACKAGE)-$(VERSION) \
| GZIP=$(GZIP_ENV) gzip -c > $$ofile \
&& $(GPG) --detach-sign $$ofile \
&& echo "directory: libtool" > $$ofile.directive \
&& $(GPG) --clearsign $$ofile.directive \
&& rm -f $$ofile.directive
rm -rf delta-diff
.PHONY: web-manual
web-manual:
cd $(srcdir)/doc; \
rm -f gendocs.sh* gendocs_template*; \
test -d manual && rm -rf manual; \
$(WGETSGO)'/texinfo/texinfo/util/gendocs.sh' && \
$(WGETSGO)'/texinfo/texinfo/util/gendocs_template' && \
chmod 755 gendocs.sh && \
./gendocs.sh libtool "GNU Libtool Manual"