Thanks everybody for your input. I an=m using =now the following setup: I am using cask and pallet for all packages installed via the package manager (I am also using use-package) for org-mode and ess I use the uncompiled packages so using them from different versions does not cause any headaches and makes debugging easier. Thanks again, Rainer Kaushal Modi writes: >> My only question is the contrib directory. I assume I simply also have to > copy the files in the same version specific lisp dir? > > For contrib packages (well, only one package that I use from there), I use > the org-plus-contrib package from the Org Elpa > > (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t) > > I have version-specific package-user-dir, so I have org-plus-contrib > installed and compiled for all emacs versions in their own elpa_ > directories. > > ;; Create the package install directory if it doesn't exist > (setq package-user-dir (concat user-emacs-directory "elpa_" > emacs-version-short "/")) ; default = > ~/.emacs.d/elpa/ > > I prefer to have both the dev version and stable version of org installed. > So that if needed, I can switch between the two by toggling a variable and > restarting emacs. As the package that I use from contrib does not need to > be cutting-edge, I just use it from the already installed stable > org-plus-contrib :) > > I use something like this for org version switching (if you are interested): > > (when (bound-and-true-p org-load-version-dev) > ;; if `org-load-version-dev' is non-nil > (add-to-list 'load-path (concat user-emacs-directory > "elisp/org-mode/lisp_" > emacs-version-short "/"))) > > If I don't have the org-load-version-dev set to any value or if I have set > it to nil in my emacs config, the org-plus-contrib (stable version) > installed by the package manager will be used by default. > > > > -- > Kaushal Modi > > On Mon, Oct 5, 2015 at 3:54 AM, Rainer M Krug wrote: > >> Kaushal Modi writes: >> >> > I also update org via git and faced the compiled code incompatibility >> > issue. I resolved it the same way .. using version specific compiled org >> > dirs. >> > >> > Here's the full code gathered from various places in my config: >> > >> > Part 1: >> > >> https://github.com/kaushalmodi/.emacs.d/blob/56b84df6ff399ab65c040d4d872dc65fb45515e6/init.el#L9-L13 >> > (setq user-home-directory (concat (getenv "HOME") "/")) ; must end >> with >> > / >> > (setq user-emacs-directory (concat user-home-directory ".emacs.d/")) ; >> > must end with / >> > (setq emacs-version-short (replace-regexp-in-string >> > "\\([0-9]+\\)\\.\\([0-9]+\\).*" >> > "\\1_\\2" emacs-version)) ; 25.0.50.1 -> >> 25_0 >> > >> > Part 2: >> > >> https://github.com/kaushalmodi/.emacs.d/blob/56b84df6ff399ab65c040d4d872dc65fb45515e6/setup-files/setup-org.el#L32-L34 >> > (add-to-list 'load-path (concat user-emacs-directory >> > "elisp/org-mode/lisp_" >> > emacs-version-short "/")) >> > >> > Part 3: The nasty part. >> > Use a shell script or script of your preferred flavor to build org-mode >> for >> > each of the emacs versions you are using and copy the built lisp/ dir to >> > the version specific lisp dir. >> > >> > #!/bin/tcsh -f >> > # Build script to compile org mode lisp for different emacs versions >> > >> > >> > # >> > # Back up your $PATH >> > # >> > >> > alias get_org_mode_lisp_dir_suffix '\emacs --version | \grep -oE >> '"'"'Emacs >> > [0-9]+\.[0-9]+'"'"' | \awk '"'"'{print $2}'"'"' | \tr "." "_"' >> > >> > #** Build for emacs master >> > >> > # >> > # Set the $PATH *here* to use the emacs master (built from latest in git) >> > # I use something work proprietary like GNU Modules to do this >> > # >> > >> > echo "\nBuilding for emacs version: "`\emacs --version | \grep -E 'Emacs >> > [0-9]+\.[0-9]+'`"\n" >> > make clean >> > make >> > set org_mode_lisp_dir = "lisp_"`get_org_mode_lisp_dir_suffix` >> > if ( -d "${org_mode_lisp_dir}" ) then >> > \rm -rf ${org_mode_lisp_dir} >> > endif >> > \cp -rf lisp ${org_mode_lisp_dir} >> > >> > #** Build for emacs 24.5 >> > >> > # >> > # Set the $PATH *here* to use emacs 24.5 >> > # I use something work proprietary like GNU Modules to do this >> > # >> > >> > echo "\nBuilding for emacs version: "`\emacs --version | \grep -E 'Emacs >> > [0-9]+\.[0-9]+'`"\n" >> > make clean >> > make >> > set org_mode_lisp_dir = "lisp_"`get_org_mode_lisp_dir_suffix` >> > if ( -d "${org_mode_lisp_dir}" ) then >> > \rm -rf ${org_mode_lisp_dir} >> > endif >> > \cp -rf lisp ${org_mode_lisp_dir} >> > >> > unalias get_org_mode_lisp_dir_suffix >> > unset {org_mode_lisp_dir} >> > >> > # >> > # Restore your $PATH to point to your default emacs version >> > # >> > >> > Part 4: Restart any one of the versions of emacs for which you compiled >> the >> > org files in Part 3. The org stuff will work just fine as it would pick >> out >> > the org files from the correct lisp_<>/ directory. >> > >> > I hope all of this makes sense. >> >> Thanks - makes perfect sense. My only question is the contrib >> directory. I assume I simply also have to copy the files in the same >> version specific lisp dir? >> >> Rainer >> >> >> > >> > >> > >> > -- >> > Kaushal Modi >> > >> > On Fri, Oct 2, 2015 at 3:05 PM, Rainer M Krug wrote: >> > >> >> Kaushal Modi writes: >> >> >> >> > @Stefan, sharing elpa/ between at least emacs 24.5 and emacs 25.x (git >> >> > master) does not work as the complied .elc files are not compatible >> >> between >> >> > the two versions. >> >> >> >> Just jumping in as I have the two version problem. >> >> >> >> I am fine with most of my stuff managed by cask, therefore aware of >> >> versions. But how can I manage org, which is via git? Any smart >> >> suggestion how I can use this between two versions on one machine? >> >> >> >> Rainer >> >> >> >> >> >> > >> >> > >> >> > -- >> >> > Kaushal Modi >> >> > >> >> > On Fri, Oct 2, 2015 at 11:54 AM, Stefan Monnier < >> >> monnier@iro.umontreal.ca> >> >> > wrote: >> >> > >> >> >> Yes, of course. >> >> >> >> >> >> Just like you can share it over NFS or any other file system. >> >> >> You can share them even between different systems using different >> >> >> Emacs versions, different processor architectures, and/or different >> >> OSes. >> >> >> >> >> >> At least, if that leads to problems, then I'd recommend you file them >> >> >> as bugs. >> >> >> >> >> >> >> >> >> Stefan >> >> >> >> >> >> >> >> >> >> >> > >> >> >> >> -- >> >> Rainer M. Krug >> >> email: Rainerkrugsde >> >> PGP: 0x0F52F982 >> >> >> > >> >> -- >> Rainer M. Krug >> email: Rainerkrugsde >> PGP: 0x0F52F982 >> -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: Rainer@krugs.de Skype: RMkrug PGP: 0x0F52F982