diff: version number & release build process

Fergus Henderson fjh at cs.mu.oz.au
Mon Jul 28 18:24:13 AEST 1997


Localize the definition of the version number into a single file.
Automate the building of releases, including daily "rotd"
(release-of-the-day) releases.

VERSION:
	New file, defines the version number.
	Also document the general scheme for assigning version numbers.

Mmake.common.in:
	Add `include VERSION'.

Mmakefile:
bindist/Mmakefile:
configure.in:
	Use the version number in VERSION rather than hard-coding it
	in multiple places.

Mmakefile:
README:
.README.in:
INSTALL:
.INSTALL.in:
	Change things so that README and INSTALL are automatically
	generated from .README.in and .INSTALL.in respectively, using
	the version number defined in VERSION.

BUGS:
	Remove an unnecessary reference to the version number.

RELEASE_NOTES:
	Change this file so that the version number is only mentioned
	in one place.  Bump the version number here to 0.7 in preparation
	for the next release.

library/Mmakefile:
library/library.m:
library/library.m.in:
	Change things so that library.m is automatically generated from
	library.m.in using the version number in VERSION.
	Also change it so that library__version says which architecture
	it was configured for.

tools/test_mercury:
	Override the version specified in the VERSION file in the CVS
	repository with either `rotd-YYYY-MM-DD' or (when making a release)
	with a specified $RELEASE_VERSION.
	When running on murliboobo, if the version built passes all its
	tests, copy it to the /pub/mercury/beta-releases directory on
	ftp://turiel.cs.mu.oz.au.

compiler/notes/release_checklist.m:
	Change the release checklist to say that you only need to
	update the version number in VERSION rather than in 6 different
	places.  Also change the procedure for building the final
	tar file to reflect the above changes to the `test_mercury' script.

cvs diff: Diffing .
cvs diff: .INSTALL.in is a new entry, no comparison available
cvs diff: .README.in is a new entry, no comparison available
Index: BUGS
===================================================================
RCS file: /home/staff/zs/imp/mercury/BUGS,v
retrieving revision 1.7
diff -u -r1.7 BUGS
--- BUGS	1997/07/27 16:34:33	1.7
+++ BUGS	1997/07/28 05:28:41
@@ -11,9 +11,16 @@
 fully self-contained.
 
 Below is a list of the known outstanding bugs.
-We'll try to record any other bugs that are discovered in 0.6
+We'll try to record any other bugs that are discovered
 on our WWW page <http://www.cs.mu.oz.au/mercury>.
 See also the LIMITATIONS file.
+
+Note: please do not be alarmed by the fact that this software has some bugs.
+ALL useful software has bugs.  During the development of the Mercury
+implementation we have found bugs in gcc, as, ld, the dynamic loader,
+and even the OS kernel.  We hope that by listing the known outstanding bugs
+here we are doing our users a service.  It would be disappointing if
+anyone were to infer the wrong thing from it.
 
 -----------------------------------------------------------------------------
 Subject: bug report - Inf and NaN
cvs diff: INSTALL was removed, no comparison available
Index: Mmake.common.in
===================================================================
RCS file: /home/staff/zs/imp/mercury/Mmake.common.in,v
retrieving revision 1.21
diff -u -r1.21 Mmake.common.in
--- Mmake.common.in	1997/07/27 14:58:44	1.21
+++ Mmake.common.in	1997/07/28 08:13:11
@@ -17,6 +17,10 @@
 
 #-----------------------------------------------------------------------------#
 
+include $(MERCURY_DIR)/VERSION
+
+#-----------------------------------------------------------------------------#
+
 # Specify the locations for installing things.
 # These directories can all be modified independantly.
 # In particular, you might want to find a better place for the DVI and
Index: Mmakefile
===================================================================
RCS file: /home/staff/zs/imp/mercury/Mmakefile,v
retrieving revision 1.4
diff -u -r1.4 Mmakefile
--- Mmakefile	1997/07/27 14:58:45	1.4
+++ Mmakefile	1997/07/28 04:51:48
@@ -11,8 +11,6 @@
 MERCURY_DIR=.
 include Mmake.common
 
-VERSION=0.6
-
 #-----------------------------------------------------------------------------#
 
 SUBDIRS = scripts util boehm_gc runtime library compiler doc profiler
@@ -71,7 +69,7 @@
 #-----------------------------------------------------------------------------#
 
 .PHONY: all
-all: $(SUBDIRS)
+all: $(SUBDIRS) README INSTALL
 
 .PHONY: scripts
 scripts:
@@ -146,6 +144,12 @@
 Mmake.common: Mmake.common.in config.status
 	./config.status
 
+README: .README.in VERSION
+	sed 's/@VERSION@/$(VERSION)/g' .README.in > README
+
+INSTALL: .INSTALL.in VERSION
+	sed 's/@VERSION@/$(VERSION)/g' .INSTALL.in > INSTALL
+
 #-----------------------------------------------------------------------------#
 
 # Generally you should do a `mmake realclean' before doing `mmake tar'.
