Subject: CVS commit: pkgsrc/mk/install
To: None <pkgsrc-changes@NetBSD.org>
From: Johnny C. Lam <jlam@netbsd.org>
List: pkgsrc-changes
Date: 04/25/2006 19:54:39
Module Name:	pkgsrc
Committed By:	jlam
Date:		Tue Apr 25 19:54:39 UTC 2006

Modified Files:
	pkgsrc/mk/install: bsd.pkginstall.mk deinstall dirs files install

Log Message:
First try at fixing a deficiency in the package +INSTALL scripts,
where they don't verify that any pre-existing config files and
directories have the correct permissions.  For example, if you are
upgrading a package to a newer version and the config files and
directories used by the package need to have different permissions
than in previous versions of the package, then the new package may
fail to work because it can't access pre-existing files and directories.

This commit improves on this by doing the following:

(1) Teach the +FILES and +DIRS scriptlets two new actions "PERMS" and
    "CHECK-PERMS".  "PERMS" fixes permissions on existing files and
    directories.  "CHECK-PERMS" will verify those same bits and warn
    the user when they are wrong.  The "CHECK-PERMS" actions for the
    two scriptlets are run immediately after the "ADD" actions.

(2) Add a new variable PKG_CONFIG_PERMS that controls whether the
    "PERMS" action will automatically fix permissions.  PKG_CONFIG_PERMS
    is only consulted if PKG_CONFIG is "yes".  PKG_CONFIG_PERMS can
    be set in the shell environment when running pkg_add, e.g.:

        export PKG_CONFIG=yes
        export PKG_CONFIG_PERMS=yes
        pkg_add /path/to/binary/package.tgz

    The default value of PKG_CONFIG_PERMS embedded into the +INSTALL
    script may also be set in /etc/mk.conf.  This value defaults to
    "no", so that by default, the +INSTALL script will not modify or
    destroy any existing configuration files or directories.

The +INSTALL script will now always warn you if there are files or
directories whose permissions differ from what the package is expecting
to use, and if PKG_CONFIG_PERMS is set to "yes", then it will go ahead
and fix those permissions for you automatically.


To generate a diff of this commit:
cvs rdiff -r1.47 -r1.48 pkgsrc/mk/install/bsd.pkginstall.mk
cvs rdiff -r1.39 -r1.40 pkgsrc/mk/install/deinstall
cvs rdiff -r1.10 -r1.11 pkgsrc/mk/install/dirs pkgsrc/mk/install/files
cvs rdiff -r1.45 -r1.46 pkgsrc/mk/install/install

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.