Subject: 24.3.50; package.el updates load-path too late
From: Richard Kim <[email-masked]>
To: [email-masked]
Date: Sun, 01 Sep 2013 09:45:53 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

A recent change made on bzr trunk is causing one of my ELPA packages to
fail to load due to `load-path' not being updated promptly.

The change in question seems to be Stefan's revision 114047 checked in
on Aug 28, 2013 with check in comment

    Don't add unnecessarily to load-path.

The package in question is icicles which I created by putting together a
few files from emacswiki.org which I have been using for several years.

The problem is that icicles-autoloads.el refers to some custom face
which is provided by icicles-face.el in the icicles package directory.
However Stefan's change now evaluates icicles-autoloads.el first then
updates load-path to add path for icicles.  Following shows
`package-activate-1' from around August 24:

    (defun package-activate-1 (pkg-desc)
      (let* ((name (package-desc-name pkg-desc))
    	 (pkg-dir (package-desc-dir pkg-desc)))
        (unless pkg-dir
          (error "Internal error: unable to find directory for `%s'"
    	     (package-desc-full-name pkg-desc)))
        ;; Add info node.
        (when (file-exists-p (expand-file-name "dir" pkg-dir))
          ;; FIXME: not the friendliest, but simple.
          (require 'info)
          (info-initialize)
          (push pkg-dir Info-directory-list))
        ;; Add to load path, add autoloads, and activate the package.
        (push pkg-dir load-path)
        (load (expand-file-name (format "%s-autoloads" name) pkg-dir) nil t)
        (push name package-activated-list)
        ;; Don't return nil.
        t))

Note that (load) of the "-autolads" file comes after updating of
load-path, i.e., (push pkg-dir load-path).  Thus icicles-face.el can be
found in this version of package.el.

Shouldn't load-path updated first for the packge being intialized so
that code in "*-autoloads.el" can load other elisp files in the package
directory?