Improve readability of NEWS file when viewed raw.

This commit is contained in:
Adam Spiers 2012-01-09 16:42:40 +00:00
parent 1efb786140
commit e466732bbf

199
NEWS
View file

@ -1,65 +1,97 @@
News file for Stow. News file for Stow.
* Changes in version 2.1.3 * Changes in version 2.1.3
** ./configure now checks for Perl modules required by the test suite. ** ./configure now checks for Perl modules required by the test suite.
* Changes in version 2.1.2 * Changes in version 2.1.2
Many thanks to Stefano Lattarini for help with numerous autoconf and Many thanks to Stefano Lattarini for help with numerous autoconf and
automake issues which are addressed in this release. automake issues which are addressed in this release.
** Significantly improve the handling of --with-pmdir. ** Significantly improve the handling of --with-pmdir.
*** Calculation of the default value for --with-pmdir is now done safely in Perl. *** Calculation of the default value for --with-pmdir is now done safely in Perl.
Previously non-POSIX-compliant shells could cause issues. Previously non-POSIX-compliant shells could cause issues.
*** The output of ./configure and make are now much more helpful. *** The output of ./configure and make are now much more helpful.
*** The Makefile will now check whether pmdir is in Perl's built-in @INC. *** The Makefile will now check whether pmdir is in Perl's built-in @INC.
If not, it will insert a If not, it will insert a
use lib "..."; use lib "...";
line into the generated stow script to ensure that it can always line into the generated stow script to ensure that it can always
locate the Perl modules without needing to manually set PERL5LIB. locate the Perl modules without needing to manually set PERL5LIB.
*** Updated INSTALL and HOWTO-RELEASE accordingly. *** Updated INSTALL and HOWTO-RELEASE accordingly.
** ./configure now aborts if Perl isn't found. ** ./configure now aborts if Perl isn't found.
** Ensured the ChangeLog is up-to-date when making a new distribution. ** Ensured the ChangeLog is up-to-date when making a new distribution.
** Fixed bug with `make clean' removing files which the user may not be able to rebuild. ** Fixed bug with `make clean' removing files which the user may not be able to rebuild.
* Changes in version 2.1.1 * Changes in version 2.1.1
** Fixed bug where ./configure --with-pmdir=X was ineffectual. ** Fixed bug where ./configure --with-pmdir=X was ineffectual.
** Calculated the correct default value for pmdir based on the local Perl installation. ** Calculated the correct default value for pmdir based on the local Perl installation.
** Fixed some automake issues (thanks to Stefano Lattarini for spotting these!) ** Fixed some automake issues (thanks to Stefano Lattarini for spotting these!)
** Improved various bits of documentation. ** Improved various bits of documentation.
* Changes in version 2.1.0 * Changes in version 2.1.0
** Major refactoring of code into separate Stow and Stow::Util Perl modules. ** Major refactoring of code into separate Stow and Stow::Util Perl modules.
** Added support for ignore list files. ** Added support for ignore list files.
** Added support for CPAN-style installation and distribution via Module::Build. ** Added support for CPAN-style installation and distribution via Module::Build.
** Introduced `make test' target and significantly tightened up test suite. ** Introduced `make test' target and significantly tightened up test suite.
** Very large number of code and documentation fixes (over 80 commits since version 2.0.1). ** Very large number of code and documentation fixes (over 80 commits since version 2.0.1).
** The '--conflicts' option has been removed. ** The '--conflicts' option has been removed.
Stow will always show conflicts if they are found during the scanning Stow will always show conflicts if they are found during the scanning
phase. phase.
** Improved debugging output. ** Improved debugging output.
** Converted man page to POD format. ** Converted man page to POD format.
** Include PDF, and both split- and single-page HTML versions of manual in the distribution. ** Include PDF, and both split- and single-page HTML versions of manual in the distribution.
** Fixed code style consistency issues. ** Fixed code style consistency issues.
** Running configure from outside the source tree now works. ** Running configure from outside the source tree now works.
** `make distcheck' now works. ** `make distcheck' now works.
* Changes in version 2.0.1 * Changes in version 2.0.1
** Defer operations until all potential conflicts have been assessed. ** Defer operations until all potential conflicts have been assessed.
We do this by traversing the installation image(s) and recording the We do this by traversing the installation image(s) and recording the
actions that need to be performed. Redundant actions are factored out, actions that need to be performed. Redundant actions are factored out,
e.g., we don't want to create a link that we will later remove in order to e.g., we don't want to create a link that we will later remove in order to
create a directory. Benefits of this approach create a directory. Benefits of this approach:
1. Get to see _all_ the conflicts that are blocking an installation: 1. Get to see _all_ the conflicts that are blocking an installation:
you don't have to deal with them one at a time. you don't have to deal with them one at a time.
2. No operations are be performed if _any_ conflicts are detected: 2. No operations are be performed if _any_ conflicts are detected:
a failed stow will not leave you with a partially installed a failed stow will not leave you with a partially installed
package. package.
3. Minimises the set of operations that need to be performed. 3. Minimises the set of operations that need to be performed.
4. Operations are executed as a batch which is much faster 4. Operations are executed as a batch which is much faster
This can be an advantage when upgrading packages on a live system This can be an advantage when upgrading packages on a live system
where you want to minimise the amount of time when the package is where you want to minimise the amount of time when the package is
unavailable. unavailable.
** The above fixes the false conflict problem mentioned in the info file. ** The above fixes the false conflict problem mentioned in the info file.
@ -75,70 +107,72 @@ create a directory. Benefits of this approach
** Default command line arguments set via '.stowrc' and '~/.stowrc' files. ** Default command line arguments set via '.stowrc' and '~/.stowrc' files.
Contents of these files are parsed as though they occurred first on the Contents of these files are parsed as though they occurred first on
command line. the command line.
** Support multiple actions per invocation. ** Support multiple actions per invocation.
In order for this to work, we had to add a new (optional) command line arg In order for this to work, we had to add a new (optional) command line arg
(-S) to specify packages to stow. For example, to update an installation (-S) to specify packages to stow. For example, to update an installation
of emacs you can now do of emacs you can now do
stow -D emacs-21.3 -S emacs-21.4a stow -D emacs-21.3 -S emacs-21.4a
which will replace emacs-21.3 with emacs-21.4a. which will replace emacs-21.3 with emacs-21.4a.
You can mix and match any number of actions, e.g., You can mix and match any number of actions, e.g.,
stow -S p1 p2 -D p3 p4 -S p5 -R p6 stow -S p1 p2 -D p3 p4 -S p5 -R p6
will unstow p3, p4 and p6, then stow p1, p2, p5 and p6. will unstow p3, p4 and p6, then stow p1, p2, p5 and p6.
** New (repeatable) command line arg: --ignore='<regex>' ** New (repeatable) command line arg: --ignore='<regex>'
This suppresses operating on a file matching the regex (suffix), e.g., This suppresses operating on a file matching the regex (suffix),
e.g.
--ignore='~' --ignore='\.#.*' --ignore='~' --ignore='\.#.*'
will ignore emacs and CVS backup files (suitable for ~/.stowrc file). will ignore emacs and CVS backup files (suitable for ~/.stowrc file).
(I opted for Perl regular expressions because they are more powerful and (I opted for Perl regular expressions because they are more
easier to implement). powerful and easier to implement).
** New (repeatable) command line arg: --defer='<regex>' ** New (repeatable) command line arg: --defer='<regex>'
This defers stowing a file matching the regex (prefix) if that file is This defers stowing a file matching the regex (prefix) if that file
already stowed to a different package, e.g., is already stowed to a different package, e.g.,
--defer='man' --defer='info' --defer='man' --defer='info'
will cause stow to skip over pre-existing man and info pages. will cause stow to skip over pre-existing man and info pages.
Equivalently, you could use --defer='man|info' since the argument is just Equivalently, you could use --defer='man|info' since the argument
a Perl regex. is just a Perl regex.
** New (repeatable) command line arg: --override='<regex>' ** New (repeatable) command line arg: --override='<regex>'
This forces a file matching the regex (prefix) to be stowed even if the This forces a file matching the regex (prefix) to be stowed even if
file is already stowed to a different package, e.g., the file is already stowed to a different package, e.g.
--override='man' --override='info' --override='man' --override='info'
will unstow any pre-existing man and info pages that would conflict with will unstow any pre-existing man and info pages that would conflict
the file we are trying to stow. with the file we are trying to stow.
Equivalently, you could use --override='man|info' since the argument is Equivalently, you could use --override='man|info' since the
just a Perl regex. argument is just a Perl regex.
** The above gives the ability to manage packages with common content. ** The above gives the ability to manage packages with common content.
For example, man pages that are shared by a number of CPAN packages. For example, man pages that are shared by a number of CPAN
Using multiple stow directories and .stowrc files can also simplify packages. Using multiple stow directories and .stowrc files can
things. In our setup we use the standard /usr/local/stow directory for also simplify things. In our setup we use the standard
packages to be installed in /usr/local. Since we install a large number /usr/local/stow directory for packages to be installed in
of extra Perl packages (currently about 300) we use an additional stow /usr/local. Since we install a large number of extra Perl packages
directory: /usr/local/stow/perl-5.8.8-extras. Both stow directories (currently about 300) we use an additional stow directory:
contain a '.stow' file so that they collaborate appropriately. I then use /usr/local/stow/perl-5.8.8-extras. Both stow directories contain a
the following .stowrc file in /usr/local/stow/perl-5.8.8-extras '.stow' file so that they collaborate appropriately. I then use
the following .stowrc file in /usr/local/stow/perl-5.8.8-extras
--dir=/usr/local/stow/perl-5.8.8-extras --dir=/usr/local/stow/perl-5.8.8-extras
--target=/usr/local --target=/usr/local
@ -148,54 +182,77 @@ the following .stowrc file in /usr/local/stow/perl-5.8.8-extras
--ignore='\.packlist' --ignore='\.packlist'
--ignore='\.bs' --ignore='\.bs'
When I stow packages from there, they automatically override any man pages When I stow packages from there, they automatically override any
and binaries that may already have been stowed by another package or by man pages and binaries that may already have been stowed by another
the core perl-5.8.8 installation. For example, if you want to upgrade the package or by the core perl-5.8.8 installation. For example, if
Test-Simple package, you need to override all the man pages that would you want to upgrade the Test-Simple package, you need to override
have been installed by the core package. If you are upgrading CPAN, you all the man pages that would have been installed by the core
will also have to override the pre-existing cpan executable. package. If you are upgrading CPAN, you will also have to override
the pre-existing cpan executable.
** By default, search less aggressively for invalid symlinks when unstowing. ** By default, search less aggressively for invalid symlinks when unstowing.
That is, we only search for bad symlinks in the directories explicitly That is, we only search for bad symlinks in the directories
mentioned in the installation image, and do not dig down into other explicitly mentioned in the installation image, and do not dig down
subdirs. Digging down into other directories can be very time consuming into other subdirs. Digging down into other directories can be
if you have a really big tree (like with a couple of Oracle installations very time consuming if you have a really big tree (like with a
lying around). In general the old behaviour is only necessary when you couple of Oracle installations lying around). In general the old
have really stuffed up your installation by deleting a directory that has behaviour is only necessary when you have really stuffed up your
already been stowed. Doing that on a live system is somewhat crazy and installation by deleting a directory that has already been stowed.
hopefully rare. We provide an option '-p|--compat' to enable the old Doing that on a live system is somewhat crazy and hopefully rare.
behaviour for those needing to patch up mistakes. We provide an option '-p|--compat' to enable the old behaviour for
those needing to patch up mistakes.
** New chkstow utility for checking the integrity of the target directory. ** New chkstow utility for checking the integrity of the target directory.
** Implement a test suite and support code. ** Implement a test suite and support code.
This was built before implementing any of the extra features so I could This was built before implementing any of the extra features so I
more easily check for equivalent functionality. The initial code base had could more easily check for equivalent functionality. The initial
to be refactored substantially to allow for testing. The test suite is code base had to be refactored substantially to allow for testing.
not exhaustive, but it should provide enough to check for regressions. The test suite is not exhaustive, but it should provide enough to
check for regressions.
* Changes in version 1.3.3 * Changes in version 1.3.3
** Now requires Perl 5.005 or later ** Now requires Perl 5.005 or later
** Initially empty directories are not removed anymore ** Initially empty directories are not removed anymore
** Removed buggy fastcwd (we use POSIX::getcwd instead) ** Removed buggy fastcwd (we use POSIX::getcwd instead)
** Fixed bug when the common Parent of Target dir and Stow dir was "/" ** Fixed bug when the common Parent of Target dir and Stow dir was "/"
** Fixed bug when handling directories named "0" ** Fixed bug when handling directories named "0"
** Stow now only warns the user if a directory is unreadable during unstowing. ** Stow now only warns the user if a directory is unreadable during unstowing.
* Changes in version 1.3: * Changes in version 1.3:
** Added --restow option. ** Added --restow option.
** Fixed handling of slashes in package names. ** Fixed handling of slashes in package names.
** Expanded configure-time search for Perl binary. ** Expanded configure-time search for Perl binary.
* Changes in version 1.2: * Changes in version 1.2:
** Dependency on `pwd' removed. ** Dependency on `pwd' removed.
** Perl 4 compatibility fixes. ** Perl 4 compatibility fixes.
** Manual expanded even more. ** Manual expanded even more.
* Changes in version 1.1: * Changes in version 1.1:
** Long and short options now accepted. ** Long and short options now accepted.
** Manual expanded. ** Manual expanded.
** `make clean' removes stow (which is generated from stow.in). ** `make clean' removes stow (which is generated from stow.in).
* Initial public release (v1.0) of Stow. * Initial public release (v1.0) of Stow.
* emacs local variables * emacs local variables
Local Variables: Local Variables:
mode: org mode: org