* methods/el-get-elpa.el (el-get-elpa-install-1-package): rename to
el-get-elpa-install-package, take another argument have-deps-p. Only
call package-download-transaction directly if have-deps-p.
(el-get-elpa-install, el-get-elpa-update): el-get-elpa-install{-1
=>}-package name change and new arg.
* methods/el-get-elpa.el (el-get-elpa-install-1-package): new wrapping
function for package-download-transaction.
(el-get-elpa-install, el-get-elpa-update): use it.
Since el-get also downloads dependencies we end up installing things
twice.
* methods/el-get-elpa.el (el-get-elpa-install): call
package-download-transaction instead of package-install.
instead of shell-command which is sensitive to the user's choice of
shell.
* el-get-elpa.el (el-get-elpa-symlink-package): use make-symbolic-link
instead of shell-command "ln -s %s %s".
In most cases, we assume any connection is insecure unless the URL
starts with "https://", "$USERNAME@", or "ssh". There are a few
exceptions: I'm assuming all Emacswiki packages are insecure, and I
don't think we can know whether packages installed via Google Go are
secure or not.
* methods/el-get-elpa.el
(package-desc-summary, package-desc-version):
make aliases to the new 24.4 names.
(el-get-elpa-delete-package, el-get-elpa-descs): new wrapper functions
to simulate 24.4 behaviour in 24.3 and below.
(el-get-elpa-build-local-recipes, el-get-elpa-post-remove,
el-get-elpa-update-available-p): use the new wrappers/aliases.
In 24.4, simply removing the package directory is no longer enough. This
will only set the package status to `deleted' but package.el will still
think the package is installed and refuse a re-install. Calling
`package-delete' will ensure the right thing is done.
In 24.3 `package-delete' does only remove the directory so we stick with
that, but loading dired is no longer necessary since emacs 23.2 when
`delete-directory' got the optional RECURSIVE parameter.
* methods/el-get-elpa.el (el-get-elpa-post-remove): Call
`package-delete' to remove packages.
This can happen if the package directory is simply deleted but it is
still in the `package-list' and the user tries to re-install the
package. It is an error but without the patch the error is caused in
`file-relative-name'.
* methods/el-get-elpa.el (el-get-elpa-symlink-package): Gracefully error
if no directory is found.
This also checks if they exist. Which might even be a problem for
`package-user-dir' on its own for a fresh GNU Emacs install.
* methods/el-get-elpa.el (el-get-elpa-package-directory): Scan all
package directories and make sure they exist.
It knows argument to eval-after-load is code, and that #' implies
existence of a function.
Some of the package.el functions have changed, but that will be dealt
with separately.
In particular I neglected the fact that I've introduced a conditional
which blocked package-refresh-contents from el-get-elpa-install in some
cases. Practically the smae bug which I attempted to fix, could have
been encountered if packages were installing in opposite order, whcich i
try to reflect in added variant of the test.
Just adding "(require 'package)" to "el-get-elpa-package-directory"
fixes this bug, because by the time any elpa package is being installed
or fetched, package.el has to be available, so all we have to do is load
it if it hasn't already been loaded.
ELPA Package directories are named <package>-<version>. Previously
`el-get-elpa-package-directory' looked for package-dirs using
`all-completions' meaning anything starting with <package> would match.
This is problematic if a package is a prefix of another package, eg the
`s' and `solarized-theme' packages.
Instead of doing that, look for a directory that is precisely
<package>-<version> where <version> is something acceptable to
`version-to-list'.
Fixes#1189.
The package-install function calls some initalization functions from
within the interactive form. This can cause it to fail when called
non-interactively.
package-refresh-contents calls package-read-all-archive-contents so we
don't need to call it explicitly.
Fixes#1389
el-get-elpa-package-directory will not always return a real directory,
since two directories might have the same prefix (for example, erc
installs as `erc-5.3` but has a package name of `erc`. So
`try-completion` will return `erc-` if you have something
like `erc-image` installed.)
`all-completions` will return a list of actual directories which
satisfy the completion, and the `car` of this list will be the package
we want. `when realnames` will return `nil` when there are no possible
completions.
`package-desc-vers' is obsolete (replaced by `package-desc-version')
and `package-alist' has a different layout.
el-get-elpa also calls `el-get-rmdir' in some cases with
post-remove-fun as nil.
* methods/el-get-elpa.el (el-get-elpa-update-available-p): Use
`package-desc-version' if available.
* el-get-core.el (el-get-rmdir): Only call post-remove-fun if non-nil.
Signed-off-by: Rüdiger Sonderfeld <ruediger@c-plusplus.de>
Currently this has no function other than documentation, but it could
be given a function later, such as allowing manually-written recipes
to take precedence over auto-generated ones.
Typically this would not be necessary if el-get was installed
according to the instructions, but for testing el-get is not
installed, so the directory's parents do not already exist and need to
be created.