>>>> "SY" == Steve Youngs
<youngs(a)xemacs.org> writes:
SY> This started out as a simple reorganisation of the "Add
SY> Download Site" menu, it turned into a fair sized overhaul of
SY> the package code. :-)
SY> Actually, this is the first step in my "Master Package Plan":
SY> code clean up => built-in transport (no EFS) => 3rd party
SY> package support (site-packages) => DSO support.
Hi Steve, I like the changes to the download selection menus.
Here's some initial feedback:
Bad news first, then a suggestion for the Tools->Packages menu.
Trying to install mule-base in
"XEmacs 21.5 (beta11) \"cabbage\" [Lucid] (i586-pc-win32, Mule) of Sat
Mar 22 2003 on D5DC120J"
after first uninstalling an old instance and starting a new XEmacs, I get:
Signaling: (wrong-type-argument stringp nil)
file-name-as-directory(nil)
package-admin-rmtree(nil)
package-admin-delete-binary-package(mule-base "c:\\Program
Files\\XEmacs\\xemacs-packages\\")
byte-code("..." [latest version installed base-filename full-package-filename
package package-get-info-version package-get-info-find-package package-get-info-prop
package-get-key :version nil filename t package-get-info category "mule"
featurep mule error "Mule package %s can't be installed with a non-Mule
XEmacs" "Couldn't find package %s with version %s" "No download
site or local package location specified." "No filename associated with package
%s, version %s" package-admin-get-install-dir string-to-number warn "Installing
%s package version %s, you had a newer version %s" "Skipping %s package, you
have a newer version %s" throw skip-update string-match
"^\\(..*\\).tar.gz$" append match-string 1 ".tgz" never
package-get-installedp done (byte-code "Æ©©©© «é @ A@©«Û\n@Ç
!¬«ÈÉ
Ê!\"!ª²Ë!«±ÌÍ!8ÎÏ\"a«¤ª¼ËÐ
\"!«´ÑÒ
\"¨ÓÔ!¨ÕÐ
\"Ö#¨«ªË!«¥×ØÆ\"¨\nA©¬%-Ƨ" [dir search-dir search-filenames full-package-filename
dest-filename current-filename nil package-get-staging-dir substitute-in-file-name
expand-file-name file-name-as-directory file-exists-p 7 file-attributes package-get-info
size package-get-remote-filename message "Retrieving package `%s' ..."
sit-for 0 copy-file t throw done host filenames package] 6) file-exists-p "Unable to
find file %s" "No download sites or local package locations specified."
message "Validating checksum for `%s'..." sit-for 0 get-buffer-create
generate-new-buffer-name ...] 7)
package-get(mule-base nil nil nil)
#<compiled-function (pkg) "...(14)" [pui-package-install-dest-dir pkg
package-get nil throw done] 5>(mule-base)
mapcar(#<compiled-function (pkg) "...(14)" [pui-package-install-dest-dir
pkg package-get nil throw done] 5> (mule-base))
byte-code("..." [pui-selected-packages mapcar #<compiled-function (pkg)
"...(14)" [pui-package-install-dest-dir pkg package-get nil throw done] 5> t]
3)
#<compiled-function nil "...(183)" [pui-selected-packages
package-admin-temp-buffer do-install do-delete pui-deleted-packages tmpbuf
"*Packages-To-Remove*" nil current-window-configuration (...)
display-completion-list sort mapcar symbol-name string< :activate-callback :help-string
"Packages selected for removal:\n" :completion-string t get-buffer-create
display-buffer yes-or-no-p "Remove these packages? " kill-buffer message
"Deleting selected packages ..." sit-for 0 #<compiled-function ...
"...(8)" ... 5> "Packages deleted"
"*Packages-To-Install*" (...) "Packages selected for installation:\n"
y-or-n-p "Install these packages? " buffer-disable-undo erase-buffer
"Installing selected packages ..." done (byte-code "Á¿\"¨Ã§"
... 3) pui-list-packages "Packages installed" clear-message error "No
packages have been selected!" package-net-update-installed-db G73551 G73552] 9
("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5\\lisp\\package-ui.elc" .
7601) nil>()
call-interactively(pui-install-selected-packages)
----------------------------------------------------------------------------
Now a Suggestion:
"Add Download Site" is a misnomer now that the last selection wins.
This change is a good change!
How about renaming/arranging the menu like so:
Index: menubar-items.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/menubar-items.el,v
retrieving revision 1.39
diff -u -u -r1.39 menubar-items.el
--- menubar-items.el 20 Mar 2003 13:19:59 -0000 1.39
+++ menubar-items.el 23 Mar 2003 11:13:08 -0000
@@ -567,16 +567,17 @@
("%_Tools"
("%_Packages"
- ("%_Add Download Site"
- :filter (lambda (&rest junk)
- (menu-split-long-menu
- (submenu-generate-accelerator-spec
- (package-ui-download-menu)))))
- ("%_Pre-Release Download Sites"
- :filter (lambda (&rest junk)
- (menu-split-long-menu
- (submenu-generate-accelerator-spec
- (package-ui-pre-release-download-menu)))))
+ ("%_Set Download Site"
+ ("_Official Releases"
+ :filter (lambda (&rest junk)
+ (menu-split-long-menu
+ (submenu-generate-accelerator-spec
+ (package-ui-download-menu)))))
+ ("%_Pre-Releases"
+ :filter (lambda (&rest junk)
+ (menu-split-long-menu
+ (submenu-generate-accelerator-spec
+ (package-ui-pre-release-download-menu))))))
"--:shadowEtchedIn"
["%_Update Package Index" package-get-update-base]
["%_List and Install" pui-list-packages]
("%_Tools"
("%_Packages"
("%_Add Download Site"
:filter (lambda (&rest junk)
(menu-split-long-menu
(submenu-generate-accelerator-spec
(package-ui-download-menu)))))
("%_Pre-Release Download Sites"
("%_Tools"
("%_Packages"
("%_Set Download Site"
("_Official Releases"
:filter (lambda (&rest junk)
(menu-split-long-menu
(submenu-generate-accelerator-spec
(package-ui-download-menu)))))
("%_Pre-Releases"
Best regards,
Adrian
SY> The highlights of this patch:
SY> ============================
SY> The Menu:
SY> --------
SY> - I went through all th mirror sites to see which of them
SY> were also mirroring the pre-release package directory.
SY> So... There is now a separate menu for the Pre-Release
SY> download sites.
SY> - Both download site menus are now "radio" style menu
entries
SY> so that only a single download site can be chosen. The old
SY> idea of choosing multiple sites and having XEmacs move on to
SY> the next site if it couldn't find a package never worked.
SY> - The download site menu entries take the form:
SY> "Country (site)" instead of the other way around.
SY> - Both download site menus have been sorted into alphabetical
SY> order of country.
SY> - Both download site menus are filtered through
SY> 'menu-split-long-menu' so the menu doesn't go off the
SY> screen.
SY> - The download site menus are built from package-ui.el instead
SY> of package-get.el.
SY> Package Retrieval:
SY> -----------------
SY> - Alter all the code so it can cope with only being able to
SY> choose a single download site or local directory.
SY> - Default 'package-get-require-signed-base-updates' to on.
SY> - Use a better method of determining if a package should be
SY> installed into 'mule-packages/' or not. Now, a Mule package
SY> does *NOT* need to have 'mule-base' in its $REQUIRES for it
SY> to be installed in the right place. A package will be
SY> installed into 'mule-packages/' if CATEGORY = mule, which
SY> I'm sure is what was intended in the first place.
SY> - Non-Mule XEmacsen can no longer install Mule packages.
SY> Goodbye "Can not open load file "mule"" FAQs.
SY> - Clean up after failed package installs so that the next
SY> point doesn't need to happen very often.
SY> - If a package tarball already exists on the local drive only
SY> try to install it if its size matches, if not, proceed as
SY> if the tarball didn't exist on the local drive. Goodbye to
SY> most of the "MD5 checksum error" FAQs. (I'll probably
SY> extend this to only try to install the pre-existing tarball
SY> if the size _and_ MD5 match, but that isn't in this patch).
SY> Other:
SY> -----
SY> - General code and whitespace clean up.
SY> I intend to commit this in a few days (unless I hear bad feedback, of
SY> course) time. This will give me time to update the docs. :-)
SY> Vin, this stuff should go into 21.4, but there is no way that this
SY> patch will apply cleanly so I'll cons up a 21.4 version of this in a
SY> day or so.
<1108 lines deleted by Adrian Aichner>
--
Adrian Aichner
mailto:adrian@xemacs.org
http://www.xemacs.org/