Path to this page:
Subject: CVS commit: pkgsrc/sysutils/etcmanage
From: Greg Troxel
Date: 2014-10-09 14:49:21
Message id: 20141009124921.E9AE998@cvs.netbsd.org
Log Message:
Update to 0.9.1. Note that this is a fairly complete rototill from
the previous version. However, there are now tests (which pass), and
I've been running this version since June.
New in Version 0.9.1, released 2014-06-09
* When installing a new config file, create the config file's parent
directories if they don't exist. If a directory is created, the
permissions and ownership are copied from the corresponding
directory in the upstream config file hierarchy.
* Add a new --version (-V) option.
* Add a new --help (-h) option.
* etcmanage now exits with an error if an unsupported argument is
specified.
* 'etcmanage --remove' no longer warns if the given file was not
already in the database.
New in Version 0.9, released 2014-05-21
* Use Perl's Digest::MD5 module instead of the md5 utility for
compatibility with other operating systems.
* Add a new --destdir option. If specified, the filenames for all
operations will be prefixed with the provided directory name.
This makes it possible to use etcmanage on a chroot or DESTDIR
environment.
* Don't automatically update the hash stored in the database if a
live config file is modified and upstream is changed to match.
This matches the behavior when both the live file and upstream
file have been deleted (the record isn't removed from the
database) and it provides an important invariant: If the state of
the live config file does not match the state of the database
record, nothing is modified.
* Fix handling of removed files during 'etcmanage --update': If a
managed file is deleted, treat it as a manual modification---don't
restore the upstream file.
* Improve logging:
- Log problems updating config files to standard error (STDERR)
instead of standard output (STDOUT).
- During 'etcmanage --update', log "UNMANAGED_EQ_UPSTREAM" when
encoutering a new upstream file that is already installed with
identical contents.
- During 'etcmanage --update', log "UNMANAGED_NEQ_UPSTREAM" to
STDERR when encoutering a new upstream file that is already
installed but has different contents.
- Log three distinct types of "MISSING" messages instead of one:
* "MISSING" is logged when the hash of the upstream file matches
the database entry
* "MISSING;UPSTREAM_WITHDRAWN" is logged when the upstream file
doesn't exist
* "MISSING;UPSTREAM_DIFFERENT" is logged when the hash of the
upstream file differs from the hash stored in the database
- Use the term "MODIFIED" instead of "CONFLICT" and \
split it into
three distinct types of "MODIFIED" messages instead of one:
* "MODIFIED" is logged when the hash of the upstream file
matches the database entry
* "MODIFIED;UPSTREAM_WITHDRAWN" is logged when the upstream file
doesn't exist
* "MODIFIED;UPSTREAM_DIFFERENT" is logged when the hash of the
upstream file differs from the hash stored in the database
* During 'etcmanage --update <dir>', visit all files in '<dir>', not
just '<dir>/etc'. This makes it possible to use etcmanage to
manage files outside of '/etc', but is unfortunately not
backwards-compatible: 'etcmanage --update' can no longer be
pointed to a DESTDIR containing a complete NetBSD build (or else
all operating system files---not just config files---will be
managed by etcmanage).
* During 'etcmanage --generate-manifest <dir>', visit all files in
'<dir>', not just '<dir>/etc'. This makes it easier to use
etcmanage to manage files outside of '/etc', but is unfortunately
not backwards-compatible: 'etcmanage --generate-manifest' can no
longer be pointed to a DESTDIR containing a complete NetBSD build
(or else all operating system files---not just config files---will
be included in the manifest).
* Add support for systems that don't have an /etc/services file or
don't consider the /etc/services file to be a configuration file.
* Fix command line parsing. It is now possible to specify multiple
commands at once (including repeating a command) and they will be
executed in the specified order.
* Add a '--db' option to specify the database filename.
* Add a new '--manual' command to mark a file as manually managed.
This differs from '--remove' in that a future '--update' will
never automatically cause the file to become managed. It also
results in different log messages being printed when a config file
has been modified, and these log messages are printed to STDOUT
instead of STDERR (because they are expected conditions).
* Refuse to add abnormal pathnames to the database. A pathname is
considered abnormal if it has any of the following properties:
- contains whitespace
- begins with '#'
- is the empty string
- is relative
- contains '/../', '/./', or superfluous slashes
Pathnames with the first three properties in the above list cannot
be represented in a manifest. Relative pathnames do not make
sense (what are they relative to?). Pathnames with '/../', '/./',
or superfluous slashes can result in unintentional duplicate
database entries that conflict with each other.
* Various code cleanups.
* Various build system improvements.
Files: