1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +02:00

*** empty log message ***

This commit is contained in:
Rob Browning 2001-08-16 03:44:29 +00:00
parent 9e86801e2f
commit ab4cd34b26
6 changed files with 267 additions and 31 deletions

View file

@ -1,3 +1,26 @@
2001-08-15 Rob Browning <rlb@defaultvalue.org>
* configure.in
(LIBGUILE_INTERFACE_CURRENT): use libtool versioning scheme.
(LIBGUILE_INTERFACE_REVISION): use libtool versioning scheme.
(LIBGUILE_INTERFACE_AGE): use libtool versioning scheme.
(LIBGUILE_INTERFACE): use libtool versioning scheme.
(LIBGUILEQTHREADS_INTERFACE_CURRENT): use libtool versioning scheme.
(LIBGUILEQTHREADS_INTERFACE_REVISION): use libtool versioning scheme.
(LIBGUILEQTHREADS_INTERFACE_AGE): use libtool versioning scheme.
(LIBGUILEQTHREADS_INTERFACE): use libtool versioning scheme.
* GUILE-VERSION (GUILE_MINOR_VERSION): bump for new unstable.
(GUILE_MICRO_VERSION): reset for new unstable.
(LIBGUILE_INTERFACE_CURRENT): use libtool versioning scheme.
(LIBGUILE_INTERFACE_REVISION): use libtool versioning scheme.
(LIBGUILE_INTERFACE_AGE): use libtool versioning scheme.
(LIBGUILE_INTERFACE): use libtool versioning scheme.
(LIBGUILEQTHREADS_INTERFACE_CURRENT): use libtool versioning scheme.
(LIBGUILEQTHREADS_INTERFACE_REVISION): use libtool versioning scheme.
(LIBGUILEQTHREADS_INTERFACE_AGE): use libtool versioning scheme.
(LIBGUILEQTHREADS_INTERFACE): use libtool versioning scheme.
2001-08-07 Marius Vollmer <mvo@zagadka.ping.de> 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
* Makefile.am (EXTRA_DIST, SUBDIRS): Move test-suite from * Makefile.am (EXTRA_DIST, SUBDIRS): Move test-suite from

146
HACKING
View file

@ -1,3 +1,4 @@
-*-text-*-
Guile Hacking Guide Guile Hacking Guide
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001 Free software Foundation, Inc. Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001 Free software Foundation, Inc.
@ -42,7 +43,7 @@ Autoconf 2.50 --- a system for automatically generating `configure'
program would like to use. Available in program would like to use. Available in
"ftp://ftp.gnu.org/pub/gnu/autoconf" "ftp://ftp.gnu.org/pub/gnu/autoconf"
Automake 1.4-p2 --- a system for automatically generating Makefiles that Automake 1.4-p4 --- a system for automatically generating Makefiles that
conform to the (rather Byzantine) GNU coding standards. The conform to the (rather Byzantine) GNU coding standards. The
nice thing is that it takes care of hairy targets like 'make nice thing is that it takes care of hairy targets like 'make
dist' and 'make distclean', and automatically generates dist' and 'make distclean', and automatically generates
@ -112,9 +113,147 @@ The Guile sources live in several modules:
- guile-rgx-ctax --- the Guile/Rx interface, and the ctax implementation - guile-rgx-ctax --- the Guile/Rx interface, and the ctax implementation
- guile-scsh --- the port of SCSH to guile, talk to Gary Houston - guile-scsh --- the port of SCSH to guile, talk to Gary Houston
- guile-www --- A Guile module for making HTTP requests. - guile-www --- A Guile module for making HTTP requests.
- guile-statprof --- an experimental statistical profiler.
There is a mailing list for CVS commit messages; see README for details. There is a mailing list for CVS commit messages; see README for details.
- The guile-core tree is now versioned similarly to the Linux kernel.
Guile now always uses three numbers to represent the version,
i.e. "1.6.5". The first number, 1, is the major version number, the
second number, 6, is the minor version number, and the third number,
5, is the micro version number. Changes in major version number
indicate major changes in Guile.
Minor version numbers that are even denote stable releases, and odd
minor version numbers denote development versions (which may be
unstable). The micro version number indicates a minor sub-revision of
a given MAJOR.MINOR release.
- A default CVS checkout will get the current unstable development
tree. However, for each stable release, a CVS branch is created so
that release (and ongoing maintenance) of the stable version can
proceed independent of the development of the next unstable version.
To check out a particular stable branch, you just need to specify "-r
branch_release-X-Y" to your CVS checkout command (or to any update).
For example, if you wanted to check out the 1.6 stable branch, you
would specify "-r branch_release-1-6".
So, for example, during a normal development cycle, work will proceed
on an unstable version, say 1.5.X, until it is decided that it's time
for a stable release. At that point, a branch named
branch_release-1-6 will be created, and the version numbers on the
HEAD of the CVS tree (the trunk, i.e. what you get by default), will
be changed to reflect the new unstable version 1.7.X. Then unstable
development will proceed on the unstable version, while the stable
1.5.X branch is fixed up for the eventual 1.6.0 release.
Anytime you want to yank an existing checked out tree to the stable
branch, you can run a command like this:
cvs -z3 update -r branch_release-1-6 -Pd
This will yank the working directory over on to the stable release
branch. Note that this directory will track that branch from then on
unless you do something to yank it back to the main (unstable) trunk.
To go back to the unstable branch, you can use
cvs -z3 update -A -Pd
Note that in either case, you should probably make sure you've
commited or removed all local changes before running the commands or
you're likely to have some unexpected results.
Finally note that one approach, should you need to work on both
branches, is to keep two trees checked out, one stable, the other
unstable and you can work in whichever is appropriate.
To save some initial bandwidth, you can check out either the stable
tree or the unstable tree, and then do something like this:
cp -a core-unstable core-1.5
cd core-1.5
cvs -z3 update -r branch_release-1-6 -Pd
- The stable and unstable CVS trees are distinct, and no changes will
automatically propagate between them. If you make changes that need
to show up both places, you'll need to apply the changes both places.
You *might* be able to do this with a cvs command, but often you'll
probably need to apply the changes by hand or risk migrating
superfluous modifications between the two versions. This is
particularly important when moving a change from the unstable branch
to the stable branch.
- In general, please don't be adventurous with the stable branch. We
mostly want bugfixes, documentation improvements, build improvements,
etc., though exceptions will doubtless exist.
- There are a few CVS tagging conventions which follow the Scheme
convention that dashes are used to separate words within a single
symbol, and so dashes bind more tightly than underscores. This means
that foo-bar_baz-bax indicates that foo-bar is somehow separate from
baz-bax. The conventions are as follows:
Branch root tags:
-----------------
anytime just before you create a branch it's a good
idea to create a normal tag so that you can refer to the branch point
on the main trunk as well as on the branch. So please use a tag of
the form
branch-root-release-1-X
or more generally, for other non-release branches:
branch-root_FOO
Branch tags:
------------
for the branch tag itself please use
branch_release-1-6
or more generally, for other non-release branches:
branch_FOO
Merge tags:
-----------
Whenever you're merging a branch back into the trunk (or into another
branch repeatedly) you need to tag the branch each time you merge. If
you don't do that, you won't be able to merge repeatedly without
possibly tedious conflicts. For those tags, we suggest:
branch-merge_SOME-FOO_to_SOME-BAR_1
branch-merge_SOME-FOO_to_SOME-BAR_2
..
As an example, SOME-BAR might be trunk, or even perhaps another branch
like branch-mvo-super-fixes :>
More mundanely, you might have
branch-merge_release-1-6_to_trunk_1
(Merging the stable branch to the trunk like this
will probably be much more common, when it happens, than the
reverse for the reasons mentioned above.
Release tags:
-------------
When releasing a new version of guile, please use:
release_X-Y-Z
i.e.
release_1-6-0
- If you hack on a stable branch, please apply any relevant patches or
fixes to the current unstable version (the main CVS trunk) as well.
Similarly, please back-port any important fixes to the unstable CVS
tree to the current stable branch.
- We check Makefile.am and configure.in files into CVS, but the - We check Makefile.am and configure.in files into CVS, but the
"autogen.sh" script must be run from the top-level to generate the "autogen.sh" script must be run from the top-level to generate the
actual "configure" script that then must be run to create the various actual "configure" script that then must be run to create the various
@ -167,6 +306,9 @@ GCC switches, which are the default in the current configure script:
-O2 -Wall -Wpointer-arith -Wmissing-prototypes -O2 -Wall -Wpointer-arith -Wmissing-prototypes
To make sure of this, you can use the --enable-error-on-warning option
to configure. This option will make GCC fail if it hits a warning.
Note that the warnings generated vary from one version of GCC to the Note that the warnings generated vary from one version of GCC to the
next, and from one architecture to the next (apparently). To provide next, and from one architecture to the next (apparently). To provide
a concrete common standard, Guile should compile without warnings from a concrete common standard, Guile should compile without warnings from
@ -234,7 +376,7 @@ Sat Aug 3 01:27:14 1996 Gary Houston <ghouston@actrix.gen.nz>
* * fports.c (scm_open_file): don't return #f, throw error. * * fports.c (scm_open_file): don't return #f, throw error.
When you've written a NEWS entry and updated the documentation, go When you've written a NEWS entry and updated the documentation, go
ahead and remove the asterisk. I will use the asterisks to find and ahead and remove the asterisk. The asterisks are used to find and
document changes that haven't been dealt with before a release. document changes that haven't been dealt with before a release.
- Please write log entries for functions written in C under the - Please write log entries for functions written in C under the

4
README
View file

@ -3,7 +3,7 @@ anonymous CVS or as a nightly snapshot at some random time after the
Guile 1.4 release. If this were a Guile release, you would not see Guile 1.4 release. If this were a Guile release, you would not see
this message. !!! [fixme: zonk on release] this message. !!! [fixme: zonk on release]
This is a 1.5 development version of Guile, Project GNU's extension This is a 1.7 development version of Guile, Project GNU's extension
language library. Guile is an interpreter for Scheme, packaged as a language library. Guile is an interpreter for Scheme, packaged as a
library that you can link into your applications to give them their library that you can link into your applications to give them their
own scripting language. Guile will eventually support other languages own scripting language. Guile will eventually support other languages
@ -14,7 +14,7 @@ Guile versions with an odd middle number, i.e. 1.5.* are unstable
development versions. Even middle numbers indicate stable versions. development versions. Even middle numbers indicate stable versions.
This has been the case since the 1.3.* series. This has been the case since the 1.3.* series.
The next stable release will be version 1.6.0. The next stable release will be version 1.8.0.
Please send bug reports to bug-guile@gnu.org. Please send bug reports to bug-guile@gnu.org.

114
RELEASE
View file

@ -1,3 +1,4 @@
-*-text-*-
This is a checklist for making Guile releases. This is a checklist for making Guile releases.
It's specific to the FSF's development environment; please don't put It's specific to the FSF's development environment; please don't put
it in the distribution. it in the distribution.
@ -43,7 +44,9 @@ Perry Metzger <perry@piermont.com>
Release Checklists =================================================== Release Checklists ===================================================
There are basically two phases to doing a release: There are basically three phases to doing a release:
* "BRANCHING": Creating a stable development branch in CVS.
* "SPIFFING": Updating NEWS, README, INSTALL. Running tests. Getting * "SPIFFING": Updating NEWS, README, INSTALL. Running tests. Getting
people to try builds on various machines. Getting everything people to try builds on various machines. Getting everything
@ -53,18 +56,37 @@ There are basically two phases to doing a release:
the FSF to put the disty on ftp.gnu.org. Posting announcements. the FSF to put the disty on ftp.gnu.org. Posting announcements.
The "Spiffing" phase you might go through several times as you The "Spiffing" phase you might go through several times as you
discover problems. The "Punting" phase you do only once. discover problems. The "Branching" and "Punting" phases you do only
once.
Branching checklist:
Spiffing checklist (NOTE: these instructions are out of date now that * Announce when you're about to make the branch so that you have a
we're using cvs branches for stable vs unstable). greater chance of people holding off on edits during the short
period while you're branching.
* Make sure you're on the main trunk (see HACKING), and then create
the branch-root tag. i.e. -r branch-root_release-1-6. (Add the
exact command here next time I do it.)
* Now create the branch with the branch tag. i.e. -r
branch_release-1-6. (Add exact command here next time I do it.)
* Change the version numbers in GUILE-VERSION and README on the main
branch to reflect the new unstable version i.e. 1.7.0, if you're
currently creating the 1.6.X branch.
Spiffing checklist:
* Make sure you're working on the stable branch (see HACKING for
details). Note that after following the branch checklist above, you
won't necessarily be.
* Do a `cvs update -A', to get rid of any sticky tags in your working
directory.
* Check for files that have changed a lot, but do not have up-to-date * Check for files that have changed a lot, but do not have up-to-date
copyright notices. This can be as simple as doing: copyright notices. This can be as simple as doing:
grep 'Copyright' * | grep -v 1999 grep 'Copyright' * | grep -v 1999
and looking for files you know you've worked on a lot. and looking for files you know you've worked on a lot.
* Make sure NEWS, INSTALL, AUTHORS and THANKS and the docs are up to date: * Make sure NEWS, INSTALL, AUTHORS and THANKS and the docs are up to date:
+ Scan the ChangeLogs for user-visible changes, marked with an asterisk + Scan the ChangeLogs for user-visible changes, marked with an asterisk
at the left margin. at the left margin.
@ -75,24 +97,30 @@ we're using cvs branches for stable vs unstable).
+ Fact-check INSTALL. + Fact-check INSTALL.
+ Make sure AUTHORS and THANKS are up-to-date (see also TODO). + Make sure AUTHORS and THANKS are up-to-date (see also TODO).
+ Remove finished items from TODO (those marked w/ "+"). + Remove finished items from TODO (those marked w/ "+").
* Make sure the downloading addresses and filenames in README are * Make sure the downloading addresses and filenames in README are
current. (But don't bump the version number yet. We do that below.) current. (But don't bump the version number yet. We do that below.)
* Check that the versions of aclocal, automake, autoconf, and autoheader * Check that the versions of aclocal, automake, autoconf, and autoheader
in your PATH match those given in HACKING. Note that the `make in your PATH match those given in HACKING. Note that the `make
dist' process always invokes these tools, even when all the dist' process always invokes these tools, even when all the
generated files are up to date. generated files are up to date.
Make specifically sure that the files in libltdl are generated using Make specifically sure that the files in libltdl are generated using
the same tools as the rest. the same tools as the rest.
* Rebuild all generated files in the source tree: * Rebuild all generated files in the source tree:
+ Install the .m4 files where aclocal will find them. + run ./autogen.sh
+ Run aclocal.
+ Run autoconf.
+ Run autoheader.
+ Run automake.
* Verify that Guile builds and runs in your working directory. * Verify that Guile builds and runs in your working directory.
* Run the test suite, in guile-core/test-suite.
* Run a "make check".
* Commit all changes to the CVS repository. * Commit all changes to the CVS repository.
* Build a test distribution. * Build a test distribution.
+ update GUILE-VERSION each time you make a test distribution. For
example, just before the 1.6.0 release, we went through some
number of 1.5.X test releases.
+ BEFORE doing 'make dist', configure the source tree for build + BEFORE doing 'make dist', configure the source tree for build
in the same tree with configuration options in the same tree with configuration options
--enable-maintainer-mode --enable-debug-malloc --with-threads. --enable-maintainer-mode --enable-debug-malloc --with-threads.
@ -105,6 +133,7 @@ we're using cvs branches for stable vs unstable).
(We currently use a kludge which edits the dependencies generated (We currently use a kludge which edits the dependencies generated
by automake so that Guile can be built in a directory separate by automake so that Guile can be built in a directory separate
from the source tree also with non-GNU make programs.) from the source tree also with non-GNU make programs.)
* Give the test disty to various people to try. Here's what you should do: * Give the test disty to various people to try. Here's what you should do:
+ Unset GUILE_LOAD_PATH. + Unset GUILE_LOAD_PATH.
+ Remove automake and autoconf from your path, or turn off their + Remove automake and autoconf from your path, or turn off their
@ -117,39 +146,70 @@ we're using cvs branches for stable vs unstable).
Once you've got a disty that seems pretty solid: Once you've got a disty that seems pretty solid:
* Choose new interface numbers for shared libraries. * Make sure the shared library libtool versioning numbers are correct,
* Update the version numbers in GUILE-VERSION and README. (There are but first make sure you understand "Libtool's versioning system" in
many places in README that need updating!) The Guile version the libtool info pages. Guile is going to be versioning it's shared
number should have one of the following forms: libraries independently, so follow the libtool rules for choosing
N.M - a major release version numbers, but make sure to keep in mind that not everyone is
N.M.L, where L is even - a minor release as good about this as they should be. If a library even changes the
N.M.L, where L is odd - sources from CVS or nightly snapshot layout of a data structure that's part of it's API in a backward
incompatible way, even if that data structure is handled as an
opaque object in the API, that library is probably no longer
compatible with previous versions.
A canonical ugly problem is this. Imagine you have libfoo and
libbar that both are linked against libbaz. Now imagine that you
create a libwhatever that uses both libfoo and libbar. What you
don't want to have happen is libfoo and libbar to be linked against
different versions of libbaz that produce incompatible instances of
the "same" data structure, and then have libwhatever get one version
of this data structure from libbaz via libfoo, and pass it back to a
different version of libbaz via libbar, a version of libbaz that
can't handle the newer/older struct from the other libbaz.
* In general, there will be a number of libraries in guile that will
have to be versioned, and it would be best if the people who know
the most about the individual libs decide what the apropriate
CURRENT, REVISION, and AGE numbers for each one are. In general,
though, you have to be conservative. If no one is sure that the
libs are still compatible, then you *must* make the appropriate
changes under the assumption that they're not. Getting this wrong
is very BAD(TM).
* Make the final update to the version numbers in GUILE-VERSION and
README. (There are many places in README that need updating!). See
HACKING for more information on how the version numbers are to be
chosen.
* Reformat the names in THANKS. * Reformat the names in THANKS.
* Do a `cvs update -A' of the whole tree, to look for any stray
* Do a `cvs -z3 update -Pd' of the whole tree, to look for any stray
uncommitted or accidental changes. uncommitted or accidental changes.
* Commit your changes. * Commit your changes.
* Make one last test distribution. * Make one last test distribution.
Punting checklist: Punting checklist:
* Add "Guile N.M released." entry to the top-level ChangeLog, and commit it. * Add "Guile N.M released." entry to the top-level ChangeLog, and commit it.
* Tag the entire source tree with a tag of the form "release_N_M"
or "release_N_M_L". * Tag the entire source tree with a tag of the form "release_X-Y-Z",
i.e for release 1.6.0, use release_1-6-0
* Do a 'make dist'. * Do a 'make dist'.
* Put the distribution up for FTP somewhere, and send mail to * Put the distribution up for FTP somewhere, and send mail to
ftp-upload@gnu.org, asking them to put it on prep. ftp-upload@gnu.org, asking them to put it on prep.
* Send an announcement message to gnu-announce@gnu.org. Put a brief * Send an announcement message to gnu-announce@gnu.org. Put a brief
summary of the changes in this release first, then "Obtaining summary of the changes in this release first, then "Obtaining
Guile", "Thanks", "About This Distribution," and "Nightly Guile", "Thanks", "About This Distribution," and "Nightly
Snapshots." If I remember correctly, the moderator will delay it Snapshots." If I remember correctly, the moderator will delay it
until the distribution appears on ftp.gnu.org. The announcement until the distribution appears on ftp.gnu.org. The announcement
text should be mostly taken from Guile's README file. text should be mostly taken from Guile's README file.
* Notify freshmeat.net, although they're probably watching anyway. * Notify freshmeat.net, although they're probably watching anyway.
(They got the 1.3 release just fine.) I have no idea if (They got the 1.3 release just fine.) I have no idea if
www.bowerbird.com.au will be something anyone refers to, but Guile www.bowerbird.com.au will be something anyone refers to, but Guile
does have an entry there. does have an entry there.
* Tweak the version numbers in GUILE-VERSION, and README to indicate
that the sources are a snapshot again. Snapshots should have
version numbers of the form "N.M.L", where L is odd.
* Start a new section of the NEWS file.
* Start a new THANKS file.

View file

@ -1,3 +1,9 @@
2001-08-15 Rob Browning <rlb@defaultvalue.org>
* Makefile.am (libguile_la_LDFLAGS): use libtool interface version
variables.
(libpath.h): change libguileversion to libguileinterface.
2001-08-07 Marius Vollmer <mvo@zagadka.ping.de> 2001-08-07 Marius Vollmer <mvo@zagadka.ping.de>
* Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and * Makefile.am (EXTRA_DIST): Distribute ChangeLog-1996-1999 and

View file

@ -1,3 +1,8 @@
2001-08-15 Rob Browning <rlb@defaultvalue.org>
* Makefile.am (libqthreads_la_LDFLAGS): use libtool interface version
variables.
2000-06-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> 2000-06-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
* Makefile.am (OMIT_DEPENDENCIES): Defined to contain the list of * Makefile.am (OMIT_DEPENDENCIES): Defined to contain the list of