@@ -189,6 +193,7 @@
 		mv mercury-$(VERSION) mercury				\
 	)
 
+.PHONY: version
 version:
 	@echo $(VERSION)
 
cvs diff: README was removed, no comparison available
Index: RELEASE_NOTES
===================================================================
RCS file: /home/staff/zs/imp/mercury/RELEASE_NOTES,v
retrieving revision 1.20
diff -u -r1.20 RELEASE_NOTES
--- RELEASE_NOTES	1997/07/26 17:38:44	1.20
+++ RELEASE_NOTES	1997/07/28 07:57:43
@@ -1,5 +1,5 @@
 
-We are pleased to announce the release of version 0.6 of the Mercury system.
+We are pleased to announce the release of version 0.7 of the Mercury system.
 
 Mercury is a new general-purpose programming language, designed and
 implemented by a small group of researchers at the University of
@@ -13,7 +13,7 @@
 syntactic convenience of user-defined functions, smoothly integrating
 logic and functional programming into a single paradigm.
 
-For a list of what's new in release 0.6, see the NEWS file.
+For a list of what's new in this release, see the NEWS file.
 
 The main features of Mercury are:
 
cvs diff: VERSION is a new entry, no comparison available
Index: configure.in
===================================================================
RCS file: /home/staff/zs/imp/mercury/configure.in,v
retrieving revision 1.99
diff -u -r1.99 configure.in
--- configure.in	1997/07/27 14:58:47	1.99
+++ configure.in	1997/07/28 05:40:56
@@ -40,7 +40,8 @@
 fi
 #-----------------------------------------------------------------------------#
 AC_CONFIG_HEADER(runtime/conf.h)
-AC_PREFIX_DEFAULT(/usr/local/mercury-0.6)
+. ./VERSION
+AC_PREFIX_DEFAULT(/usr/local/mercury-$VERSION)
 AC_CANONICAL_HOST
 FULLARCH="$host"
 AC_SUBST(FULLARCH)
cvs diff: Diffing bindist
Index: bindist/Mmakefile
===================================================================
RCS file: /home/staff/zs/imp/mercury/bindist/Mmakefile,v
retrieving revision 1.3
diff -u -r1.3 Mmakefile
--- Mmakefile	1997/07/27 14:58:56	1.3
+++ Mmakefile	1997/07/28 04:53:34
@@ -10,7 +10,6 @@
 MERCURY_DIR=..
 include $(MERCURY_DIR)/Mmake.common
 
-VERSION=0.6
 MERCURY_VERSION	= mercury-$(VERSION).$(FULLARCH)
 
 INSTALL_LIB_DIR	= $(INSTALL_PREFIX)/lib
cvs diff: Diffing boehm_gc
cvs diff: Diffing boehm_gc/Mac_files
cvs diff: Diffing boehm_gc/cord
cvs diff: Diffing boehm_gc/cord/private
cvs diff: Diffing boehm_gc/include
cvs diff: Diffing boehm_gc/include/private
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
cvs diff: Diffing compiler/notes
Index: compiler/notes/release_checklist.html
===================================================================
RCS file: /home/staff/zs/imp/mercury/compiler/notes/release_checklist.html,v
retrieving revision 1.1
diff -u -r1.1 release_checklist.html
--- release_checklist.html	1997/04/03 05:17:42	1.1
+++ release_checklist.html	1997/07/28 07:57:08
@@ -1,14 +1,9 @@
 <html>
 <head>
-<title>
-	Mercury Coding Standard for the Mercury Project
-</title>
+<title>Mercury Coding Standard for the Mercury Project</title>
 </head>
 
-<body
-	bgcolor="#ffffff"
-	text="#000000"
->
+<body bgcolor="#ffffff" text="#000000">
 
 <hr>
 <!-------------------------->
@@ -20,20 +15,26 @@
 <!-------------------------->
 
 <ol>
-<li> Update the version number in
-	<ul>
-	<li> README
-	<li> INSTALL (various places)
-	<li> Mmake
-	<li> bindist/Mmake
-	<li> configure.in
-	<li> library/library.m
-	</ul>
-    and update the NEWS, RELEASE_NOTES, and HISTORY files. 
-    The RELEASE_NOTES file should include the contents of the NEWS file.
-    The HISTORY file should include the NEWS files from previous releases.
+<li> Update the NEWS, RELEASE_NOTES, and HISTORY files. 
+     Don't forget to update the version number in RELEASE_NOTES for major
+     releases.
+     The HISTORY file should include the NEWS files from previous releases.
+
+<li> Update the WWW documentation in the `www' directory,
+     but don't commit it to the main branch yet, because otherwise
+     it would be installed on the WWW pages overnight.
+
+<li> Use `cvs tag' to tag all the files with a `version-x_y_z' tag.
+
+<li> Edit the tools/test_mercury script in
+     /home/mercury/public/test_mercury/scripts/mercury:
+     set the RELEASE_VERSION and CHECKOUT_OPTS variables
+     as explained in the comments there.
 
-<li>  Checkout a fresh copy, and do
+<li> Run tools/run_all_tests_from_cron on murlibobo.
+     (Or just wait 24 hours or so.) <p>
+
+     This should have the effect of checking out a fresh copy, and doing
 
 	<pre>
 	touch Mmake.params &&
@@ -47,30 +48,32 @@
 	
 	<p>
 
-    This step should be done automatically by tools/test_mercury every night,
-    so you should be able to just grab the mercury-latest-stable.tar.gz
-    file from /home/mercury/public/testing/test_dirs/murlibobo.
+    If it passes all the tests, it should put the resulting tar file in
+    /home/mercury/public/test_mercury/test_dirs/mercury-latest-stable and
+    ftp://turiel.cs.mu.oz.au/pub/mercury/beta-releases.
 
 <li>  Test it on lots of architectures. <br>
 
 	<p>
-    Make sure you test that all the programs in the `samples' directory
-    work.
+    Make sure you test all the programs in the `samples' and `extras'
+    directories.
 
 <li>  Build binary distributions for those architectures.
 
-<li>  Copy the gzipped tar files to ~fjh/www_public/mercury, and
-    to the turiel ftp site ftp://turiel.cs.mu.oz.au/pub/mercury.
+<li>  Move the gzipped tar files from the /pub/mercury/beta-releases directory
+      to the main /pub/mercury directory on the turiel ftp site
+      ftp://turiel.cs.mu.oz.au/pub/mercury. <br>
     Email kostis at cs.sunysb.edu (Konstantinos Sagonas) to tell him
     to make copies of it on ftp://ftp.cs.sunysb.edu/pub/XSB/mercury
     respectively. <br>
-    The mirror on ftp://ftp.csd.uu.se/pub/Mercury is automated.
+    The mirror on ftp://ftp.csd.uu.se/pub/Mercury is supposedly automated.
 
 <li>  Email mercury-announce at cs.mu.oz.au and cross-post announcement to
     comp.lang.misc, comp.lang.prolog, comp.lang.functional, comp.object.logic,
     and for major releases also to comp.compilers and gnu.announce.
 
-<li>  Update the Mercury WWW home page (/local/dept/www/mercury/mercury.html).
+<li>  Update the Mercury WWW home page (/local/dept/www/mercury/mercury.html)
+      by commiting the changes you made earlier.
 
 </ol>
 
cvs diff: Diffing doc
cvs diff: Diffing extras
cvs diff: Diffing extras/cgi
cvs diff: Diffing extras/complex_numbers
cvs diff: Diffing extras/complex_numbers/samples
cvs diff: Diffing extras/complex_numbers/tests
cvs diff: Diffing extras/graphics
cvs diff: Diffing extras/graphics/Togl-1.2
cvs diff: Diffing extras/graphics/samples
cvs diff: Diffing extras/graphics/samples/calc
cvs diff: Diffing extras/graphics/samples/maze
cvs diff: Diffing library
Index: library/Mmakefile
===================================================================
RCS file: /home/staff/zs/imp/mercury/library/Mmakefile,v
retrieving revision 1.9
diff -u -r1.9 Mmakefile
--- Mmakefile	1997/07/27 15:06:31	1.9
+++ Mmakefile	1997/07/28 04:48:18
@@ -106,6 +106,16 @@
 
 #-----------------------------------------------------------------------------#
 
+library.m: library.m.in ../VERSION ../Mmake.common
+	sed	-e 's/@VERSION@/$(VERSION)/g' \
+		-e 's/@FULLARCH@/$(FULLARCH)/' \
+		library.m.in > library.m
+
+library.dep : library.m
+library.depend : library.m
+
+#-----------------------------------------------------------------------------#
+
 tags		: $(MTAGS) $(library.ms)
 	$(MTAGS) $(library.ms)
 
cvs diff: library/library.m was removed, no comparison available
cvs diff: library/library.m.in is a new entry, no comparison available
cvs diff: Diffing lp_solve
cvs diff: Diffing lp_solve/lp_examples
cvs diff: Diffing profiler
cvs diff: Diffing runtime
cvs diff: Diffing runtime/machdeps
cvs diff: Diffing samples
cvs diff: Diffing samples/c_interface
cvs diff: Diffing samples/c_interface/c_calls_mercury
cvs diff: Diffing samples/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/c_interface/mercury_calls_c
cvs diff: Diffing samples/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/diff
cvs diff: Diffing scripts
cvs diff: Diffing tools
Index: tools/test_mercury
===================================================================
RCS file: /home/staff/zs/imp/mercury/tools/test_mercury,v
retrieving revision 1.48
diff -u -r1.48 test_mercury
--- test_mercury	1997/07/15 08:05:15	1.48
+++ test_mercury	1997/07/28 07:14:13
@@ -30,6 +30,19 @@
 
 #-----------------------------------------------------------------------------#
 
+DATE=`date '+%Y-%m-%d'`
+
+RELEASE_VERSION=rotd-$DATE
+CHECKOUT_OPTS=-A
+
+# To build one of the official releases, uncomment the following two lines
+# which specify the release number and the cvs checkout option needed to
+# retrieve it.
+### RELEASE_VERSION=0.7
+### CHECKOUT_OPTS=-rversion-0_7		
+
+#-----------------------------------------------------------------------------#
+
 case $HOST in
 	# test things at different optimization levels...
 	murlibobo)	OPTIMIZE=-O5 ;;
@@ -137,9 +150,14 @@
 
 : checkout the sources and make sure the installation directory exists
 cd $DIR || { false; exit 1; }
-cvs checkout mercury tests || { false; exit 1; }
+cvs checkout $CHECKOUT_OPTS mercury tests || { false; exit 1; }
 [ -d $INSTALL_DIR ] || mkdir -p $INSTALL_DIR
 
+: update the VERSION file to specify the version we are building
+sed	"s/VERSION=.*/VERSION=$RELEASE_VERSION/" \
+	mercury/VERSION > mercury/VERSION.new
+mv mercury/VERSION.new mercury/VERSION
+
 : bootstrap the compiler up to stage 3 and check that the results match
 MERCURY_COMPILER=$BOOTSTRAP_MERCURY_COMPILER
 export MERCURY_COMPILER
@@ -268,8 +286,8 @@
 	version=`mmake version` &&
 	mmake MMAKEFLAGS='EXTRA_MCFLAGS="-O5 --opt-space" -j6' tar &&
 	cd .. &&
