help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Can I share ~/.emacs.d/elpa with two machines?


From: Kaushal Modi
Subject: Re: Can I share ~/.emacs.d/elpa with two machines?
Date: Fri, 2 Oct 2015 15:23:53 -0400

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_<<emacs-version-short>>/ directory.

I hope all of this makes sense.



--
Kaushal Modi

On Fri, Oct 2, 2015 at 3:05 PM, Rainer M Krug <Rainer@krugs.de> wrote:

> Kaushal Modi <kaushal.modi@gmail.com> 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: Rainer<at>krugs<dot>de
> PGP: 0x0F52F982
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]