Rob Browning wrote: > Peter S Galbraith <[EMAIL PROTECTED]> writes: > > > Look, you'll the emacs maintainer, so you should know, which means > > I'm probably wrong and should test it before I go on. But even > > going from, say, 20.2 to 20.7, when emacs-20.2 is removed the > > emacsen-remove scripts get called and cruft gets deleted. Then > > emacs-20.7 is installed and cruft (compilation logs) are recreated > > in a different place. The only problem is that the add-on > > package-supplied emacsen-remove scripts didn't clean up the > > compilation logs correctly. > > OK, you and I were miscommunicating on this point. When you said > emacsen-remove scripts the first time, I thought you'd meant I should > add code to the scripts *in* emacsen-common, when it looks like what > you really meant was the removal scripts in the add-on packages.
Right. > Given that, I think you're right on this point. Good stuff. > So the only point we haven't resolved is whether or not add-on > packages should clean up old-cruft, or just be expected not to > generate future cruft. I'm not sure. I'd do something like you said: > Which is why I'd recommend this instead: > > rm -f /usr/share/emacs/20.5/site-lisp/gri-mode.CompilationLog.gz > rm -f /usr/share/emacs/20.6/site-lisp/gri-mode.CompilationLog.gz > > Since that actually cleans up the cruft we know about, and more lines > can be added later if other people discover more in the future. > > What would be wrong with that? We could/should only specify known versions of (x)emacs prior to now. e.g. my remove script could be: #!/bin/sh set -e flavour=$1 package=gri source=/usr/share/emacs/site-lisp/ destination=/usr/share/${flavour}/site-lisp/ if [ ${flavour} != emacs ] then echo remove/${package}: Purging byte-compiled files for flavour ${flavour} rm -f ${destination}/gri-mode.elc rm -f ${destination}/gri-mode.CompilationLog.gz rm -f /usr/share/emacs/20.3/site-lisp/gri-mode.CompilationLog.gz rm -f /usr/share/emacs/20.4/site-lisp/gri-mode.CompilationLog.gz rm -f /usr/share/emacs/20.5/site-lisp/gri-mode.CompilationLog.gz rm -f /usr/share/emacs/20.6/site-lisp/gri-mode.CompilationLog.gz else echo remove/${package}: Ignoring emacsen flavour ${flavour} fi exit 0; with other `rm -f' lines for other flavours. The only glitch is that we can't really be sure that the package associated with the file we're deleting has actually been removed. e.g. should I include rm -f /usr/share/emacs/19.34/site-lisp/gri-mode.CompilationLog.gz ? Or should the script first check that the package isn't installed: $ dpkg --get-selections | egrep "^emacs19.+[^e]install" emacs19 install In my case, deleting any gri-mode.CompilationLog.gz file can't be that bad anyway. I doubt many users would care. Peter