Somewhere between 21.0.59 and 21.0.62. I get the following error (in
both 21.0 and 21.2):
Signaling: (wrong-type-argument stringp nil)
string-match("@" nil)
(if (string-match "@" (car search)) "/" "/anonymous@")
)
(concat (if (string-match "@" ...) "/" "/anonymous@") (car
search) ":" (if (string-match "/$" dir) dir (concat dir
"/")) filename)
)
(let ((dir ...)) (concat (if ... "/" "/anonymous@") (car search)
":" (if ... dir ...) filename))
)
(if (efs-ftp-path filename) filename (let (...) (concat ... ... ":" ...
filename)))
)
package-get-remote-filename((nil "C:\\dl\\xemacs\\packages")
"package-index.LATEST.pgp")
(let ((expn ...)) (if (and expn ...) (setq entries nil expanded expn)))
)
(if (and no-remote (caar entries)) nil (let (...) (if ... ...)))
)
(unless (and no-remote (caar entries)) (let (...) (if ... ...)))
)
(while entries (unless (and no-remote ...) (let ... ...)) (setq entries (cdr entries)))
)
(let ((entries package-get-remote) (expanded nil)) (while entries (unless ... ...) (setq
entries ...)) (or expanded (and ... file)))
)
(if (file-name-absolute-p file) file (let (... ...) (while entries ... ...) (or expanded
...)))
)
package-get-locate-file("package-index.LATEST.pgp" t nil)
(or (package-get-locate-file package-get-base-filename t no-remote) (locate-data-file
package-get-base-filename) package-get-base-filename)
)
package-get-locate-index-file(nil)
(or db-file (package-get-locate-index-file (not force-current)))
)
(expand-file-name (or db-file (package-get-locate-index-file ...)))
)
(setq db-file (expand-file-name (or db-file ...)))
)
package-get-update-base(nil t)
(if (and (boundp ...) package-get-base (or ... package-get-was-current)) nil
(package-get-update-base nil force-current))
)
(unless (and (boundp ...) package-get-base (or ... package-get-was-current))
(package-get-update-base nil force-current))
)
package-get-require-base(t)
(lambda nil "List all packages and package information.\nThe package name, version,
and description are displayed. From the displayed\nbuffer, the user can see which
packages are installed, which are not, and\nwhich are out-of-date (a newer version is
available). The user can then\nselect packages for installation via the keyboard or
mouse." (interactive) (package-get-require-base t) (let (... ... start) (message
"Creating package list ...") (sit-for 0) (set-buffer outbuf) (setq
buffer-read-only nil) (buffer-disable-undo outbuf) (erase-buffer outbuf)
(kill-all-local-variables) (use-local-map pui-display-keymap) (setq major-mode ...) (setq
mode-name "Packages") (setq truncate-lines t) (unless package-get-remote ...)
(if pui-list-verbose ... ...) (insert sep-string) (setq start ...) (mapcar ... ...)
(insert sep-string) (insert ...) (set-buffer-modified-p nil) (setq buffer-read-only t)
(pop-to-buffer outbuf) (delete-other-windows) (goto-char start) (setq
pui-selected-packages nil) (setq pui-deleted-packages nil) (when ... ... ... ...)
(clear-message)))()
call-interactively(pui-list-packages)
command-execute(pui-list-packages t)
execute-extended-command(nil)
call-interactively(execute-extended-command)
My package setting in .emacs are:
;;{{{ XEmacs package stuff
;; We want to cache packages locally, so don't delete them after
;; downloading
(setq package-get-remove-copy nil)
(setq package-get-dir "C:\\dl\\xemacs\\packages")
;; List of remote sites to contact for downloading packages
(setq package-get-remote
'(
(nil "C:\\dl\\xemacs\\packages") ; use package-get-dir as cache
("ftp.xemacs.org"
"/pub/xemacs/packages") ;real location of new packages
))
;; This function is called to install a package Package comes in the
;; form of .tar.gz file, so, this function just calls MKS tar to
;; expand it in the specified directory
(defun package-admin-install-function-gleb (file pkg-dir buf)
"Install function for MSK tar"
(let ( (default-directory pkg-dir) )
(call-process "tar" nil buf t "xzvf" file)
))
(setq package-admin-install-function
'package-admin-install-function-gleb)
;;}}}
;;{{{ EFS
'(efs-disable-netrc-security-check t t)
;'(efs-gateway-type (quote (proxy "ftp" ("-i" "-n"
"-g" "-v"))))
'(efs-tmp-name-template "/tmp/efs")
; '(efs-gateway-host "engine.ecf.teradyne.com")
'(efs-use-passive-mode nil)
; '(efs-ftp-program-name "C:\\WinNT\\System32\\Ftp.exe")
'(efs-umask 22)
;;}}}
Reverting back to the older state of this function fixes the problem:
=== cd c:\src2\xemacs\cvs\xemacs-21.2\lisp\
=== cvs diff -u package-get.el
Index: package-get.el
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/lisp/package-get.el,v
retrieving revision 1.13.2.14
diff -u -r1.13.2.14 package-get.el
--- package-get.el 1999/01/13 19:12:51 1.13.2.14
+++ package-get.el 1999/02/02 06:29:08
@@ -946,9 +946,7 @@
(if (efs-ftp-path filename)
filename
(let ((dir (cadr search)))
- (concat (if (string-match "@" (car search))
- "/"
- "/anonymous@")
+ (concat "/"
(car search) ":"
(if (string-match "/$" dir)
dir
=== Exit status: OK
Gleb