From e0a86fcb02504b86a9f1fbe35bdbd837a47bd63e Mon Sep 17 00:00:00 2001 From: Jennifer Page Date: Wed, 4 Jan 2017 02:17:48 -0500 Subject: [PATCH] [Fix #743] Add support for package pinning (#1048) --- README.md | 9 ++ core/prelude-packages.el | 5 ++ sample/prelude-pinned-packages.el | 135 ++++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 sample/prelude-pinned-packages.el diff --git a/README.md b/README.md index 39af136..05b2378 100644 --- a/README.md +++ b/README.md @@ -174,6 +174,15 @@ there are such). Simply run M-x prelude-update from Emacs itself and restart Emacs afterwards. +## Pinning packages + +By default, Prelude will install packages from the melpa and gnu package +repositories. Occasionally package integration can break when upgrading packages. +This can be avoided by pinning packages to stable versions in other repositories. +To do so, copy `prelude-pinned-packages.el` from the sample directory to +Prelude's root directory and adjust the [variables](https://www.gnu.org/software/emacs/manual/html_node/emacs/Package-Installation.html) +inside accordingly. + ## Enabling additional modules By default most of the modules that ship with Prelude are not loaded. For more information on the functionality provided by these modules visit the [docs](modules/doc/README.md). diff --git a/core/prelude-packages.el b/core/prelude-packages.el index 2c766c1..195ea4f 100644 --- a/core/prelude-packages.el +++ b/core/prelude-packages.el @@ -43,6 +43,11 @@ (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)) +;; load the pinned packages +(let ((prelude-pinned-packages-file (expand-file-name "prelude-pinned-packages.el" prelude-dir))) + (if (file-exists-p prelude-pinned-packages-file) + (load prelude-pinned-packages-file))) + ;; set package-user-dir to be relative to Prelude install path (setq package-user-dir (expand-file-name "elpa" prelude-dir)) (package-initialize) diff --git a/sample/prelude-pinned-packages.el b/sample/prelude-pinned-packages.el new file mode 100644 index 0000000..011b394 --- /dev/null +++ b/sample/prelude-pinned-packages.el @@ -0,0 +1,135 @@ +(add-to-list 'package-archives + '("melpa-stable" . "https://stable.melpa.org/packages/") t) + +(setq package-pinned-packages + '( + (ace-window . "melpa-stable") + (alchemist . "melpa-stable") + (anaconda-mode . "melpa-stable") + (anzu . "melpa-stable") + (async . "melpa-stable") + (avy . "melpa-stable") + (browse-kill-ring . "melpa-stable") + (caml . "melpa-stable") + (cask-mode . "melpa-stable") + (cdlatex . "melpa-stable") + (cider . "melpa-stable") + (clojure-mode . "melpa-stable") + (cmake-mode . "melpa-stable") + (coffee-mode . "melpa-stable") + (company . "melpa-stable") + (company-anaconda . "melpa-stable") + (company-auctex . "melpa-stable") + (company-go . "melpa-stable") + (crux . "melpa-stable") + (cython-mode . "melpa-stable") + (d-mode . "melpa-stable") + (dart-mode . "melpa-stable") + (dash . "melpa-stable") + (diff-hl . "melpa-stable") + (diminish . "melpa-stable") + (discover-my-major . "melpa-stable") + (dockerfile-mode . "melpa-stable") + (easy-kill . "melpa-stable") + (elisp-slime-nav . "melpa-stable") + (elixir-mode . "melpa-stable") + (elm-mode . "melpa-stable") + (ensime . "melpa-stable") + (epl . "melpa-stable") + (erlang . "melpa-stable") + (evil . "melpa-stable") + (evil-numbers . "melpa-stable") + (evil-surround . "melpa-stable") + (evil-visualstar . "melpa-stable") + (exec-path-from-shell . "melpa-stable") + (expand-region . "melpa-stable") + (f . "melpa-stable") + (feature-mode . "melpa-stable") + (flx . "melpa-stable") + (flx-ido . "melpa-stable") + (flycheck . "melpa-stable") + (flycheck-ocaml . "melpa-stable") + (geiser . "melpa-stable") + (gh . "melpa-stable") + (gist . "melpa-stable") + (git-commit . "melpa-stable") + (git-timemachine . "melpa-stable") + (gitconfig-mode . "melpa-stable") + (gitignore-mode . "melpa-stable") + (go-eldoc . "melpa-stable") + (go-guru . "melpa-stable") + (go-mode . "melpa-stable") + (go-projectile . "melpa-stable") + (go-rename . "melpa-stable") + (gotest . "melpa-stable") + (goto-chg . "melpa-stable") + (grizzl . "melpa-stable") + (groovy-mode . "melpa-stable") + (guru-mode . "melpa-stable") + (haml-mode . "melpa-stable") + (haskell-mode . "melpa-stable") + (helm . "melpa-stable") + (helm-ag . "melpa-stable") + (helm-core . "melpa-stable") + (helm-descbinds . "melpa-stable") + (helm-projectile . "melpa-stable") + (ido-completing-read+ . "melpa-stable") + (ido-ubiquitous . "melpa-stable") + (imenu-anywhere . "melpa-stable") + (inf-ruby . "melpa-stable") + (js2-mode . "melpa-stable") + (json-mode . "melpa-stable") + (json-reformat . "melpa-stable") + (json-snatcher . "melpa-stable") + (kivy-mode . "melpa-stable") + (less-css-mode . "melpa-stable") + (logito . "melpa-stable") + (lua-mode . "melpa-stable") + (macrostep . "melpa-stable") + (magit . "melpa-stable") + (magit-popup . "melpa-stable") + (makey . "melpa-stable") + (markdown-mode . "melpa-stable") + (marshal . "melpa-stable") + (mediawiki . "melpa-stable") + (merlin . "melpa-stable") + (operate-on-number . "melpa-stable") + (ov . "melpa-stable") + (pcache . "melpa-stable") + (php-mode . "melpa-stable") + (pkg-info . "melpa-stable") + (pkgbuild-mode . "melpa-stable") + (popup . "melpa-stable") + (projectile . "melpa-stable") + (protobuf-mode . "melpa-stable") + (puppet-mode . "melpa-stable") + (pythonic . "melpa-stable") + (queue . "melpa-stable") + (rich-minority . "melpa-stable") + (ruby-tools . "melpa-stable") + (s . "melpa-stable") + (sass-mode . "melpa-stable") + (sbt-mode . "melpa-stable") + (scala-mode . "melpa-stable") + (scss-mode . "melpa-stable") + (slim-mode . "melpa-stable") + (slime . "melpa-stable") + (smart-mode-line . "melpa-stable") + (smartparens . "melpa-stable") + (smartrep . "melpa-stable") + (smex . "melpa-stable") + (spinner . "melpa-stable") + (stylus-mode . "melpa-stable") + (swift-mode . "melpa-stable") + (thrift . "melpa-stable") + (tuareg . "melpa-stable") + (utop . "melpa-stable") + (volatile-highlights . "melpa-stable") + (web-mode . "melpa-stable") + (which-key . "melpa-stable") + (with-editor . "melpa-stable") + (yaml-mode . "melpa-stable") + (yasnippet . "melpa-stable") + (zenburn-theme . "melpa-stable") + (zop-to-char . "melpa-stable") + ))