I relied on my distribution's package manager to install emacs and slime (as well as git, java, and everything else not listed) but the following packages,
are rapidly developed and at the moment are not best handled by my package manager so I installed them from source. To keep things organized, I downloaded the sources in their own directory.
git clone git://github.com/richhickey/clojure.git
git clone git://github.com/richhickey/clojure-contrib.git
git clone git://github.com/technomancy/leiningen.git
git clone git://github.com/technomancy/swank-clojure.git
git clone git://github.com/jochu/clojure-mode.git
I was now free to hack, but I needed to build them before use.
Swank Clojure depends on Leiningen and Leiningen depends on Clojure so I needed to build that first.
I built clojure as specified in the readme.
I setup an installation directory for Clojure with a minimal folder structure. I don't know what recommended layout is but I copied my distribution's version of clojure.
mkdir -p runtime runtime/bin runtime/classes runtime/lib
I then populated the folders. In runtime/bin, I had a simple repl.sh script
java -cp ~/clj/runtime/lib/clojure.jar clojure.main
and in runtime/lib I symlinked all the jars. At the time, the only clojure.jar was built so I linked it.
ln -s ~/clj/clojure/clojure.jar
I tested clojure by by running the repl.sh script.
Next I built clojure-contrib as specified in the README.
ln -s ~/clj/clojure-contrib/clojure-contrib.jar ~/clj/runtime/lib
Next was Leiningen, which depends on itself so I needed to bootstrap it. The stable build script installs a version in the ~/.m2 folder. I put the script in my PATH and ran it.
cd ~/bin # this folder is in my path
chmod +x lein
mv lein lein-stable
Next I built my checkouted Leiningen, added the checkouted lein into my path, and added the jar to ~/clj/runtime/lib
ln -s ~/clj/leiningen/bin/lein ~/bin/lein
ln -s ~/clj/leiningen/leiningen.jar ~/clj/runtime/lib
Next I built swank-clojure and linked the jar
ln -s ~/clj/swank-clojure/swank-clojure.jar ~/clj/runtime/lib
Next I needed to configure my .emacs file to swank-clojure and clojure-mode with some slight modifications in order to work with mismatched versions of clojure and clojure-contrib with swank-clojure
Reading ~/clj/swank-clojure/swank-clojure.el allowed me to understand all the configuration parameters for swank-clojure. I highly recommend reading that file if you want to tweak anything in swank. It's well written and has good documentation.
;; in the .emacs file, clojure configuration
;; to run slime, M-- M-x slime then type clojure
;;tells emacs where to find clojure-mode.el
(add-to-list 'load-path "~/clj/clojure-mode")
(setq swank-clojure-jar-home "~/clj/runtime/lib")
;; need to override default deps so self-install is not evoked
;; the URLs are honestly arbitrary, I essentially just removed
;; the version info so that the filenames match the filenames
;; of the jars I built
(list (concat "http://repo.technomancy.us/"
(add-to-list 'load-path "~/clj/swank-clojure")
;; needed for overriding default method for invoking slime
That was it. To run slime, I just typed in emacs, "M-- M-x slime" then "clojure". I use "M--" so I can still run SBCL if I need to.
Hopefully this information may be useful to the community.