emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Package.el and specifying alternative dependencies


From: Tim Cross
Subject: Re: Package.el and specifying alternative dependencies
Date: Wed, 12 Apr 2017 17:35:57 +1000

Thanks for the update.

Tim

On 12 April 2017 at 08:37, Kaushal Modi <address@hidden> wrote:
Hi Tim,

I just discovered a bug in this advice.. I needed to fix the order of packages in the new-ret list that is returned. The bug was that the order of pkgs in new-ret was flipped compared to that in orig-ret.. so I needed to flip it back using reverse.

Here is the fixed function:

(defun modi/package-dependency-check-ignore (orig-ret)
  "Remove the `black listed packages' from ORIG-RET.

Packages listed in the let-bound `pkg-black-list' will not be auto-installed
even if they are found as dependencies.

It is known that this advice is not effective when installed packages
asynchronously using `paradox'. Below is effective on synchronous
package installations."
  (let ((pkg-black-list '(org))
        new-ret
        pkg-name)
    (dolist (pkg-struct orig-ret)
      (setq pkg-name (package-desc-name pkg-struct))
      (if (member pkg-name pkg-black-list)
          (message (concat "Package `%s' will not be installed. "
                           "See `modi/package-dependency-check-ignore'.")
                   pkg-name)
        (push pkg-struct new-ret)))
    ;; Tue Apr 11 17:48:16 EDT 2017 - kmodi
    ;; It's *very* critical that the order of packages stays the same in NEW-RET
    ;; as in ORIG-RET. The `push' command flips the order, so use `reverse'
    ;; to flip the order back to the original.
    ;;   Without this step, you will get errors like below when installing
    ;; packages with dependencies:
    ;;   Debugger entered--Lisp error: (error "Unable to activate package ‘nim-mode’.
    ;;   Required package ‘flycheck-28’ is unavailable")
    (setq new-ret (reverse new-ret))
    new-ret))
(advice-add 'package-compute-transaction :filter-return #'modi/package-dependency-check-ignore)

On Sat, Mar 4, 2017 at 6:44 PM Tim Cross <address@hidden> wrote:
Nice and useful idea. 

thanks

On 5 March 2017 at 09:46, Kaushal Modi <address@hidden> wrote:
I have this in my config which works very well. I use this just for org :) I build org from its master branch, so I do not want the dependency check to auto-install older versions from Elpa.

(defun modi/package-dependency-check-ignore (orig-ret)
  "Remove the `black listed packages' from ORIG-RET.
Packages listed in the let-bound `pkg-black-list' will not be auto-installed
even if they are found as dependencies.
It is known that this advice is not effective when installed packages
asynchronously using `paradox'. Below is effective on synchronous
package installations."
  (let ((pkg-black-list '(org))
        new-ret
        pkg-name)
    (dolist (pkg-struct orig-ret)
      (setq pkg-name (package-desc-name pkg-struct))
      (if (member pkg-name pkg-black-list)
          (message (concat "Package `%s' will not be installed. "
                           "See `modi/package-dependency-check-ignore'.")
                   pkg-name)
        ;; (message "Package to be installed: %s" pkg-name)
        (push pkg-struct new-ret)))
    new-ret))
(advice-add 'package-compute-transaction :filter-return #'modi/package-dependency-check-ignore)


On Thu, Mar 2, 2017 at 7:41 PM Tim Cross <address@hidden> wrote:
Is there a way to specify alternative dependencies in a package?

Situation: installing a package is resulting in an additional package being installed even though the dependencies for the package have already been satisfied by another package. This results in two packages being installed which provide overlapping functionality. 

Example. I have installed org-plus-contrib. I then install elfeed-org, which has a dependency on org. This results in the org package being installed, but org is already installed as part of the org-plus-contrib package. 

I'm trying to work out if this is a problem with how dependencies are defined in the elfeed-org package or is it a problem with how org-plus-conrib is specifying what dependency it satisfies? Need to know in order to determine where this issue needs to be logged.
--

Kaushal Modi




--
regards,

Tim

--
Tim Cross

--

Kaushal Modi




--
regards,

Tim

--
Tim Cross


reply via email to

[Prev in Thread] Current Thread [Next in Thread]