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: ;; http://emacs.stackexchange.com/a/26513/115 (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 wrote: > Nice and useful idea. > > thanks > > On 5 March 2017 at 09:46, Kaushal Modi 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. > > ;; http://emacs.stackexchange.com/a/26513/115 > (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) > > https://github.com/kaushalmodi/.emacs.d/blob/master/setup-packages.el > > On Thu, Mar 2, 2017 at 7:41 PM Tim Cross 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