-	rm -f mercury-latest-unstable.tar.gz &&
-	mv mercury-$version.tar.gz mercury-latest-unstable.tar.gz
+	rm -f mercury-latest-unstable/* &&
+	mv mercury-$version.tar.gz mercury-latest-unstable
 	} || status=1
 	;;
 esac
@@ -341,10 +359,14 @@
 	[ -d $TESTDIR/logs ] || mkdir -p $TESTDIR/logs
 	date >> $TESTDIR/logs/successful_tests.$HOST
 	case $HOST in murlibobo)
-		cd $DIR &&
-		rm -f mercury-latest-stable.tar.gz &&
-		ln mercury-latest-unstable.tar.gz mercury-latest-stable.tar.gz
-		;;
+	    cd $DIR &&
+	    rm -f mercury-latest-stable/* &&
+	    ln mercury-latest-unstable/mercury-$version.tar.gz \
+	        mercury-latest-stable/mercury-$version.tar.gz &&
+	    rm -f /home/tsa/ftp/pub/mercury/beta-releases/mercury-rotd-*.tar.gz
+	    cp mercury-latest-stable/mercury-$version.tar.gz \
+	        /home/tsa/ftp/pub/mercury/beta-releases
+	    ;;
 	esac
 	echo "test_mercury exiting successfully at `date`" 1>&2
 	true
cvs diff: Diffing trial
cvs diff: Diffing util
--- README	Mon Jul 28 18:20:48 1997
+++ .README.in	Mon Jul 28 17:48:30 1997
@@ -1,5 +1,5 @@
 This directory contains the source distribution for the University of Melbourne
-Mercury compiler, version 0.6.
+Mercury compiler, version @VERSION at .
 
 The Mercury implementation is free software, but it is Copyright (C)
 1994-1997 The University of Melbourne.  It is distributed under the terms
@@ -30,10 +30,11 @@
 The documentation sources are in the `doc' subdirectory.  The installation
 process will install INFO, HTML, and DVI versions in the locations specified
 in the file Mmake.common - by default these locations are
-/usr/local/mercury-0.6/info, /usr/local/mercury-0.6/lib/mercury/html,
-and /usr/local/mercury-0.6/lib/mercury/doc respectively.
+/usr/local/mercury- at VERSION@/info,
+/usr/local/mercury- at VERSION@/lib/mercury/html,
+and /usr/local/mercury- at VERSION@/lib/mercury/doc respectively.
 The installation process will also install Unix-style man pages -
-by default they will be installed in /usr/local/mercury-0.6/man/man1.
+by default they will be installed in /usr/local/mercury- at VERSION@/man/man1.
 The files RELEASE_NOTES, NEWS, HISTORY, LIMITATIONS, and BUGS
 also contain useful information.  If you're interested in looking
 at the source code, the file compiler/notes/compiler_design.html is
--- INSTALL	Mon Jul 28 18:21:07 1997
+++ .INSTALL.in	Mon Jul 28 14:12:19 1997
@@ -10,7 +10,7 @@
 # Step 1.  Run `configure'.  (Just type `sh configure'.)
 #
 #	   By default, the files will be installed in the directory
-#	   /usr/local/mercury-0.6.
+#	   /usr/local/mercury- at VERSION@.
 #	   If you want the files to be installed someplace else,
 #	   use the `--prefix <directory>' option to `configure'.
 #
@@ -31,12 +31,12 @@
 #	   file `make_install.log'.
 #
 # Step 4.  Check the permissions on the installed files.
-#	   Add /usr/local/mercury-0.6/bin to your PATH, and
-#	   add /usr/local/mercury-0.6/info to your INFOPATH.
+#	   Add /usr/local/mercury- at VERSION@/bin to your PATH, and
+#	   add /usr/local/mercury- at VERSION@/info to your INFOPATH.
 #	   You can also add a WWW link to the Mercury documentation in
-#	   /usr/local/mercury-0.6/lib/mercury/html to your WWW home page,
+#	   /usr/local/mercury- at VERSION@/lib/mercury/html to your WWW home page,
 #	   and you may want to print out a hard-copy of the documentation
-#	   from the DVI files in /usr/local/mercury-0.6/lib/mercury/doc.
+#	   from the DVI files in /usr/local/mercury- at VERSION@/lib/mercury/doc.
 #
 # Step 5.  Run `make clean'.
 #
@@ -98,7 +98,7 @@
 # You may eventually want to uninstall this version of Mercury
 # (to free up disk space so you can install the next version ;-).
 # If you installed in the default location, you can simply
-# use `rm -rf /usr/local/mercury-0.6' to uninstall.
+# use `rm -rf /usr/local/mercury- at VERSION@' to uninstall.
 # If you installed in a location such as `/usr/local' that also
 # contains other files which you do not want removed, then
 # run the command `make uninstall' in this directory.

-- 
Fergus Henderson <fjh at cs.mu.oz.au>   |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>   |  of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3         |     -- the last words of T. S. Garp.



More information about the developers mailing list