diff options
author | 1998-10-27 12:32:29 +0000 | |
---|---|---|
committer | 1998-10-27 12:32:29 +0000 | |
commit | 675c9b609046fb3f40e96ee68decc2d178375216 (patch) | |
tree | 68a87c2cf666c7b4c12a7eacad676415d4dcf2cc /Makefile.devel | |
parent | 76cd0031a87c4138be51a0bb90bf23b9e4831e10 (diff) |
Fixup repository mess
Diffstat (limited to 'Makefile.devel')
-rw-r--r-- | Makefile.devel | 629 |
1 files changed, 629 insertions, 0 deletions
diff --git a/Makefile.devel b/Makefile.devel new file mode 100644 index 00000000..90c09ec7 --- /dev/null +++ b/Makefile.devel @@ -0,0 +1,629 @@ +## +## Makefile for Proof General development. +## +## Author: David Aspinall <da@dcs.ed.ac.uk> +## +## Maintainer: Proof General maintainer <proofgen@dcs.ed.ac.uk> +## +## Developer use only, not part of distribution. +## +## make clean - remove intermediate files +## make distclean - remove all generated files +## +## make ChangeLog - make ChangeLog from CVS sources (uses emacs) +## make tag - tag the CVS sources with CVS_RELEASENAME +## make untag - remove tag CVS_RELEASENAME from the sources +## make dist - make a distribution from sources with above tag +## make rpm - make RPM packages based on etc/ProofGeneral.spec +## +## make release - make tag, dist, and install it in RELEASEDIR. +## make releaseall - make release and rpmrelease. +## +## make distinstall - install distribution build by 'make dist' +## into DISTINSTALLDIR. +## +## make releaseclean - clean up after 'make dist' 'make rpmrelease'. +## +## $Id$ +## +########################################################################### + + +# TODO: (da) Add target for byte compilation. + +# Release tags. +# NB: 1. CVS tags can't have points in them. +# 2. RPM names can't have hyphens in them +RELEASE_TAG=2.0pre$(shell date "+%y%m%d") +CVS_RELEASE_TAG=2-0pre$(shell date "+%y%m%d") +NAME = ProofGeneral +# Name of tar file and RPM file. +RELEASENAME = ProofGeneral-$(RELEASE_TAG) +DEVELRELEASENAME = ProofGeneral-$(RELEASE_TAG)-devel +CVS_RELEASENAME = Release-$(CVS_RELEASE_TAG) + +# Where to release (i.e. copy) a new distribution to +RELEASEDIR = /home/proofgen/www/ + +CVSNAME = ProofGeneral +#CVSROOT = /home/proofgen/src + +# Remote commands to use CVS in server mode and install files. +# With these settings the build can be done remotely. +# MACHINE=hope +# CVSROOT = :ext:$(USER)@$(MACHINE).dcs.ed.ac.uk:/home/proofgen/src +# CVS_RSH=ssh +CVSROOT = /home/proofgen/src + + +# Emacs +EMACS=xemacs + +# GNU version of tar, please +TAR=tar + +# For recursive make +DEVELMAKE=make -f Makefile.devel + +# Files not to include the distribution area or tarball +NONDISTFILES=todo html etc Makefile.devel doc/notes.txt images/*.xcf images/notes.txt images/gimp images/Makefile + +# Files not to include in the distribution tarball +IGNOREDFILES=doc/ProofGeneral.dvi Makefile.devel + +# Temporary directory to to build a distribution in +DISTBUILDIR = /tmp/ProofGeneralRelease + +# Temporary RPM topdir for building packages as non-root user. +RPMTOPDIR=/tmp/ProofGeneral-rpm +RPMRC=$(RPMTOPDIR)/rpmrc +RPM=rpm --rcfile $(RPMRC) + +RELEASENAMETAR = $(RELEASENAME).tar +RELEASENAMETARGZ = $(RELEASENAMETAR).gz + +DEVELRELEASENAMETAR = $(DEVELRELEASENAME).tar +DEVELRELEASENAMETARGZ = $(DEVELRELEASENAMETAR).gz + + +# Files not kept under cvs to clean away. +FILES_NONCVS = ChangeLog + +# Where to install a distribution +# DISTINSTALLDIR=/usr/local/share/elisp/proofgeneral +# value for dcs.ed.ac.uk: +DISTINSTALLDIR=/export/local/share/elisp + + +FORCE: + +# Targets to pre-compile for distribution +# Slightly dodgy to include elisp compile here, because +# it can be incompatible across emacs versions. +alldist: alldocs + + + +############################################################ +# +# Re-Build ChangeLog. CVSROOT must be set correctly. +# Correct dependency would be to check repository for changes! +# +ChangeLog: FORCE + rm -f ChangeLog + $(EMACS) -batch -q -f vc-update-change-log -f save-buffer + + + +############################################################ +# +# Clean up intermediate files +# +clean: + (cd doc; $(MAKE) clean) + (cd images; $(MAKE) clean) + + +############################################################ +# +# Clean up all generated files. +# +distclean: clean + (cd doc; $(MAKE) distclean) + (cd images; $(MAKE) distclean) + +############################################################ +# +# Clean up all non-cvs files. +# +cvsclean: clean + rm -rf $(FILES_NONCVS) + (cd doc; $(MAKE) distclean) + (cd images; $(MAKE) cvsclean) + +############################################################ +# +# Documentation +# +doc: FORCE + (cd doc; $(MAKE) doc) + +alldocs: FORCE + (cd doc; $(MAKE) all) + +############################################################ +# +# Images +# +images: FORCE + (cd images; $(MAKE) images) + + + + +############################################################ +## +## tag: tag the CVS sources of working directory with RELEASE_TAG, +## and edit version stamp in proof-site.el +## (Developers only) +## +tag: + @echo "*************************************************" + @echo " Tagging sources... (fails if CVS source dirty)" + @echo "*************************************************" + if [ -n "`cvs -n -q update`" ]; then exit 1; fi + (cd generic; mv proof-site.el proof-site.el.old; sed -e 's/defconst proof-version \".*\"/defconst proof-version \"Proof General, Version $(RELEASE_TAG) released by da,tms. Email proofgen@dcs.ed.ac.uk.\"/g' proof-site.el.old > proof-site.el; rm proof-site.el.old) +# FIXME: the sed command below relies on previous value of RELEASE_TAG. +# (that it begins with 2.0pre) + (cd html; mv download.html download.html.old; sed -e 's|ProofGeneral-2\.0pre......|ProofGeneral-$(RELEASE_TAG)|g' download.html.old > download.html; rm download.html.old) + (cd etc; mv ProofGeneral.spec ProofGeneral.spec.old; sed -e 's/Version:.*$$/Version: $(RELEASE_TAG)/g' ProofGeneral.spec.old > ProofGeneral.spec; rm ProofGeneral.spec.old) +# This hack to SOURCE: name is only needed because we have an obsolete version +# of rpm installed on standard machines at dcs.ed, and we have to build with +# that version. + (cd etc; mv ProofGeneral.spec ProofGeneral.spec.old; sed -e 's/ProofGeneral-.*.tar.gz/ProofGeneral-$(RELEASE_TAG).tar.gz/g' ProofGeneral.spec.old > ProofGeneral.spec; rm ProofGeneral.spec.old) + cvs commit -m"Set version tag for new release." generic/proof-site.el html/download.html etc/ProofGeneral.spec + cvs tag "$(CVS_RELEASENAME)" + +############################################################ +## +## untag: Remove the CVS_RELEASENAME tag from the CVS sources. +## + +untag: + cvs tag -d "$(CVS_RELEASENAME)" + + +############################################################ +## +## dist: make a distribution in DISTBUILDIR from CVS sources +## Builds for user-distribution, from sources tagged +## with CVS_RELEASE_TAG. +## Moves html files to parent directory, removes +## non-distributed files. +## (Developer only) +## +dist: + @echo "*************************************************" + @echo " Cleaning dist build directory..." + @echo "*************************************************" + rm -rf $(DISTBUILDIR) + mkdir -p $(DISTBUILDIR) + @echo "*************************************************" + @echo " Running cvs export .." + @echo "*************************************************" + (cd $(DISTBUILDIR); cvs export -kv -r "$(CVS_RELEASENAME)" -d $(RELEASENAME) $(CVSNAME)) + @echo "*************************************************" + @echo " Running 'make alldist' for new release .." + @echo "*************************************************" + (cd $(DISTBUILDIR)/$(RELEASENAME); $(DEVELMAKE) alldist) + (cd $(DISTBUILDIR)/$(RELEASENAME); $(DEVELMAKE) clean) + @echo "*************************************************" + @echo " Copying doc files .." + @echo "*************************************************" + (cp -pr $(DISTBUILDIR)/$(RELEASENAME)/doc $(DISTBUILDIR)) + @echo "*************************************************" + @echo " Moving html files .." + @echo "*************************************************" + (cd $(DISTBUILDIR)/$(RELEASENAME)/html; mv * ../..) + @echo "*************************************************" + @echo " Cleaning non-distributed files .." + @echo "*************************************************" + (cd $(DISTBUILDIR)/$(RELEASENAME); rm -rf $(NONDISTFILES)) + @echo "*************************************************" + @echo " Making compressed tar file..." + @echo "*************************************************" + (cd $(DISTBUILDIR); for f in $(IGNOREDFILES); do echo $$f >> ignoredfiles; done) + $(TAR) -cvhf $(DISTBUILDIR)/$(RELEASENAMETAR) -C $(DISTBUILDIR) $(RELEASENAME) -X $(DISTBUILDIR)/ignoredfiles + gzip -9 $(DISTBUILDIR)/$(RELEASENAMETAR) + @echo "*************************************************" + @echo " Finished making dist." + @echo "*************************************************" + +############################################################ +## +## develdist: make a distribution for developers from +## raw CVS sources. +## +develdist: + @echo "*************************************************" + @echo " Making developer distribution..." + @echo "*************************************************" + mkdir -p $(DISTBUILDIR) + (cd $(DISTBUILDIR); cvs export -kv -r "$(CVS_RELEASENAME)" -d $(RELEASENAME)-devel $(CVSNAME)) + $(TAR) -cvhf $(DISTBUILDIR)/$(DEVELRELEASENAMETAR) -C $(DISTBUILDIR) $(DEVELRELEASENAME) + gzip -9 $(DISTBUILDIR)/$(DEVELRELEASENAMETAR) + + +############################################################ +## +## release: +## tag the CVS sources, and make a distribution. +## Then install the distribution in RELEASEDIR. +## WARNING: RELEASEDIR is not cleaned, but files there +## with same names will be overwritten. +## Moreover, a link ProofGeneral -> ProofGeneral-<version> +## is made. +## +release: distclean tag dist develdist + mkdir -p $(RELEASEDIR) + cp -pfr $(DISTBUILDIR)/* $(RELEASEDIR) + (cd $(RELEASEDIR); rm -f $(NAME); ln -s $(RELEASENAME) $(NAME)) + @echo "*************************************************" + @echo " Finished installing dist." + @echo "*************************************************" + + +############################################################ +## +## rpm: +## Build an RPM package from the recently made distribution +## $(DISTBUILDIR)/$(RELEASENAMETAR).gz, using the spec and +## patch file in ./etc +## +## +rpm: + rm -rf $(RPMTOPDIR) + mkdir -p $(RPMTOPDIR) $(RPMTOPDIR)/BUILD $(RPMTOPDIR)/SOURCES $(RPMTOPDIR)/SRPMS $(RPMTOPDIR)/RPMS $(RPMTOPDIR)/RPMS/noarch + echo "topdir: $(RPMTOPDIR)" > $(RPMRC) + cp -p etc/ProofGeneral.patch $(RPMTOPDIR)/SOURCES + cp -p $(DISTBUILDIR)/$(RELEASENAMETARGZ) $(RPMTOPDIR)/SOURCES + $(RPM) -ba etc/ProofGeneral.spec + + +############################################################ +## +## rpmrelease: +## Build and install RPM packages into RELEASEDIR. +## +rpmrelease: rpm + cp -pf $(RPMTOPDIR)/SRPMS/* $(RPMTOPDIR)/RPMS/noarch/* $(RELEASEDIR) + +############################################################ +## +## releaseclean: +## Cleanup after building release. +## +releaseclean: + rm -rf $(DISTBUILDIR) $(RPMTOPDIR) + +############################################################ +## +## releaseall: +## Do everything! +## +releaseall: release rpmrelease releaseclean + + +############################################################ +# +# distinstall: +# Install distribution from $(DISTBUILDIR) into DISTINSTALLDIR +# Clean out DISTINSTALLDIR first. +# NB! Simple install, no attempt to put info files, etc, in +# special places. +# +distinstall: + rm -rf $(DISTINSTALLDIR)/$(NAME) + mkdir -p $(DISTINSTALLDIR) + (cd $(DISTINSTALLDIR); \ + $(TAR) -xpzf $(DISTBUILDIR)/$(RELEASENAMETARGZ); \ + mv $(RELEASENAME) $(NAME)) +======= +# TODO: (da) Add target for byte compilation. + +# Release tags. +# NB: 1. CVS tags can't have points in them. +# 2. RPM names can't have hyphens in them +RELEASE_TAG=2.0pre$(shell date "+%y%m%d") +CVS_RELEASE_TAG=2-0pre$(shell date "+%y%m%d") +NAME = ProofGeneral +# Name of tar file and RPM file. +RELEASENAME = ProofGeneral-$(RELEASE_TAG) +DEVELRELEASENAME = ProofGeneral-$(RELEASE_TAG)-devel +CVS_RELEASENAME = Release-$(CVS_RELEASE_TAG) + +# Where to release (i.e. copy) a new distribution to +RELEASEDIR = /home/proofgen/www/ + +CVSNAME = ProofGeneral +#CVSROOT = /home/proofgen/src + +# Remote commands to use CVS in server mode and install files. +# With these settings the build can be done remotely. +# MACHINE=hope +# CVSROOT = :ext:$(USER)@$(MACHINE).dcs.ed.ac.uk:/home/proofgen/src +# CVS_RSH=ssh +CVSROOT = /home/proofgen/src + + +# Byte compilation command +BYTECOMP = $(EMACS) -batch -q -f batch-byte-compile +EMACS=xemacs + +# GNU version of tar, please +TAR=tar + +# Files not to include the distribution area or tarball +NONDISTFILES=todo html etc Makefile doc/Makefile doc/notes.txt images/*.xcf images/notes.txt images/gimp images/Makefile + +# Files not to include in the distribution tarball +IGNOREDFILES=doc/ProofGeneral.dvi + +# Temporary directory to to build a distribution in +DISTBUILDIR = /tmp/ProofGeneralRelease + +# Temporary RPM topdir for building packages as non-root user. +RPMTOPDIR=/tmp/ProofGeneral-rpm +RPMRC=$(RPMTOPDIR)/rpmrc +RPM=rpm --rcfile $(RPMRC) + +RELEASENAMETAR = $(RELEASENAME).tar +RELEASENAMETARGZ = $(RELEASENAMETAR).gz + +DEVELRELEASENAMETAR = $(DEVELRELEASENAME).tar +DEVELRELEASENAMETARGZ = $(DEVELRELEASENAMETAR).gz + + +# Files not kept under cvs to clean away. +FILES_NONCVS = ChangeLog + +# Where to install a distribution +# DISTINSTALLDIR=/usr/local/share/elisp/proofgeneral +# value for dcs.ed.ac.uk: +DISTINSTALLDIR=/export/local/share/elisp + + +FORCE: + +# Targets to pre-compile for distribution +# Slightly dodgy to include elisp compile here, because +# it can be incompatible across emacs versions. +alldist: alldocs + + + +############################################################ +# +# Re-Build ChangeLog. CVSROOT must be set correctly. +# Correct dependency would be to check repository for changes! +# +ChangeLog: FORCE + rm -f ChangeLog + $(EMACS) -batch -q -f vc-update-change-log -f save-buffer + + + +############################################################ +# +# Clean up intermediate files +# +clean: + (cd doc; $(MAKE) clean) + (cd images; $(MAKE) clean) + + +############################################################ +# +# Clean up all generated files. +# +distclean: clean + (cd doc; $(MAKE) distclean) + (cd images; $(MAKE) distclean) + +############################################################ +# +# Clean up all non-cvs files. +# +cvsclean: clean + rm -rf $(FILES_NONCVS) + (cd doc; $(MAKE) distclean) + (cd images; $(MAKE) cvsclean) + +############################################################ +# +# Documentation +# +doc: FORCE + (cd doc; $(MAKE) doc) + +alldocs: FORCE + (cd doc; $(MAKE) all) + +############################################################ +# +# Images +# +images: FORCE + (cd images; $(MAKE) images) + + + + +############################################################ +## +## tag: tag the CVS sources of working directory with RELEASE_TAG, +## and edit version stamp in proof-site.el +## (Developers only) +## +tag: + @echo "*************************************************" + @echo " Tagging sources... (fails if CVS source dirty)" + @echo "*************************************************" + if [ -n "`cvs -n -q update`" ]; then exit 1; fi + (cd generic; mv proof-site.el proof-site.el.old; sed -e 's/defconst proof-version \".*\"/defconst proof-version \"Proof General, Version $(RELEASE_TAG) released by da,tms. Email proofgen@dcs.ed.ac.uk.\"/g' proof-site.el.old > proof-site.el; rm proof-site.el.old) +# FIXME: the sed command below relies on previous value of RELEASE_TAG. +# (that it begins with 2.0pre) + (cd html; mv download.html download.html.old; sed -e 's|ProofGeneral-2\.0pre......|ProofGeneral-$(RELEASE_TAG)|g' download.html.old > download.html; rm download.html.old) + (cd etc; mv ProofGeneral.spec ProofGeneral.spec.old; sed -e 's/Version:.*$$/Version: $(RELEASE_TAG)/g' ProofGeneral.spec.old > ProofGeneral.spec; rm ProofGeneral.spec.old) +# This hack to SOURCE: name is only needed because we have an obsolete version +# of rpm installed on standard machines at dcs.ed, and we have to build with +# that version. + (cd etc; mv ProofGeneral.spec ProofGeneral.spec.old; sed -e 's/ProofGeneral-.*.tar.gz/ProofGeneral-$(RELEASE_TAG).tar.gz/g' ProofGeneral.spec.old > ProofGeneral.spec; rm ProofGeneral.spec.old) + cvs commit -m"Set version tag for new release." generic/proof-site.el html/download.html etc/ProofGeneral.spec + cvs tag "$(CVS_RELEASENAME)" + +############################################################ +## +## untag: Remove the CVS_RELEASENAME tag from the CVS sources. +## + +untag: + cvs tag -d "$(CVS_RELEASENAME)" + + +############################################################ +## +## dist: make a distribution in DISTBUILDIR from CVS sources +## Builds for user-distribution, from sources tagged +## with CVS_RELEASE_TAG. +## Moves html files to parent directory, removes +## non-distributed files. +## (Developer only) +## +dist: + @echo "*************************************************" + @echo " Cleaning dist build directory..." + @echo "*************************************************" + rm -rf $(DISTBUILDIR) + mkdir -p $(DISTBUILDIR) + @echo "*************************************************" + @echo " Running cvs export .." + @echo "*************************************************" + (cd $(DISTBUILDIR); cvs export -kv -r "$(CVS_RELEASENAME)" -d $(RELEASENAME) $(CVSNAME)) + @echo "*************************************************" + @echo " Running 'make alldist' for new release .." + @echo "*************************************************" + (cd $(DISTBUILDIR)/$(RELEASENAME); make alldist) + (cd $(DISTBUILDIR)/$(RELEASENAME); make clean) + @echo "*************************************************" + @echo " Copying doc files .." + @echo "*************************************************" + (cp -pr $(DISTBUILDIR)/$(RELEASENAME)/doc $(DISTBUILDIR)) + @echo "*************************************************" + @echo " Moving html files .." + @echo "*************************************************" + (cd $(DISTBUILDIR)/$(RELEASENAME)/html; mv * ../..) + @echo "*************************************************" + @echo " Cleaning non-distributed files .." + @echo "*************************************************" + (cd $(DISTBUILDIR)/$(RELEASENAME); rm -rf $(NONDISTFILES)) + @echo "*************************************************" + @echo " Making compressed tar file..." + @echo "*************************************************" + (cd $(DISTBUILDIR); for f in $(IGNOREDFILES); do echo $$f >> ignoredfiles; done) + $(TAR) -cvhf $(DISTBUILDIR)/$(RELEASENAMETAR) -C $(DISTBUILDIR) $(RELEASENAME) -X $(DISTBUILDIR)/ignoredfiles + gzip -9 $(DISTBUILDIR)/$(RELEASENAMETAR) + @echo "*************************************************" + @echo " Finished making dist." + @echo "*************************************************" + +############################################################ +## +## develdist: make a distribution for developers from +## raw CVS sources. +## +develdist: + @echo "*************************************************" + @echo " Making developer distribution..." + @echo "*************************************************" + mkdir -p $(DISTBUILDIR) + (cd $(DISTBUILDIR); cvs export -kv -r "$(CVS_RELEASENAME)" -d $(RELEASENAME)-devel $(CVSNAME)) + $(TAR) -cvhf $(DISTBUILDIR)/$(DEVELRELEASENAMETAR) -C $(DISTBUILDIR) $(DEVELRELEASENAME) + gzip -9 $(DISTBUILDIR)/$(DEVELRELEASENAMETAR) + + +############################################################ +## +## release: +## tag the CVS sources, and make a distribution. +## Then install the distribution in RELEASEDIR. +## WARNING: RELEASEDIR is not cleaned, but files there +## with same names will be overwritten. +## Moreover, a link ProofGeneral -> ProofGeneral-<version> +## is made. +## +release: distclean tag dist develdist + mkdir -p $(RELEASEDIR) + cp -pfr $(DISTBUILDIR)/* $(RELEASEDIR) + (cd $(RELEASEDIR); rm -f $(NAME); ln -s $(RELEASENAME) $(NAME)) + @echo "*************************************************" + @echo " Finished installing dist." + @echo "*************************************************" + + +############################################################ +## +## rpm: +## Build an RPM package from the recently made distribution +## $(DISTBUILDIR)/$(RELEASENAMETAR).gz, using the spec and +## patch file in ./etc +## +## +rpm: + rm -rf $(RPMTOPDIR) + mkdir -p $(RPMTOPDIR) $(RPMTOPDIR)/BUILD $(RPMTOPDIR)/SOURCES $(RPMTOPDIR)/SRPMS $(RPMTOPDIR)/RPMS $(RPMTOPDIR)/RPMS/noarch + echo "topdir: $(RPMTOPDIR)" > $(RPMRC) + cp -p etc/ProofGeneral.patch $(RPMTOPDIR)/SOURCES + cp -p $(DISTBUILDIR)/$(RELEASENAMETARGZ) $(RPMTOPDIR)/SOURCES + $(RPM) -ba etc/ProofGeneral.spec + + +############################################################ +## +## rpmrelease: +## Build and install RPM packages into RELEASEDIR. +## +rpmrelease: rpm + cp -pf $(RPMTOPDIR)/SRPMS/* $(RPMTOPDIR)/RPMS/noarch/* $(RELEASEDIR) + +############################################################ +## +## releaseclean: +## Cleanup after building release. +## +releaseclean: + rm -rf $(DISTBUILDIR) $(RPMTOPDIR) + +############################################################ +## +## releaseall: +## Do everything! +## +releaseall: release rpmrelease releaseclean + + +############################################################ +# +# distinstall: +# Install distribution from $(DISTBUILDIR) into DISTINSTALLDIR +# Clean out DISTINSTALLDIR first. +# NB! Simple install, no attempt to put info files, etc, in +# special places. +# +distinstall: + rm -rf $(DISTINSTALLDIR)/$(NAME) + mkdir -p $(DISTINSTALLDIR) + (cd $(DISTINSTALLDIR); \ + $(TAR) -xpzf $(DISTBUILDIR)/$(RELEASENAMETARGZ); \ + mv $(RELEASENAME) $(NAME)) + |