X Strike Force XFree86 SVN commit: r1757 - trunk/debian
Author: branden
Date: 2004-08-28 01:40:48 -0500 (Sat, 28 Aug 2004)
New Revision: 1757
Modified:
trunk/debian/CHANGESETS
Log:
Add missing changeset entry for the app-defaults/xkb migration merge.
Thanks to Fabio for noticing that I overlooked it.
Modified: trunk/debian/CHANGESETS
===================================================================
--- trunk/debian/CHANGESETS 2004-08-28 05:49:17 UTC (rev 1756)
+++ trunk/debian/CHANGESETS 2004-08-28 06:40:48 UTC (rev 1757)
@@ -435,4 +435,50 @@
xserver-xfree86 (<< 4.3.0.dfsg.1-7)'!"
1746, 1747, 1748, 1749, 1750
+Rewrite migration of app-defaults (in libxt6) and xkb (in libx11-6)
+directories.
++ Enhance the shell libary with new functions:
+ - Implement check_symlink() and change check_symlinks_and_warn() and
+ check_symlinks_and_bomb() to use it.
+ - Implement make_symlink_sane(). Ensure that the specified symbolic
+ link symlink exists, and points to the specified target. If symlink
+ does not exist, create it and point it at target. If symlink exists
+ but is not a symbolic link, back it up. If symlink exists, is a
+ symbolic link, but points to the wrong location, fix it. If symlink
+ exists, is a symbolic link, and already points to target, do nothing.
+ This function wouldn't be needed if ln had an -I, --idempotent option.
+ - Implement migrate_dir_to_symlink(). Per Debian Policy section 6.5.4,
+ "A directory will never be replaced by a symbolic link to a directory
+ or vice versa; instead, the existing state (symlink or not) will be
+ left alone and dpkg will follow the symlink if there is one." We have
+ to do it ourselves. This function moves the contents of old_location,
+ a directory, into new_location, a directory, then makes old_location a
+ symbolic link to new_location. old_location need not exist, but if it
+ does, it must be a directory (or a symlink to a directory). If it is
+ not, it is backed up. If new_location exists already and is not a
+ directory, it is backed up.
++ Add config scripts for libx11-6 and libxt6, which detect if
+ /usr/X11R6/lib/X11/{app-defaults,xkb} is a directory but not a symlink,
+ and use debconf to prompt the user (at low priority) whether the
+ directories should be moved. If the user says no, abort the script. If
+ the user says yes (default), start the migration with
+ migrate_dir_to_symlink().
++ Update preinst scripts to use debconf as the configs script do; this is
+ unusual but necessary because if we're going to do the migration we need
+ to start before any other packages (which may use the old directories)
+ are unpacked.
++ In the preinst scripts, call check_symlink(), and if that fails, call
+ make_symlink_sane(). Stop calling check_symlinks_and_warn().
++ Update postinst scripts to indicate that migration is completed.
++ Update postrm scripts to run migration in reverse if it had been started
+ and the package installation or upgrade is aborted.
++ We keep shipping /etc/X11/{app-defaults,xkb} symlinks as part of the
+ package payloads, because manipulating them in the preinst isn't enough
+ -- dpkg will remove "disappearing" files from the system *after* the
+ preinst runs but before the postinst does, leaving a window for packages
+ using the legacy paths to unpack to the old location with no symlink to
+ redirect them, which is precisely what we don't want (see section 6.5 of
+ the Debian Policy Manual).
+ 1753, 1757
+
vim:set ai et sts=4 sw=4 tw=80:
Reply to: