Index: lisp/package-get.el =================================================================== RCS file: /users/darrylo/sources/.repository/xemacs-21.0/lisp/package-get.el,v retrieving revision 1.1.1.9 retrieving revision 1.19 diff -c -r1.1.1.9 -r1.19 *** package-get.el 1998/09/06 17:30:44 1.1.1.9 --- package-get.el 1998/09/05 17:38:58 1.19 *************** *** 328,334 **** ) t)) (setq load-path (cons lispdir load-path))) ! (package-get-load-package-file lispdir "auto-autoloads") t) nil) )) --- 328,335 ---- ) t)) (setq load-path (cons lispdir load-path))) ! (if (not (package-get-load-package-file lispdir "auto-autoloads")) ! (package-get-load-package-file lispdir "_pkg")) t) nil) )) *************** *** 379,386 **** ;; Ugly. Is there a better way to do this? (setq filenames (cons base-filename nil)) (if (string-match "^\\(..*\\)\.tar\.gz$" base-filename) ! (setq filenames (cons (concat (match-string 1 base-filename) ".tgz") ! filenames))) (setq version (package-get-info-prop this-package 'version)) (unless (and (eq conflict 'never) --- 380,388 ---- ;; Ugly. Is there a better way to do this? (setq filenames (cons base-filename nil)) (if (string-match "^\\(..*\\)\.tar\.gz$" base-filename) ! (setq filenames (append filenames ! (list (concat (match-string 1 base-filename) ! ".tgz"))))) (setq version (package-get-info-prop this-package 'version)) (unless (and (eq conflict 'never) *************** *** 389,428 **** ;; and copy it into the staging directory. Then validate ;; the checksum. Finally, install the package. (catch 'done ! (let (search-filenames current-dir-entry host dir current-filename) ;; In each search directory ... (while search-dirs (setq current-dir-entry (car search-dirs) host (car current-dir-entry) dir (car (cdr current-dir-entry)) ! search-filenames filenames) ;; Look for one of the possible package filenames ... (while search-filenames ! (setq current-filename (car search-filenames)) ! (if (null host) ! (progn ! ;; No host means look on the current system. ! (setq full-package-filename ! (substitute-in-file-name ! (expand-file-name current-filename ! (file-name-as-directory dir)))) ! ) ! ;; If the file exists on the remote system ... ! (if (file-exists-p (package-get-remote-filename ! current-dir-entry current-filename)) ! (progn ! ;; Get it ! (setq full-package-filename ! (package-get-staging-dir current-filename)) ! (message "Retrieving package `%s' ..." ! current-filename) ! (sit-for 0) ! (copy-file (package-get-remote-filename current-dir-entry ! current-filename) ! )))) ;; If we found it, we're done. ! (if (file-exists-p full-package-filename) (throw 'done nil)) ;; Didn't find it. Try the next possible filename. (setq search-filenames (cdr search-filenames)) --- 391,447 ---- ;; and copy it into the staging directory. Then validate ;; the checksum. Finally, install the package. (catch 'done ! (let (search-filenames current-dir-entry host dir current-filename ! dest-filename) ;; In each search directory ... (while search-dirs (setq current-dir-entry (car search-dirs) host (car current-dir-entry) dir (car (cdr current-dir-entry)) ! search-filenames filenames ! ) ;; Look for one of the possible package filenames ... (while search-filenames ! (setq current-filename (car search-filenames) ! dest-filename (package-get-staging-dir current-filename)) ! (cond ! ;; No host means look on the current system. ! ( (null host) ! (setq full-package-filename ! (substitute-in-file-name ! (expand-file-name current-filename ! (file-name-as-directory dir)))) ! ) ! ! ;; If it's already on the disk locally, and the size is ! ;; greater than zero ... ! ( (and (file-exists-p dest-filename) ! (let (attrs) ! ;; file-attributes could return -1 for LARGE files, ! ;; but, hopefully, packages won't be that large. ! (and (setq attrs (file-attributes dest-filename)) ! (> (nth 7 attrs) 0)))) ! (setq full-package-filename dest-filename) ! ) ! ! ;; If the file exists on the remote system ... ! ( (file-exists-p (package-get-remote-filename ! current-dir-entry current-filename)) ! ;; Get it ! (setq full-package-filename dest-filename) ! (message "Retrieving package `%s' ..." ! current-filename) ! (sit-for 0) ! (copy-file (package-get-remote-filename current-dir-entry ! current-filename) ! full-package-filename t) ! ) ! ) ! ;; If we found it, we're done. ! (if (and full-package-filename ! (file-exists-p full-package-filename)) (throw 'done nil)) ;; Didn't find it. Try the next possible filename. (setq search-filenames (cdr search-filenames)) Index: lisp/package-ui.el =================================================================== RCS file: /users/darrylo/sources/.repository/xemacs-21.0/lisp/package-ui.el,v retrieving revision 1.1.1.1 retrieving revision 1.10 diff -c -r1.1.1.1 -r1.10 *** package-ui.el 1998/09/06 17:30:44 1.1.1.1 --- package-ui.el 1998/09/06 17:52:22 1.10 *************** *** 419,429 **** (if pui-list-verbose (progn (setq current-vers (package-get-key pkg-sym :version)) ! (if (not current-vers) ! (setq current-vers "-----")) (insert ! (format "%s %-15s %-5s %-5s %s\n" ! (car disp) pkg-sym version current-vers desc)) ;; (insert ;; (format "\t\t %-12s %s\n" ;; (package-get-info-prop info 'author-version) --- 419,441 ---- (if pui-list-verbose (progn (setq current-vers (package-get-key pkg-sym :version)) ! (cond ! ( (not current-vers) ! (setq current-vers "-----") ) ! ( (stringp current-vers) ! (setq current-vers ! (format "%.2f" ! (string-to-number current-vers))) ) ! ( (numberp current-vers) ! (setq current-vers (format "%.2f" current-vers)) ) ! ) (insert ! (format "%s %-15s %-5.2f %-5s %s\n" ! (car disp) pkg-sym ! (if (stringp version) ! (string-to-number version) ! version) ! current-vers desc)) ;; (insert ;; (format "\t\t %-12s %s\n" ;; (package-get-info-prop info 'author-version) Index: man/xemacs/packages.texi =================================================================== RCS file: /users/darrylo/sources/.repository/xemacs-21.0/man/xemacs/packages.texi,v retrieving revision 1.1.1.3 retrieving revision 1.5 diff -c -r1.1.1.3 -r1.5 *** packages.texi 1998/09/06 17:31:44 1.1.1.3 --- packages.texi 1998/09/05 04:49:40 1.5 *************** *** 130,139 **** package-get-remote)) @end example ! Here, you'd change @code{"/my/path/to/package/binaries"} to be the path to your local package binaries. Next, restart XEmacs, and you're ready to go (advanced users can just re-evaluate the sexp). If you're going to install over the network, you only have to insure that EFS @ref{(EFS)} works, and that it can get outside a firewall, if you happen to be behind one. You shouldn't have to do anything else; --- 130,149 ---- package-get-remote)) @end example ! Here, you'd change @file{/my/path/to/package/binaries} to be the path to your local package binaries. Next, restart XEmacs, and you're ready to go (advanced users can just re-evaluate the sexp). + If you are installing from a temporary, one-time directory, you can also + add these directory names to @code{package-get-remote} using: + + @example + M-x pui-add-install-directory + @end example + + Note, however, that any directories added using this function are not + saved; this information will be lost when you quit XEmacs. + If you're going to install over the network, you only have to insure that EFS @ref{(EFS)} works, and that it can get outside a firewall, if you happen to be behind one. You shouldn't have to do anything else; *************** *** 224,230 **** installed to the newest version. Note that if a package is newly installed you will have to restart XEmacs for the change to take effect. ! You can also install packages manually, using: @example M-x package-get-all --- 234,240 ---- installed to the newest version. Note that if a package is newly installed you will have to restart XEmacs for the change to take effect. ! You can also install packages using a semi-manual interface: @example M-x package-get-all *************** *** 234,239 **** --- 244,309 ---- will search for the latest version (as listed in the lisp file @file{lisp/package-get-base.el}), and install it and any packages that it depends upon. + + @subsection Manual Binary Package Installation + + Pre-compiled, binary packages can be installed in either a system + package directory (this is determined when XEmacs is compiled), or in a + subdirectory off your @file{$HOME} directory: + + @example + ~/.xemacs/packages + @end example + + XEmacs does not have to be running to install binary packages, although + XEmacs will not know about any newly-installed packages until you + restart XEmacs. Note, however, that installing a newer version of a + package while XEmacs is running could cause strange errors in XEmacs; + it's best to exit XEmacs before upgrading an existing package. + + To install binary packages manually: + + @enumerate + @item + Download the package(s) that you want to install. Each binary package + will typically be a gzip'd tarball. + + @item + Decide where to install the packages: in the system package directory, + or in @file{~/.xemacs/packages}. If you want to install the + packages in the system package directory, make sure you can write into + that directory. If you want to install in your @file{$HOME} directory, + create the directory, @file{~/.xemacs/packages}. + + @item + Next, @code{cd} to the directory under which you want to install the + package(s). + + @item + From this directory, uncompress and extract each of the gzip'd tarballs + that you downloaded in step 1. Unix and Cygnus cygwin users will + typically do this using the commands: + + @example + gunzip < package.tar.gz | tar xvf - + @end example + + Above, replace @file{package.tar.gz} with the filename of the + package that you downloaded in step 1. + + Of course, if you use GNU @code{tar}, you could also use: + + @example + tar xvzf package.tar.gz + @end example + + @comment What about native MS Windows users??? + + @item + That's it. Quit and restart XEmacs to get it to recognize any new or + changed packages. + + @end enumerate @node Building Packages, , Using Packages, Packages @comment node-name, next, previous, up