Emacs Version Manager
Deprecation Warning!
As Travis is moving towards a container-based infrastructure, hence
sudo is not possible, EVM added support for Travis specific binaries
(ends with -travis), which will be installed in /tmp.
All -bin versions will are deprecated and will be removed. Do not use them!
To run EVM on Travis, set the EVM path to /tmp:
$ evm config path /tmpSee https://gist.github.com/rejeep/ebcd57c3af83b049833b for more information on how to use EVM on Travis.
Why EVM?
-
Did you ever wonder how to install Emacs? Homebrew, apt-get, Emacs for OSX, Compile from scratch, etc...
-
Are you currently maintaining an Emacs package? How do you know it works? Because you have tests of course. Ok, so you know it works on your platform and with your Emacs version. But what about all other versions that people are using? Does your package work for them?
-
EVM provides pre compiled binaries to allow for quick installation on CI systems.
Platform Support
OSX
Supported!
GNU/Linux
Supported!
Windows
Not supported. Need help from someone running Windows.
Installation
Default installation directory for EVM Emacs versions is
/usr/local/evm. This can be changed with the config command:
$ evm config path /foo/barNo matter what installation approach you choose, create the installation directory and give your user access rights, for example:
$ sudo mkdir /usr/local/evm
$ sudo chown $USER: /usr/local/evmAutomatic
$ curl -fsSkL https://raw.github.com/rejeep/evm/master/go | bashAdd EVM's bin directory to your PATH.
$ export PATH="$HOME/.evm/bin:$PATH"Homebrew
NOT ADDED YET
$ brew install evmRuby gem
$ gem install evmManual
$ git clone https://github.com/rejeep/evm.git ~/.evmAdd EVM's bin directory to your PATH.
$ export PATH="$HOME/.evm/bin:$PATH"Usage
In the Evm bin directory, there are a few commands:
evm- Manage Emacs packagesemacs/evm-emacs- Emacs shim with currently selected Emacs package
list
To list all available Emacs versions you can install, run:
$ evm listThe output will look something like this:
emacs-23.4
emacs-24.1 [I]
emacs-24.2
* emacs-24.3 [I]
emacs-24.3-travis [I]
...
The [I] shows what versions are currently installed and the *
shows what version is currently selected.
install
To install a version, run:
$ evm install versionExample:
$ evm install emacs-24.3use
To start using a specific package, run:
$ evm use nameExample:
$ evm use emacs-24.2The Evm binary will update and use that Emacs package.
disuse
To stop using an EVM binary and restore your personal or system defaults:
$ evm disuseuninstall
To uninstall a version, run:
$ evm uninstall emacs-24.2bin [name]
Prints the full path to name's Emacs executable. If no name is
specified, use currently selected.
$ evm bin # /usr/local/evm/emacs-24.5/Emacs.app/Contents/MacOS/Emacs
$ evm bin emacs-24.2 # /usr/local/evm/emacs-24.2/Emacs.app/Contents/MacOS/Emacshelp
For more information, run:
$ evm --helpContribution
Be sure to!
Implement the features and don't forget to test it. Run the tests with:
$ rspec specIf all passes, send us a pull request with the changes.
Adding a new Emacs version
Copy an existing recipe in the recipes directory and make modifications for the new version. Also add the new version to the Travis configuration.
Adding Travis binary
If you want to contribute a Travis binary, these instructions will help.
-
Install Docker
-
Follow Travis instructions on running a Travis image locally
-
In the docker container, install necessary tools
docker$ sudo apt-get install build-essential libncurses-dev autoconf automake autogen git texinfo libtool
-
Download Emacs source
docker$ export VERSION=25.3 # choose your version docker$ wget http://ftpmirror.gnu.org/emacs/emacs-$VERSION.tar.gz
-
Unzip it
docker$ tar -xvzf emacs-$VERSION.tar.gz -
Compile and Install Emacs (follow these instructions if you have a
"gap between BSS and heap error")docker$ cd emacs-$VERSION docker$ ./autogen.sh # for snapshot docker$ ./configure --without-all --prefix=/tmp/emacs-$VERSION-travis docker$ make bootstrap docker$ make install
-
Tar it
docker$ tar -C /tmp --remove-files -cvzf ~/emacs-$VERSION-travis.tar.gz emacs-$VERSION-travis
-
Copy the tarball from the docker container to the host
docker$ exit $ docker cp <containerId>:/home/travis/emacs-$VERSION-travis.tar.gz .
-
Create a new recipe and make a pull request.
-
Ask maintainer to add a new release and add the binary.