From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Giorgos Keramidas Newsgroups: gmane.emacs.help Subject: Re: GNU Emacs 23.0.60.1 (i386-mingw-nt5.1.2600) of 2008-08-06 on LENNART-69DE564 (patched): error "Required feature `diary-loaddefs' was not provided" Date: Sun, 10 Aug 2008 05:08:14 +0300 Organization: SunSITE.dk - Supporting Open source Message-ID: <87bq01lj01.fsf@kobe.laptop> References: <15Emk.26$E36.15719654@news.odn.de> <662F8BC9-036A-4A67-96C4-C6C70BD3E5AE@Web.DE> <489C612A.1040600@gmail.com> <489CBF52.6010101@yahoo.de> <489E06AB.7000708@yahoo.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1218336044 9054 80.91.229.12 (10 Aug 2008 02:40:44 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 10 Aug 2008 02:40:44 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Aug 10 04:41:35 2008 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1KS0s4-0003xj-4t for geh-help-gnu-emacs@m.gmane.org; Sun, 10 Aug 2008 04:41:28 +0200 Original-Received: from localhost ([127.0.0.1]:56656 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KS0r8-00059F-D4 for geh-help-gnu-emacs@m.gmane.org; Sat, 09 Aug 2008 22:40:30 -0400 Original-Path: news.stanford.edu!newsfeed.stanford.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!feed118.news.tele.dk!dotsrc.org!filter.dotsrc.org!news.dotsrc.org!not-for-mail Original-Newsgroups: gnu.emacs.help User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (berkeley-unix) Cancel-Lock: sha1:f2mBIAVwi0UnhfJskI4Hc/VZLBI= Original-Lines: 175 Original-NNTP-Posting-Host: 62.1.60.83 Original-X-Trace: news.sunsite.dk DXC=j3l\]n?i>iHc5QH[6O^X]LYSB=nbEKnkKl:4`YVO27`OL^MjGJg8^6hNg5C@]bBTlb3PmFAHoLD_Hk\nEI Original-X-Complaints-To: staff@sunsite.dk Original-Xref: news.stanford.edu gnu.emacs.help:161050 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:56394 Archived-At: On Sat, 09 Aug 2008 23:50:16 +0200, Lennart Borgman wrote: >>> C:\Dokumente und Einstellungen\Rainer>c:\Emacs23\emacs\bin\emacs -q -batch -f list-load-path-shadows >>> Adding c:/Emacs23/EmacsW32/lisp/ to load-path >>> This site has duplicate Lisp libraries with the same name. >>> If a locally-installed Lisp library overrides a library in the Emacs >>> release, >>> that can cause trouble, and you should probably remove the locally-installed >>> version unless you know what you are doing. >>> >>> c:/Emacs23/emacs/lisp/vc-dav hides c:/Emacs23/emacs/lisp/url/vc-dav >>> >>> 1 Emacs Lisp load-path shadowing was found > > Thanks Rainer, > > That is probably something left over from an older installation of > Emacs. Could you perhaps try to delete or rename the c:/Emacs23/ > directory and install Emacs again? Yep. >> You should take care of this, but I don't think it's related to your >> original problem. > > It is a bit related to the installer for Emacs+EmacsW32 that I > distribute. I have written it so that it does not delete the old Emacs > tree, but I think that is a mistake. > > I think I will let it delete the emacs directory before installation. It > should be (rather) safe since a user should not put files there. > > Any thoughts on this? Hi Lennard, First of all, a big thank you for making Windows builds of Emacs. I always download your builds and install them when I am forced to work on Windows, because I can't stand most of the other Windows editors :-) I don't really know much about the internals of the Windows installers of the packaging system of Windows, but let me describe an idea that may be useful. You could modify the installer to (1) perform pre-installation checks. When it finds an existing installation it can prompt the user that "An existing Emacs installation has been found. Please uninstall it first, and rerun this installer." (2) Only remove the files that the installer itself added to the system (i.e. by using some sort of "packaging list"). This is similar to what the package installation tools of FreeBSD too. When there are directories in the packaging list, we use one of two directives to remove them, either `@dirrm' or `@dirrmtry'. For those directories that the user is not supposed to manually add files, we use `@dirrm' in the packaging list, and we remove the directories in depth-first order, i.e.: @dirrm %%DATADIR%%/%%EMACS_VER%%/etc/images/gud @dirrm %%DATADIR%%/%%EMACS_VER%%/etc/images/gnus @dirrm %%DATADIR%%/%%EMACS_VER%%/etc/images/ezimage @dirrm %%DATADIR%%/%%EMACS_VER%%/etc/images/custom @dirrm %%DATADIR%%/%%EMACS_VER%%/etc/images @dirrm %%DATADIR%%/%%EMACS_VER%%/etc/gnus @dirrm %%DATADIR%%/%%EMACS_VER%%/etc/e @dirrm %%DATADIR%%/%%EMACS_VER%%/etc/charsets @dirrm %%DATADIR%%/%%EMACS_VER%%/etc @dirrm %%DATADIR%%/%%EMACS_VER%% For the directories that may have user data or may be shared among multiple packages, we use `@dirrmtry' and remove those in depth-first order too, i.e.: @dirrmtry share/icons/hicolor/128x128/apps @dirrmtry share/icons/hicolor/128x128 @dirrmtry share/icons/hicolor @dirrmtry share/icons @dirrmtry share/applications @dirrmtry var/games/emacs @dirrmtry var/games @dirrmtry var The packaging list format is quite `simple'. It lists files by their relative pathname under ${LOCALBASE} (which defaults to `/usr/local'), and any line starting with `@' is a special `packaging directive'. Parts of the packaging list for the `editors/emacs-devel' port look like this: bin/b2m bin/ctags bin/ebrowse bin/emacs bin/emacs-%%EMACS_VER%% bin/emacsclient bin/etags bin/grep-changelog bin/rcs-checkin libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/cvtmail libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/digest-doc libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/fakemail libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/hexl libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/movemail libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/profile libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/rcs2log libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/sorted-doc libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/update-game-score libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%%/vcdiff share/applications/emacs.desktop %%DATADIR%%/%%EMACS_VER%%/etc/AUTHORS %%DATADIR%%/%%EMACS_VER%%/etc/BABYL %%DATADIR%%/%%EMACS_VER%%/etc/CENSORSHIP %%DATADIR%%/%%EMACS_VER%%/etc/CONTRIBUTE [...] @dirrm %%DATADIR%%/%%EMACS_VER%%/site-lisp @dirrm %%DATADIR%%/%%EMACS_VER%%/lisp/url @dirrm %%DATADIR%%/%%EMACS_VER%%/lisp/textmodes @dirrm %%DATADIR%%/%%EMACS_VER%%/lisp/term @dirrm %%DATADIR%%/%%EMACS_VER%%/lisp/progmodes @dirrm %%DATADIR%%/%%EMACS_VER%%/lisp/play @dirrm %%DATADIR%%/%%EMACS_VER%%/lisp/org @dirrm %%DATADIR%%/%%EMACS_VER%%/lisp/obsolete @dirrm %%DATADIR%%/%%EMACS_VER%%/lisp/nxml [...] @dirrm %%DATADIR%%/%%EMACS_VER%%/etc @dirrm %%DATADIR%%/%%EMACS_VER%% @dirrm libexec/emacs/%%EMACS_VER%%/%%EMACS_ARCH%% @dirrm libexec/emacs/%%EMACS_VER%% @dirrm libexec/emacs @dirrmtry share/icons/hicolor/scalable/mimetypes @dirrmtry share/icons/hicolor/scalable/apps [...] @dirrmtry share/icons/hicolor @dirrmtry share/icons @dirrmtry share/applications @dirrmtry var/games/emacs @dirrmtry var/games @dirrmtry var By removing only the files that the Windows installer itself has installed (as they are listed in the packaging list), we can keep any site-lisp code or other local files. By asking for an uninstall before a new clean install is done, you would be pretty sure that only the files of the new installation are present (and any local `site-lisp' code). By keeping the list of `@dirrmtry' directories small, you, as the installer developer, can also add checks about modifications in the rest of the installation tree. If a directory is listed as `@dirrm' but it is not empty after you remove the files listed in your packaging list, then there are local changes in that directory. At that point, you have the option of notifying the user that they have made local changes to `internal' Emacs files, and prompt them for one of several things. I've listed the options in decreasing order of what I would prefer, but please feel free to implement any subset of them: * Keep a backup copy of the extra files, and then delete them. Point the user to the backup copy of the files, so they can look later for any interesting bits and reinstall them manually. * Just delete the files, and let future installs run on a clean slate. * Abort the installation, and log the mismatched packaging list entries to a text file on the disk. Pointing the user to the log file, so they can manually "fix" the installation directory would be useful too. Now I admit that I don't really know how much work it would be to do something similar for the Windows build of Emacs. But if it's useful then I'm glad :) Cheers, Giorgos